从哪儿来的? 当收到请求时,DispatcherServlet将请求传递给一个
处理器映射 ,让它对请求进行检查 并寻找一条匹配的
处理器执行链 (HandlerExecutionChain),然后DispatcherServlet就会执行定义在这条链中的 处理器 和 拦截器. 呵呵,很简单,就是这样的.
在
处理器映射 中有很强大的一招 :
配置拦截器.包括了处理器执行前,执行后,以及执行前后这三种拦截器.
还可以自定义
HandlerMapping 来支持更多的功能, 比如不仅仅根据请求的URL, 还要根据和请求相关的session状态来选择 处理器。
最常用的 处理器映射,有两个: BeanNameUrlHandlerMapping , SimpleUrlHandlerMapping , 他们都是 AbstractHandlerMapping 的子类. 因此也继承了如下重要属性:
[1] interceptors : 在映射中使用的拦截器的列表.对,是列表,因为在在配置文件中设置的方式是:
<property name="interceptors">
<list>
<ref bean="..."/>
</list>
</property>而且,查了 AbstractHandlerMapping 的原代码,interceptors属性的类型是Object[].
[2] defaultHandler : 默认的处理器. 没有合适的处理器可以匹配请求时,就用它啦.
[3] order : 由于在Spring上下文中可以同时使用多个处理器映射, 就需要一个选择机制了 ( DispatcherServlet需要传递请求给一个 处理器映射 嘛 ). order属性就是干这个事情的.它的值越小,优先级越高.也就被DispatcherServlet选中咯. 同样是查了一下原代码,在 AbstractHandlerMapping 中, 属性 order 被初始化为
Integer.MAX_VALUE ,
呵呵,是不是很有想法啊 ,自己一边乐去 !
[4] urlDecode : 这个属性默认为false. 因为HttpServletRequest对象默认返回未解码的请求URI/URL. HttpServletRequest中的请求URL和URI还处于HTTP协议所定义的编码状态,如果你想在 处理器映射 使用它们 发现合适的处理器之前 对URL进行解码,你应该把这个属性设成true (注意这需要JDK 1.4的支持)。解码方法会选用HTTP请求中指定的编码格式,或缺省的ISO-8859-1编码方法。 HTTP请求中一般会声明编码的格式,如果没有的话,默认值是ISO-8859-1。Spring会使用相应的解码算法。
[5] lazyInitHandlers : 这个属性的默认值是false. 该属性允许你设置 是否延迟 singleton处理器的初始化工作 ( prototype处理器的初始化都是延迟的 ) 。
注意:后三个属性只有 AbstractUrlHandlerMapping 的子类才具有哦.
不得不再罗嗦几句 AbstractHandlerMapping 与 AbstractUrlHandlerMapping ,前者继承自 WebApplicationObjectSupport ,并实现了 HandlerMapping 和 Ordered 接口; AbstractUrlHandlerMapping 直接继承了 AbstractHandlerMapping ; BeanNameUrlHandlerMapping 和 SimpleUrlHandlerMapping 都是直接继承 AbstractUrlHandlerMapping .
分享到:
相关推荐
2. **处理器映射器(Handler Mapping)**:当`DispatcherServlet`接收到请求后,它会委托给处理器映射器去寻找合适的处理器(Handler)。处理器映射器负责将URL映射到对应的处理器上。例如,如果用户的请求URL为`/...
控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(form object)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、 处理器映射(handler mapping)、视图解析...
2. 处理器映射器(Handler Mapping):负责查找处理请求的控制器。 3. 处理器适配器(Handler Adapter):调用控制器并处理返回的结果。 4. 视图解析器(View Resolver):解析逻辑视图名到实际视图。 5. 处理器...
应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)...
- **处理器映射(Handler Mapping)**:DispatcherServlet利用处理器映射器查找适合处理请求的控制器(Controller)。映射器基于请求的URL或其他条件(如注解)来决定哪个Controller应该接收请求。 - **控制器...
综上所述,配置Spring MVC请求的默认处理器涉及到web.xml的DispatcherServlet配置、Spring MVC配置文件的编写以及处理器映射、适配、拦截器和异常处理等相关组件的设置。理解并熟练掌握这些知识点,对于开发高效、...
应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)...
4. 映射器(Handler Mapping) 5. 视图解析器(View Resolver) 6. 处理器适配器(Handler Adapter) 7. 数据绑定(Data Binding) 8. 校验器(Validator) 这些资源描述了Spring MVC框架中不同组件的职责和作用,...
4. **处理器映射器(Handler Mapping)** 映射用户请求到相应的 Controller 方法,如 `RequestMapping` 注解用于定义 URL 映射。 5. **处理器适配器(Handler Adapter)** 负责调用 Controller 实现的处理方法,...
1. 请求分发:它将收到的HTTP请求路由到相应的处理器,通过处理器映射(Handler Mapping)策略确定哪个处理器应该处理请求。 2. 处理器调用:调用实现了Controller接口的类,这些类通常负责业务逻辑处理和模型数据的...
5. **处理器映射器(Handler Mapping)**:此组件负责将请求URL映射到适当的控制器方法。 6. **处理器适配器(Handler Adapter)**:由于控制器可能有多种实现方式,处理器适配器确保DispatcherServlet可以调用任何...
映射处理器(Handler Mapping)负责将特定的HTTP请求映射到相应的处理器(即控制器)上。SpringMVC提供多种映射处理器,包括基于注解的映射处理器和基于XML配置的映射处理器。通过映射处理器,可以灵活地将用户请求...
它负责接收请求,然后通过Handler Mapping找到对应的处理器(Controller)。DispatcherServlet的作用是将请求分发到不同的处理逻辑上,使得应用程序结构更加清晰。 **Handler Mapping** Handler Mapping负责将HTTP...
9. 可定制的handler mapping和view resolution:Spring提供从最简单的的URL映射,到复杂的、专用的定制策略。 10. 灵活的model转换:在Springweb框架中,使用基于Map的名/值对来达到轻易地与各种视图技术的集成。 ...
4. **处理器映射器(Handler Mapping)**: 处理器映射器将URL请求与处理器(Controller类的方法)关联。例如,`BeanNameUrlHandlerMapping`或`AnnotationMethodHandlerMapping`。 5. **处理器适配器(Handler ...
在这个阶段,我们还会了解到SpringMVC的核心组件和流程,包括处理器映射(Handler Mapping)、控制器(Controller)、视图解析器(View Resolver)等。 随后,教程会深入讲解DispatcherServlet。DispatcherServlet...
- **HandlerMapping(处理器映射器)**:负责根据请求URL找到相应的处理器(Handler)。SpringMVC提供了多种实现方式,包括但不限于: - `SimpleUrlHandlerMapping`:通过配置文件的方式将URL与Controller进行绑定...
在讲解了基础的非注解配置后,还会转向基于注解的处理器映射器和适配器的配置方法,并进行MVC:annotation-driven的配置,进而开发注解Handler,使得代码更加简洁。 SpringMVC的源码分析部分,笔记将深入讲解框架的...
3. **处理器映射器(Handler Mapping)** 处理器映射器的作用是根据请求 URL 将请求与对应的处理器(Controller)进行匹配。Spring 提供了多种内置的映射器,如 SimpleUrlHandlerMapping 和 ...
此外,我们还需要配置处理器映射(Handler Mapping),它决定了请求如何被映射到具体的处理方法。例如,`SimpleUrlHandlerMapping`可以通过URL与Controller Bean的映射来实现请求处理。在配置中,我们可以指定多个...