- 浏览: 866126 次
- 性别:
- 来自: 杭州
最新评论
-
我是你们的爹:
真垃圾
spring MVC之返回JSON数据(Spring3.0 MVC) -
107x:
不错,谢谢!
spring MVC之返回JSON数据(Spring3.0 MVC) -
李君寻:
...
spring MVC之用Handler Interceptor拦截请求 -
tianhandigeng:
讲得非常好
maven3实战之仓库(maven仓库分类) -
dafa1892:
我这样做的时候传中文怎么是乱码那?
spring MVC之处理重定向的传参
spring MVC之将请求映射到处理程序
----------
当DispatcherServlet接收到web请求时,它只会将请求分发给适当的处理程序来处理请求。你想为DispatcherServlet定义一种策略,用来将请求映射到处理程序。
在Spring MVC应用程序中,web请求被web应用程序上下文中声明的一个或多个处理程序映射Bean映射到处理程序上。这些Bean必须实现HandlerMapping接口,这样DispatcherServlet才能自动侦测它们。Spring MVC提供了几个HandlerMapping实现,让你可以利用不同的策略来映射请求。默认情况下,如果你没有显式地配置程序映射,DispatcherServlet将利用BeanNameUrlHandlerMapping作为它的默认处理程序映射,它根据Bean名称中指定URL模式将请求映射到处理程序上。因此,如果你觉得这一策略还好用,就不需要定义自己的处理程序映射了。
处理程序映射根据它们与上下文路径和Servlet路径的相对路径来匹配URL。因此,对于http://localhost:8080/court/welcome.htm这个URL而言,与之匹配的路径应该是/weblcome.htm,因为上下文路径是/court,没有Servlet路径。
1.按Bean名称映射请求
要将请求映射到处理程序,最简单的策略是按照处理程序的Bean名称进行映射,这也是默认的策略。为了让这个策略生效,必须将每个处理程序的Bean名称声明成URL模式的形式,它可以接受通配符,供处理程序处理多个URL。如果处理程序的Bean名称与请求的URL相匹配,DispatcherServlet就会将请求分布给这个处理程序,让它处理请求。
<beans...> ... <bean name="/welcome.htm" class="com.apress.springrecipes.court .web.WelcomeController"> ... </bean> <bean name="/reservationQuery.htm" class="com.apress.springrecipes.court .web.ReservationQueryController"> ... </bean> </beans>
在使用这个映射策略时,必须通过name属性设置处理程序的名称,因为id属性无法包含/字符。
2.按控制器类名称映射请求
Spring提供的另一个处理程序映射是ControllerClassNameHandlerMapping,它为实现Controller接口的处理程序生成处理程序映射。它根据web应用程序上下文中声明的控制器的类名称,自动生成映射。
<beans...> ... <bean class="org.springframework.web.servlet.mvc.support. ControllerClassNameHandlerMapping"/> <bean class="com.apress.springrecipes.court.web.WelcomeController"> ... </bean> <bean class="com.apress.springrecipes.court.web.ReservationQueryController"> ... </bean> </beans>
对于这些Bean配置,ControllerClassNameHandlerMapping会移除类名称中的Controller后缀,并将其他部分转换成小写字母,以此来自动生成处理程序映射。
WelcomeController --> /welcome* ReservationQueryController --> /reservationquery*
然而,如果想让你的URL模式遵循java的变量命名约定(如生成/reservationQuery*而不是/reservationquery*),必须将caseSensitive属性设置为true。此外,可以在pathPrefix属性中为生成的URL模式指定一个前缀。你还可以在basePackage属性中指定基包,然后在映射中就会包含相对于基包的子包。
<bean class="org.springframework.web.servlet.mvc.support. ControllerClassNameHandlerMapping"> <property name="caseSensitive" value="true"/> <property name="pathPrefix" value="/reservation"/> <property name="basePackage" value="com.apress.springrecipes.court"/> </bean>
这个ControllerClassNameHandlerMapping定义会生成下面的处理程序映射。
WelcomeController --> /reservation/web/welcome* ReservationQueryController --> /reservation/web/reservationQuery*
3.用定制的映射定义来映射请求
将请求映射到处理程序的最直接且最灵活的策略,是显式地指定URL模式和处理程序之间的映射定义。你可以通过
SimpleUrlHandlerMapping来做到这一点。
<beans...> ... <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <propery name="mappings"> <props> <prop key="/welcom.htm">welcomeController</prop> <prop key="/reservationQuery.htm">reservationQueryController</prop> </props> </property> </bean> <bean id="welcomeController" class="com.apress.springrecipes.court.web .WelcomeController"> ... </bean> <bean id="reservationQueryController" class="com.apress.springrecipes.court.web.ReservationQuerController"> ... </bean> </beans>
SimplerUrlHandlerMapping接受Properties对象形式的映射定义。属性键是URL模式,而属性值则是处理器ID或名称。URL模式也可以接受通配符,让处理程序能够处理多个URL。
4.按多种策略映射请求
在带有大量处理程序的web应用程序中,只选择一种处理程序映射策略经常是不够用的。一般情况下,ControllerClassNameHandlerMapping可以满足大多数的映射。然而,有些映射必须利用SimpleUrlHandlerMapping显式地进行映射。在这种情况下,要结合这两种策略来处理映射。
<beans...> ... <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/index.htm">welcomeController</prop> <prop key="/main.htm">welcomeController</prop> </props> </property> <property name="order" value="0"/> </bean> <bean class="org.springframework.web.servlet.mvc.support. ControllerClassNameHandlerMapping"> <property name="caseSensitive" value="true"/> <property name="order" vlaue="1"/> </bean> </beans>
当同时选择不止一种策略时,重要的是指定映射优先级。为此,可以设置处理程序映射Bean的order属性。order值越小,表示优先级越高。对于这两种处理程序映射,web请求映射是下面这样的。
/index.htm --> WelcomeController /amin.htm --> WelcomeController /welcome* --> WelcomController /reservationQuery* --> ReservationQueryController
发表评论
-
spring之spring与Quartz整合(Quartz的cronTrigger使用)
2011-08-28 18:40 1463spring之spring与Quartz整 ... -
spring之spring与Quartz整合(二)
2011-08-24 18:23 2706spring之spring与Quartz整合( ... -
spring之spring与Quartz整合(一)
2011-08-24 14:56 1425spring之spring与Quartz整合(一) - ... -
spring MVC之使用@SessionAttributes时报异常
2011-08-16 21:43 13948spring MVC之使用@SessionAttributes ... -
spring MVC之用注解处理静态资源
2011-08-08 19:33 3653spring MVC之用注解处理静态资源 --------- ... -
spring MVC之处理重定向的传参
2011-08-01 16:59 22110spring MVC之处理重定向的传参 ---------- ... -
spring MVC之注解开发控制器(三)
2011-07-31 17:11 3920spring MVC之注解开发控制器(三) -------- ... -
spring MVC之Spring MVC3.0的RESTFul方式的访问
2011-07-31 13:14 3918spring MVC之Spring MVC3.0的RESTFu ... -
spring MVC之返回JSON数据(Spring3.0 MVC)
2011-07-30 19:50 114066spring MVC之返回JSON数据(S ... -
spring MVC之用注解开发控制器(二)
2011-07-25 11:29 2290spring MVC之用注解开发控制器(二) ------- ... -
spring MVC之用注解开发控制器(一)
2011-07-25 10:45 1877spring MVC之用注解开发控制器(一) ------- ... -
spring MVC之将多个动作分组到一个控制器(二)
2011-07-25 09:25 2283spring MVC之将多个动作分组到一个控制器(二) -- ... -
spring MVC之将多个动作分组到一个控制器(一)
2011-07-24 20:32 4915spring MVC之将多个动作分组到一个控制器(一) -- ... -
spring MVC之用表单控制器处理表单(五)
2011-07-24 19:34 1476spring MVC之用表单控制器处理表单(五) -- ... -
spring MVC之用表单控制器处理表单(四)
2011-07-24 18:58 1376spring MVC之用表单控制器处理表单(四) ----- ... -
spring MVC之用表单控制器处理表单(三)
2011-07-24 18:37 3631spring MVC之用表单控制器处理表单(三) ----- ... -
spring MVC之用表单控制器处理表单(二)
2011-07-24 17:21 1630spring MVC之用表单控制器处理表单(二) ----- ... -
spring MVC之用表单控制器处理表单(一)
2011-07-24 16:47 4826spring MVC之用表单控制器处理表单(一) ----- ... -
spring MVC之创建带有参数化视图的控制器
2011-07-24 13:35 2371spring MVC之创建带有参数化视图的控制器 ----- ... -
spring MVC之构造ModelAndView对象
2011-07-24 12:36 59376spring MVC之构造ModelAndView对象 -- ...
相关推荐
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...
八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常处理? 十二、spring mvc 如何把全局异常记录到日志中? ...
八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常处理? 十二、spring mvc 如何把全局异常记录到日志中? ...
八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常处理? 十二、spring mvc 如何把全局异常记录到日志中? ...
Spring MVC--2.@RequestMapping 映射请求
NULL 博文链接:https://xieke90.iteye.com/blog/2235706
基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController 的程序进行处理, helloController 再调用 一个名为 ...
Spring MVC是Spring框架的一个模块,专注于构建Web应用程序。作为架构师和Java开发者,深入理解Spring MVC的原理和实践应用是非常重要的。本文通过分析Spring MVC的核心组件和执行流程,提供了一个全面的学习指南。 ...
RequestMapping测试案例
慨括了spring mvc请求参数常见的几种获取方法
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...
奉上学习Spring MVC 3.0的技术资料PPT资料,我花了两天写成,该资料根据最新拙作的《Spring 3.x 企业应用开发实战 》写成,仅需要1个小时左右的时间,就可以让你学习到Spring MVC 3.0的所有知识点和新功能,强烈推荐...
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...
Spring Web model-view-controller (MVC)框架是围绕 DispatcherServlet 设计的,并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view resolution)、 区域设置...
八、spring mvc 请求如何映射到具体的Action中的方法 九、 spring mvc 中的拦截器: 十、 spring mvc 如何使用拦截器 十一、 spring mvc 如何实现全局的异常处理 十二、 spring mvc 如何把全局异常记录到日志中 十三...
它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、渲染视图和管理流程的功能。 3. MyBatis框架:MyBatis是一个持久层框架,用于与数据库...