zoukankan      html  css  js  c++  java
  • SpringMVC Controller配置方法有哪几种

    第一种 URL对应Bean
    如果要使用此类配置方式,需要在XML中做如下样式配置
    <!-- 表示将请求的URL和Bean名字映射-->  
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>  
    <bean name="/hello.do" class="test.HelloController"></bean>  
     
    以上配置,访问/hello.do就会寻找ID为/hello.do的Bean,此类方式仅适用小型的应用系统
     
    第二种 为URL分配Bean
    使用一个统一配置集合,对各个URL对应的Controller做关系映射
    <!-- 最常用的映射配置方式 -->  
    <!-- <prop key="/hello*.do">helloController</prop>-->  
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
     <property name="mappings">  
      <props>  
       <prop key="/hello.do">helloController</prop>  
      </props>  
     </property>  
    </bean>  
    <bean name="helloController" class="test.HelloController"></bean>  
     
    此类配置还可以使用通配符,访问/hello.do时,Spring会把请求分配给helloController进行处理
     
    第三种 URL匹配Bean
    如果定义的Controller名称规范,也可以使用如下配置
    <!-- 将hello*.do交给helloController处理-->  
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>  
    <bean name="helloController" class="test.HelloController"></bean>  
     
    第四种 注解
    首先在配置文件中开启注解
    <!-- 启用 spring 注解 -->  
    <context:component-scan base-package="test" />  
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>  
     
    在编写类上使用注解@org.springframework.stereotype.Controller标记这是个Controller对象
    使用@RequestMapping("/hello.do")指定方法对应处理的路径,这里只是简单示例,会有更复杂配置
    代码类如下:
    package test;  
    import java.util.Date;  
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpServletResponse;  
    import org.springframework.web.bind.annotation.RequestMapping;  
    // http://localhost:8080/spring/hello.do?user=java  
    @org.springframework.stereotype.Controller  
    public class HelloController{  
        @SuppressWarnings("deprecation")  
        @RequestMapping("/hello.do")  
        public String hello(HttpServletRequest request,HttpServletResponse response){  
            request.setAttribute("user", request.getParameter("user") + "-->" + new Date().toLocaleString());  
            return "hello";  
        }  
    } 
    web.xml配置文件如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"
             version="3.0">
      <display-name>02springmvc_hello</display-name>
      <!-- spring mvc配置DispatcherServlet 这个类接管所有请求。
       -->
      <servlet>
       <servlet-name>mvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      </servlet>
      <servlet-mapping>
       <servlet-name>mvc</servlet-name>
       <url-pattern>*.do</url-pattern>
      </servlet-mapping>
    </web-app>
    
    
    mvc-servlet.xml 配置文件如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
       <!-- 配置handlerMapper  映射器
       <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>  
        配置Controller  自定义控制器
       <bean name="/he.do" class="cn.sxt.controller.HelloController"/>
       
       <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
           <property name="mappings">  
               <props>  
                 key 对应url   value对应 自定义控制器的id
                    <prop key="/he.do">helloController</prop>  
               </props>  
           </property>  
       </bean>  
       <bean id="helloController" class="cn.sxt.controller.HelloController"/>
       -->
    
       <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
       <!-- 配置请求和处理器  这边的作用和@RequestMapping("/hello.do")是一致的
       一定带着上面的ControllerClassNameHandlerMapping  name才会奏效  也可以使用id 请求为hello*.do都将被匹配-->
       <!--<bean name="hello.do" class="cn.sxt.controller.HelloController"/>-->
       <bean id="helloController" class="cn.sxt.controller.HelloController"/>
       <!-- 配置handerAdapter  适配器
       SimpleControllerHandlerAdapter的实现也是很简单的,就是适配执行Controller的handleRequest方法-->
       <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
       <!-- configure the InternalResourceViewResolver -->
    
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            id="internalResourceViewResolver">
          <!-- 前缀 -->
          <property name="prefix" value="/WEB-INF/jsp/"/>
          <!-- 后缀 -->
          <property name="suffix" value=".jsp"/>
       </bean>
    </beans>
  • 相关阅读:
    [LeetCode] 875. Koko Eating Bananas 科科吃香蕉
    [LeetCode] 874. Walking Robot Simulation 走路机器人仿真
    [LeetCode] 995. Minimum Number of K Consecutive Bit Flips 连续K位翻转的最小次数
    [LeetCode] 873. Length of Longest Fibonacci Subsequence 最长的斐波那契序列长度
    [LeetCode] 872. Leaf-Similar Trees 叶结点相似的树
    [LeetCode] 870. Advantage Shuffle 优势洗牌
    [LeetCode] 869. Reordered Power of 2 重新排序为2的倍数
    [LeetCode] 868. Binary Gap 二进制间隙
    [LeetCode] 867. Transpose Matrix 转置矩阵
    [LeetCode] 866. Prime Palindrome 质数回文数
  • 原文地址:https://www.cnblogs.com/hoobey/p/7657615.html
Copyright © 2011-2022 走看看