Spring MVC教程 第三集 映射处理器Handler Mapping
http://www.u9vip.com/forum.php?mod=viewthread&tid=214&fromuid=1
(出处: U9社区)
注:本文为U9社区 http://www.u9vip.com/ 原创内容,请大家在转载时保留文章出处。
一、简析映射处理器在spring mvc中,使用映射处理器可以把web请求映射到正确的处理器上,spring内置了很多映射处理器,而且我们也可以自定义映射处理器。下面的实例展示spring中最常用的三个映射处理器:
- BeanNameUrlHandlerMapping(默认)官方推荐使用默认映射器
- SimpleUrlHandlerMapping
- ControllerClassNameHandlerMapping
快速案例演示:
在正式开始前有必要了解以下相关要点:
(1)映射处理器都能把请求传递到处理器执行链接(HandlerExecutionChain)上,并且处理器执行链接必须包含能处理该请求的处理器(实质就是处理器链上动态添加了了此处理器,可以结合filter工作原理理解),而且处理器链接也能包含一系列拦截器。
(2)上面列举的spring最常用的两种处理器都是 继承 自 AbstractHandlerMapping 类,因而它们具备父类的属性。
二、实例:BeanNameUrlHandlerMapping
建立SpringMVC02项目,并导入相关jar包。
快速下载地址:链接: http://pan.baidu.com/s/1c0h6RGO 提取密码:2xqe
步骤一:建立后端控制器 包:com.u9vip.springmvc.controller 类名:U9Controller.java,代码如下:
步骤二:配置web.xml,代码如下:
步骤三:配置action-servlet.xml,代码如下:
步骤四:在WEB-INF/U9VIP目录下建立U9FirstSpringMVC.jsp,主要代码如下:
步骤五:启动服务器,输入 http://127.0.0.1:8080/SpringMVC02/u9.action 访问测试。
简析执行过程
(1)启动服务器后,当我们向服务器发送u9.action请求时,首先被在web.xml中配置的前端控制器DispatcherServlet拦截到。
(2)前端控制器把此请求转交给后端控制器,下面分析转交过程:当在action-servlet.xml中查找能执行u9.action请求的映射处理器时,发现没有能处理此请求的映射处理器,这时便使用默认的映射处理器BeanNameUrlHandlerMapping:This is the default implementation used by the DispatcherServlet, along with DefaultAnnotationHandlerMapping (on Java 5 and higher). 我们还需注意:这种后端控制器的bean Name必须以“/”开头,并且要结合DispatcherServlet的映射配置。同时beanName支持通配符配置。比如如果配置:*.action 时,当访问U9VIP.action时也可以成功访问到U9Controller类。
(3)BeanNameUrlHandlerMapping处理器,会查找在spring容器中是否在名为“u9.action”的bean实例。当查找到此实例后,则把此bean作为处理此请求的后端控制器。同时把自身加到映射处理器链上,并向处理器链传递此请求。
(4)后端控制器进行处理,并返回视图。
三、实例:SimpleUrlHandlerMapping
步骤一:建立后端控制器U9SimpleUrlHandlerMappingContrller.java.代码如下:
步骤二:在action-servlet.xml中增加如下配置:
步骤三:访问 http://127.0.0.1:8080/SpringMVC02//u9demo2.action
说明:
(1)通过前面实例我们可以知道,SimpleController这样的后端控制器必须绑定一个commandClass对象,在这里我们通过配置文件绑定。
(2)SimpleUrlHandlerMapping是一个更强大的映射处理器,它除了支持上面 的这种配置,还支持Ant风格的路径匹配。另外也可以进行如下形式的配置:
四、实例ControllerClassNameHandlerMapping
步骤一:在action-servlet.xml中增加如下配置:
测试访问:
http://127.0.0.1:8080/SpringMVC0 ... ingContrller.action
完
注:本文为U9社区 http://www.u9vip.com/ 原创内容,请大家在转载时保留文章出处。