第一種 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>