映射器的属性清单
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才会报错