springMVC的HandleMapping
http://blog.chinaunix.net/uid-20415521-id-1949916.html
SpingMVC中的HandlerMapping (2007-05-22 11:33)
分类: Spring
DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean——这个Bean的名字为“HandlerMapping”。
HandlerMapping是把一个URL指定到一个Controller上,(就像应用系统的web.xml文件使用<servlet-mapping>将URL映射到servlet)。
Spring带有三种HandlerMapping,(SpringMVC中的所有HandlerMapping都实现了接口org.springframework.web.servlet. HandlerMapping)。
1、BeanNameUrlHandlerMapping
这是Dispatcher Servlet的默认的HandlerMapping,所以在应用上下文配置文件中简单地用“Url样式”来定义一个控制器Bean的名字,就可以告诉Dispatcher Servlet什么样式的请求应该由哪个控制器去处理,而不用显式地定义一个HandlerMapping。(私下说一句,这样做虽然简单,但这样用URL样式定义出来的ControllerBean,其名字显得古怪,因为这个名字同时也是Controller Bean的实例名)
例:若控制器ListCoursesController的URL样式是“listCourses.go”,则
<bean name="/listCourses.go"
class="com.w3cs.vlar.ListCoursesController">
<property name="couseService">
<ref bean="courceService"/>
</property>
</bean>
当然,也可以在定义这个控制器Bean之前,显式地声明你所用的HandlerMapping,显式定义如下:
<bean id="beanNameUrlMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
2、SimpleUrlHandlerMapping
这种方式不同于BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping不需定义Controller Bean的名字,而是直接把URL映射到控制器。
由于SimpleUrlHandlerMapping不是Dispatcher Servlet默认的HandlerMapping,所以这个HandlerMapping必须得显式定义。
下面定义了一个ID为“SimpleUrl”的HandlerMapping Bean:
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/listCourses.go">listCoursesController</prop>
<prop key="/login.go">loginController</prop>
</props>
</property>
</bean>
解释:
1)、SimpleUrlHandlerMapping中,用<prop>装配了一个名为mappings的java.util.Properties。
2)、<prop>元素的key属性是URL样式,而<prop>的值是处理这个URL的控制器Bean的名字。(而在BeanNameUrlMapping中的那个古怪的名字是控制器Bean的实例名)。
3、CommonsPathMapHandlerMapping
这个处理器使用控制器代码中的元数据将控制器映射到URL。但具体俺不会用。谁知道了可以告诉俺!!!
springMVC的HandleMapping的更多相关文章
- SSM-SpringMVC-04:SpringMVC深入浅出理解HandleMapping(源码刨析)
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先从概念理解,从中央调度器,携带参数request,调度到HandleMapping处理器映射器,处理器映射器 ...
- SpringMVC handleMapping映射过程
初始化IOC容器 Spring初始化的时候会优先初始化自定义的类,下面这个就是 org.springframework.web.servlet.mvc.method.annotation.Reques ...
- SpringMVC handleMapping 处理器映射器 属性清单
映射器的属性清单 defaultHandler 在映射与所有处理器都不匹配的情况下,指定默认的处理器(处理器即你定义的Controller(action)类) order ...
- SpringMVC学习笔记(三)
一.SpringMVC使用注解完成 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setti ...
- SpringMVC学习笔记(二)
一.HandleMapping和HandlerAdapter的讲解 HandleMapping:处理映射器,可以理解为为请求的url查找对应的Controller类. HandlerAdapter:可 ...
- SpringMVC学习笔记(一)
一.MVC的流程图 分析流程图 1. 首先用户发送请求---->前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分:图 ...
- 深入浅出Spring(五) SpringMVC
上一篇深入浅出Spring(四) Spring实例分析的博文中,咱们已经可以了解Spring框架的运行原理和实现过程,接下来咱们继续讲解Spring的一个延伸产品——Spring MVC 1.Spri ...
- SpringMVC使用@ResponseBody注解返回中文字符串乱码的问题
先说一下我的经历,以及解决问题的而过程. 在使用SpringMVC的时候,最开始的时候在配置文件中使用<mvc:annotation-driven />去自动注册DefaultAnnota ...
- SpringMVC轻松学习-其他常用(四)
Spring MVC 3.0 深入 核心原理 1. 用户发送请求给服务器.url:user.do 2. 服务器收到请求.发现DispatchServlet可以处理.于是调用Disp ...
随机推荐
- Murano环境搭建、使用介绍和思考
murano是OpenStack的Application Catalog服务.推崇AaaS(Anything-as-a-Service)的概念.通过统一的框架和API实现应用程序高速部署和应用程序 ...
- Python强制抛出自定义异常
raise Exception("My Exception") 当程序运行到这行时,会抛出异常,打印出Exception: My Exception
- php的ord函数——解决中文字符截断问题
php的ord函数——解决中文字符截断问题 分类: PHP2014-11-26 12:11 1033人阅读 评论(0) 收藏 举报 utf8字符截取 函数是这样定义的: int ord ( strin ...
- angularjs 构建主页 内置过滤器、日期的格式化
从构建负责管理主屏幕的 MainController 开始.在这个 MainController 控制器内,只需设置一个每秒运转一次,同时更新一个局部作用域变量的延时 angular.module(' ...
- SQL Server 2014 Agent 无法启动
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">- <System& ...
- Android开发日记(七)
trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾的空格都被删除了,例子如下:String s=" Hello World ".trim();就是把" ...
- dropload.js下拉加载更多
项目中有用到下拉加载更多的地方,去网上找了一个插件,地址:http://ons.me/526.html总体还是不错的,可能自己不是特别了解这个插件,做项目时,也是遇到了无数问题.项目中要用的是两个ta ...
- Linux下C语言编程中库的使用
零.问题 1. 为什么要用到库? 2. 我要用一个库,但是,尼玛命令行上该怎么写呢?或者说库文件如何使用? 3. Linux的库在那些地方? 4. 什么是静态库,什么是动态库,二者有啥区别? 5. 常 ...
- Easy UI分页控件修改刷新方法后触发两次请求
今天我在做分页的时候,有这样的一个现象: 我重写了分页的刷新和改变页面大小的方法,发现给服务器提交了两次post,问题出现在哪里的?经过alert调试,发现原因是: 刷新和改变页面大小的事件执行的时候 ...
- C++ 运算符重载四(自定义数组类)
//自定义数组类 #include<iostream> using namespace std; //分析:能获取数组长度,添加元素,删除元素,修改元素 //要求重载[],=,==,!=运 ...