SpringMVC handleMapping 处理器映射器 属性清单

Posted code never lies

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC handleMapping 处理器映射器 属性清单相关的知识,希望对你有一定的参考价值。

映射器的属性清单

defaultHandler         在映射与所有处理器都不匹配的情况下,指定默认的处理器(处理器即你定义的Controller(action)类)

order                        Spring根据order的值对映射器进行排序,并使用第一个匹配的处理器,order值越小优先级越高(相当于链的索引位置,从0开始,0级最高)

interceptors             使用的拦截器列表

alwaysUseFullPath 是否使用servlet context中的全路径匹配处理器,默认false

urlDecode        默认false,如果你希望映射器在寻找处理器之前对URL/URI进行解码,那么将此属性设置为true.

lazyInitHandlers      默认false,可以对单例处理器进行延迟初始化

urlPathHelper     可以通过此属性来检查URL,一般无需修改其默认值

spingmvc的映射器有很多,但常用的就三种BeanNameUrlHandlerMapping(默认映射器),SimpleUrlHandlerMapping,ControllerClassNameHandlerMapping

说明:我的web.xml里用的是<url-pattern>*.action</url-pattern>

1.BeanNameUrlHandlerMapping

顾名思义,是以Bean的name属性作为url来访问的时候进行映射,那么这个bean指的是什么?当然指的我们开发人员自己定义的Controller(action)

这里我使用的是userController

地址栏:http://127.0.0.1:8080/项目/userController.action

具体配置文件见下面

 

 


2.SimpleUrlHandlerMapping

这个映射器通常用于处理多个请求对应一个Controller(action)的情况,当然也可以用别名的方式替代此映射器.具体配置文件见下面

 


 

3.ControllerClassNameHandlerMapping

使用Controller的类名(首字母小写).action来访问时进行映射

使用这个映射器要注意的是你的Controller类命名必须是xxxController,而不能是xxxAction这种,否则会找不到

当然,你可以给它加个defaultHandler属性,指定一个默认处理器(即你定义的Controller类),但这样就没有必要使用此映射器了

 


 

4.配置文件

 1  <!-- 使用BeanNameUrlHandlerMapping完成多个请求对应一个Action-->
 2       <bean name="/add.action,/delete.action,/update.action,/find.action" class="cn.tele.springmvc_003.UserAction"></bean>
 3         
 4       <!-- 注册action时给与id属性 -->
 5       <bean id="userAction" name="/userController.action" class="cn.tele.springmvc_003.UserController"></bean>
 6      
 7       <!-- 映射器(默认) -->
 8       <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
 9      
10       <!-- 使用SimpleUrlHandlerMapping完成多个请求对应一个Action -->
11       <!-- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
12           <property name="mappings">
13                   <props>
14                   <prop key="/add.action">userAction</prop>
15                   <prop key="/delete.action">userAction</prop>
16                   <prop key="/update.action">userAction</prop>
17                   <prop key="/find.action">userAction</prop>
18                   </props>
19           </property>
20       </bean>     -->
21     
22     <!-- 通过类名.action的形式来访问,userController.action类名首字母小写 -->
23     <!-- <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
24         <property name="defaultHandler" ref="userAction"></property>
25     </bean> -->

 

值得一提的是这些映射器可以共存,但同一时刻只能有一个映射器起作用,调用哪一个映射器取决于你的访问方式和映射器的order值,多个不同的映射器组成了一条

链,order值越小,优先级越高,当优先级较高的映射器无法处理时会交给优先级低的处理,都无法匹配到处理器(即你定义的Controller)时Spring才会报错

 

 


以上是关于SpringMVC handleMapping 处理器映射器 属性清单的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC_[1]执行流程和常用注解

SpringMvc分析

SpringMVC-02 HandlerMapping的常见种类及注解

个人学习SpringMVC总结

大厂Java开发面试解答,纯干货

深入剖析原理!java红黑树面试题