处理器映射
优质
小牛编辑
127浏览
2023-12-01
在Spring的上个版本中,用户需要在web应用的上下文中定义一个或多个的HandlerMapping
bean,用以将进入容器的web请求映射到合适的处理器方法上。允许在控制器上添加注解后,通常你就不必这么做了,因为RequestMappingHandlerMapping
类会自动查找所有注解了@RequestMapping
的@Controller
控制器bean。同时也请知道,所有继承自AbstractHandlerMapping
的处理器方法映射HandlerMapping
类都拥有下列的属性,你可以对它们进行定制:
- 一个
interceptors
列表,指示了应用其上的一个拦截器列表。处理器方法拦截器会在 21.4.1小节 使用HandlerInterceptor拦截请求中讨论。 defaultHandler
,生效的默认处理器,when this handler mapping does not result in a matching handler.order
,根据order(见org.springframework.core.Ordered
接口)属性的值,Spring会对上下文可用的所有处理器映射进行排序,并应用第一个匹配成功的处理器alwaysUseFullPath
(总是使用完整路径)。若设置为true
,Spring将在当前Servlet上下文中总是使用完整路径来查找合适的处理器。若设置为false
(默认就为false
),则使用当前Servlet的mapping路径。举个例子,若一个Servlet的mapping路径是/testing/*
,并且alwaysUseFullPath
属性被设置为true
,此时用于查找处理器的路径将是/testing/viewPage.html
;而若alwaysUseFullPath
属性的值为false
,则此时查找路径是/viewPage.html
urlDecode
,默认设置为true
(也是Spring 2.5的默认设置)。若你需要比较加密过的路径,则把此标志设为false
。需要注意的是,HttpServletRequest
永远以未加密的方式存储Servlet路径。此时,该路径将无法匹配到加密过的路径
下面的代码展示了配置一个拦截器的方法:
<beans>
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<bean class="example.MyInterceptor"/>
</property>
</bean>
<beans>