文档章节

springmvc笔记--请求映射处理器 HandlerMapping

那位先生_
 那位先生_
发布于 2014/06/12 20:50
字数 545
阅读 3820
收藏 13

HandlerMapping根据请求返回一个HandlerExecutionChain,HandlerExecutionChain包括两个类对象,一个处理器Handler,一个处理拦截器HandlerInterceptor。他们根据URL请求信息按不同的策略查找DispatcherServlet上下文中所定义的控制器(Controller),同时也可以在配置HandlerMapping时,注入多个处理器拦截器

HandlerMapping的所有实现类都AbstractUrlHandlerMapping,该抽象类定义了所有实现类的共性

interceptors:拦截器列表
defaultHandler:默认处理器(当不存在匹配请求的处理器时使用)
order:如果DispatcherServlet有多个HandlerMapping,将按这个顺序一一匹配
alwaysUseFullPath:是否使用全路径。默认为false,如果为true,如果在url-pattern中使用/admin/*,则对于index.html一定要写成/admin/index.html
urlPathHelper:指定在分析url时使用的UrlPathHelper
urlDecode:对请求url解码

一:BeanNameUrlHandlerMapping

查找spring容器中和请求的url同名的bean.这个映射器不需要配置,因为spring在找不到handlerMapping的情况下会使用BeanNameUrlHandlerMapping.如果一定要配置,像下面这样就行了:

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

也可以配置过滤器

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
	<list>
		<bean class="com.test.MyInterceptor"/>
		<ref bean="someOtherCheckInterceptor"/>
	</list>
    </property>
</bean>

配置控制器

<bean name="/user/index.htm" class="controller.Test1Controller"/>
<bean name="/admin/index.htm" class="controller.Test2Controller"/>

二:SimpleUrlHandlerMapping

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
	<list>
	    <ref bean="localeChangeInterceptor"/>
	    <ref bean="someOtherCheckInterceptor"/>
	</list>
    </property>
    <property name="mappings">
	<props>
	    <!--key值采用ant风格-->
	    <prop key="/project.htm">projectController</prop>
	    <prop key="com/**/manage.htm">managementController</prop>
	    <prop key="/user/*.htm">userController</prop>
	    <prop key="/upl?ad.htm">fileUploadController</prop>
	</props>
    </property>
</bean>
<bean name="userController" class=""/>

三:ControllerClassNameHandlerMapping

将控制器类名的Controller后缀删除,转换成小写后作为请求url的前缀

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<!-- 以下为Controller -->
    <!-- 对应/registration*的url -->
<bean id="registrationController" class="com.RegistrationController"/>
    <!-- 对应/user*的url -->
<bean id="userController" class="com.UserController" scope="request"/>

对于MultiActionController,匹配子路径

<bean class="org.springframework.web.servlet.mvc.support.MultiActionController"/>

<!-- 对应/registration/*的url -->
<bean id="registrationController" class="com.RegistrationController"/>
<!-- 对应/user/*的url -->
<bean id="userController" class="com.UserController" scope="request"/>

多个处理器

<bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
	<property name="order" value="1"/>
</bean>
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.ControllerClassNameHandlerMapping">
	<property name="order" value="2"/>
</bean>
<bean id="indexController" class="com.controller.IndexController"/>

当/index.html发来请求时,首先BeanNameUrlHandlerMapping进行映射解析,因为userController不符,所以不能正确解析,而后选择ControllerClassNameHandlerMapping,这时解析正确,匹配IndexController

© 著作权归作者所有

那位先生_

那位先生_

粉丝 131
博文 61
码字总数 69487
作品 0
深圳
后端工程师
私信 提问
【Spring学习笔记】--Spring MVC

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YYZZHC999/article/details/82961757 接上篇标准的MVC 框架,我们学习一下Spring MVC. Spring MVC 是一个模型...

杨晓慧_Hepburn
2018/10/07
0
0
springmvc学习笔记(1)-框架原理和入门配置

springmvc学习笔记(1)-框架原理和入门配置 标签: springmvc [TOC] 本文主要介绍springmvc的框架原理,并通过一个入门程序展示环境搭建,配置以及部署调试。 springmvc是spring框架的一个模块...

brianway
2016/03/08
383
0
1:spring mvc 概述

什么是mvc 什么是spring mvc Spring MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架, 即使用了MVC 架构模式的思想,将 web 层进行职责解耦, 基于请求驱动...

小杰java
2017/10/18
51
0
Spring MVC 执行过程详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/Rsx/article/details/96309840 文章目录 Spring MVC简述 大部分Java应...

不专业得Cook
07/17
0
0
SpringMVC架构原理分析

springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析器 springmvc入门程序 目的:对前端控制器、处理器映射器、处理器适配器、视图解析器学习;非注解的处理器映射...

小小蒜头
2017/11/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部