springMVC源码--HandlerMapping(一)

来源:互联网 发布:网络运维 英文缩写 编辑:程序博客网 时间:2024/05/18 10:22

HandlerMapping的工作就是为每个请求找到合适的处理器handler。

HandlerMapping 接口:接口中主要定义了一个getHandler方法,返回一个HandlerExecutionChain对象。

总结:简单来说HandlerMapping的实现机制就是根据request来获得HandlerExecutionChain,其实就是获取真正要执行的Controller或者某个具体的方法。HandlerMapping接口提供的唯一的方法就是HandlerExecutionChain getHandler(HttpServletRequest request)。


相关流程:

DispatcherServlet把接收到的用户请求根据URL来调用HandlerMapping,然后HandlerMapping获得该Handler配置的所有相关的对象,

包括Handler对象以及Handler对象对应的拦截器,这些对象都会被封装到一个HandlerExecutionChain对象当中返回,之后DispatcherServlet

根据获得的Handler,选择一个合适的HandlerAdapter进行处理。


下面是SpringMVC中HandlerMapping处理器映射器的三种配置方式


1、根据beanname来配置:

[html] view plain copy
  1. <bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"></bean>    
  2. <bean name="/user.do" class="com.smile.controller.UserController"></bean>  

2、根据简单URL 来查找Controller :

[html] view plain copy
  1. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  2.     <property name="mappings">  
  3.         <props>  
  4.             <prop key="/userInfo.do">userController</prop>  
  5.         </props>  
  6.     </property>  
  7. </bean>  
  8.       
  9. <bean id="userController" class="com.smile.controller.UserController"></bean>  

3、根据控制类的类名访问controller:

[html] view plain copy
  1. <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>  
  2. <bean  class="com.smile.controller.UserController"></bean>  
三种配置方式没有多大区别,根据自己喜好而来。
阅读全文
0 0
原创粉丝点击