前端控制器(dispatchServlet)
在web.xml中配置前端控制器,在服務器啟動時就被創建,用來對請求和響應進行接收 和 分發處理,其在配置時可以設置一個初始化參數,用來定位SpringMVC.xml的地址
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>display null</display-name> <servlet> <!--配置dispatcherServlet --> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--配置dispatcherServlet的初始化參數:定位 spring-mvc.xml的地址--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
處理器映射器(handlerMapping)
處理器映射器主要有如下幾種:
1、BeanNameUrlHandlerMapping 根據對象的名字來進行處理器映射,此時該對象要繼承AbstractController 實現handlerRequestInternal方法;對請求的處理主要在該方法中完成
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<bean id="indexController" name="/index.action" class="com.lh.controller.testController"></bean>
注意:使用 對象名映射 時,對象配置時的name屬性必須為 "/xxx.action" 的形式,即 對象名 即為訪問的 URL名
2、SimpleUrlHandlerMapping
SimpleUrlHandlerMapping的配置
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/a.action">indexController</prop> <prop key="/b.action">indexController</prop> <prop key="/c.action">indexController</prop> </props> </property> </bean>
Controller對象的配置
<bean id="indexController" name="/index.action" class="com.lh.controller.testController"></bean>
此時當請求的url 為xxx/a.action 或 xxx/b.action 或 xxx/c.action 時,映射器都會映射為id是 indexController 的controller對象這
3、ControllerClassNameHandlerMapping 控制器類名映射
控制器類名處理器映射對象配置
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
注意:在用 控制器類名處理器映射 時,類名必須為xxxController ,訪問地址為輸入 /xxxController 或 /xxxcontroller 或 /xxx;
不過工業上一班用注解方式實現 控制器映射器對 控制器的 映射 如:@controller ; @requestMapping(value="/xxx.action",method=RequestMethod.POST) 等;
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解適配器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解適配器。
對於適配器和解析器的配置,我們可以使用<mvc:annotation-driven></mvc:annotation-driven>代替
@Controller public class FirstHandler{ @RequestMapping("/handler.action") public ModelAndView handler(){ ModelAndView mav = new ModelAndView(); mav.addObject("name", "zhangsan"); mav.setViewName("index"); return mav; } }