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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM