`
spring0303
  • 浏览: 26866 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

处理器映射( Handler Mapping )

阅读更多
从哪儿来的? 当收到请求时,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 .
分享到:
评论

相关推荐

    springmvc 的工作流程.docx

    2. **处理器映射器(Handler Mapping)**:当`DispatcherServlet`接收到请求后,它会委托给处理器映射器去寻找合适的处理器(Handler)。处理器映射器负责将URL映射到对应的处理器上。例如,如果用户的请求URL为`/...

    Spring-MVC技术体系介绍(二)

    控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(form object)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、 处理器映射(handler mapping)、视图解析...

    Java口试总结-带答案.docx

    2. 处理器映射器(Handler Mapping):负责查找处理请求的控制器。 3. 处理器适配器(Handler Adapter):调用控制器并处理返回的结果。 4. 视图解析器(View Resolver):解析逻辑视图名到实际视图。 5. 处理器...

    SpringMvc源码

    应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)...

    springMVC文档

    - **处理器映射(Handler Mapping)**:DispatcherServlet利用处理器映射器查找适合处理请求的控制器(Controller)。映射器基于请求的URL或其他条件(如注解)来决定哪个Controller应该接收请求。 - **控制器...

    Spring MVC 配置请求的默认处理器.rar

    综上所述,配置Spring MVC请求的默认处理器涉及到web.xml的DispatcherServlet配置、Spring MVC配置文件的编写以及处理器映射、适配、拦截器和异常处理等相关组件的设置。理解并熟练掌握这些知识点,对于开发高效、...

    springmvc demo

    应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)...

    Web框架编程-SpringMVC框架编程

    4. 映射器(Handler Mapping) 5. 视图解析器(View Resolver) 6. 处理器适配器(Handler Adapter) 7. 数据绑定(Data Binding) 8. 校验器(Validator) 这些资源描述了Spring MVC框架中不同组件的职责和作用,...

    spring mvc学习视频相关资料

    4. **处理器映射器(Handler Mapping)** 映射用户请求到相应的 Controller 方法,如 `RequestMapping` 注解用于定义 URL 映射。 5. **处理器适配器(Handler Adapter)** 负责调用 Controller 实现的处理方法,...

    Web框架-spring

    1. 请求分发:它将收到的HTTP请求路由到相应的处理器,通过处理器映射(Handler Mapping)策略确定哪个处理器应该处理请求。 2. 处理器调用:调用实现了Controller接口的类,这些类通常负责业务逻辑处理和模型数据的...

    springMVC sample

    5. **处理器映射器(Handler Mapping)**:此组件负责将请求URL映射到适当的控制器方法。 6. **处理器适配器(Handler Adapter)**:由于控制器可能有多种实现方式,处理器适配器确保DispatcherServlet可以调用任何...

    SpringMVC入门

    映射处理器(Handler Mapping)负责将特定的HTTP请求映射到相应的处理器(即控制器)上。SpringMVC提供多种映射处理器,包括基于注解的映射处理器和基于XML配置的映射处理器。通过映射处理器,可以灵活地将用户请求...

    Spring MVC

    它负责接收请求,然后通过Handler Mapping找到对应的处理器(Controller)。DispatcherServlet的作用是将请求分发到不同的处理逻辑上,使得应用程序结构更加清晰。 **Handler Mapping** Handler Mapping负责将HTTP...

    Spring-的MVC框架PPT课件.ppt

    9. 可定制的handler mapping和view resolution:Spring提供从最简单的的URL映射,到复杂的、专用的定制策略。 10. 灵活的model转换:在Springweb框架中,使用基于Map的名/值对来达到轻易地与各种视图技术的集成。 ...

    spring_mvc

    4. **处理器映射器(Handler Mapping)**: 处理器映射器将URL请求与处理器(Controller类的方法)关联。例如,`BeanNameUrlHandlerMapping`或`AnnotationMethodHandlerMapping`。 5. **处理器适配器(Handler ...

    SpringMvc教程 跟着我学SpringMVC

    在这个阶段,我们还会了解到SpringMVC的核心组件和流程,包括处理器映射(Handler Mapping)、控制器(Controller)、视图解析器(View Resolver)等。 随后,教程会深入讲解DispatcherServlet。DispatcherServlet...

    SpringMvc总结资料

    - **HandlerMapping(处理器映射器)**:负责根据请求URL找到相应的处理器(Handler)。SpringMVC提供了多种实现方式,包括但不限于: - `SimpleUrlHandlerMapping`:通过配置文件的方式将URL与Controller进行绑定...

    springMVC笔记.pdf

    在讲解了基础的非注解配置后,还会转向基于注解的处理器映射器和适配器的配置方法,并进行MVC:annotation-driven的配置,进而开发注解Handler,使得代码更加简洁。 SpringMVC的源码分析部分,笔记将深入讲解框架的...

    spring mvc

    3. **处理器映射器(Handler Mapping)** 处理器映射器的作用是根据请求 URL 将请求与对应的处理器(Controller)进行匹配。Spring 提供了多种内置的映射器,如 SimpleUrlHandlerMapping 和 ...

    spring mvc 框架 原理 机制

    此外,我们还需要配置处理器映射(Handler Mapping),它决定了请求如何被映射到具体的处理方法。例如,`SimpleUrlHandlerMapping`可以通过URL与Controller Bean的映射来实现请求处理。在配置中,我们可以指定多个...

Global site tag (gtag.js) - Google Analytics