Spring MVC –自定义RequestMappingHandlerMapping

在xml bean定义文件中使用<mvc:annotation-driven />配置Spring MVC时,在内部将一个名为RequestMappingHandlerMapping的组件注册到Spring MVC。 该组件或通常是HandlerMapping组件负责将请求URI路由到处理程序,这些处理程序是使用@RequestMapping注释进行注释的控制器方法。

RequestMappingHandlerMapping中有两个可能不直观的特定配置:

第一个配置是'useSuffixPatternMatch',如果说uri'/ members'映射到方法以返回实体列表,则'/members.xyz'将映射到相同的处理程序方法。
第二个配置是“ useTrailingSlashMatch”,即“ / members”和“ / members /”将映射到相同的处理程序方法。
如果需要修改这两种行为,则方法是配置RequestMappingHandlerMapping。

如果已使用<mvc:annotation-driven />定义RequestMappingHandlerMapping,那么执行此操作的笨拙方法将是删除<mvc:annotation-driven />,然后通过扩展可获取以下内容的组件来配置Spring MVC由处理“ mvc”名称空间的自定义名称空间处理程序注册,这是沿着这些方面的东西(这还不完整,只是为了说明配置的复杂性而显示):

<bean name='handlerAdapter' class='org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter'><property name='webBindingInitializer'><bean class='org.springframework.web.bind.support.ConfigurableWebBindingInitializer'><property name='conversionService' ref='conversionService'></property><property name='validator'><bean class='org.springframework.validation.beanvalidation.LocalValidatorFactoryBean'/></property></bean></property><property name='messageConverters'><list><bean class='org.springframework.http.converter.ByteArrayHttpMessageConverter'/><bean class='org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter'/><bean class='org.springframework.http.converter.json.MappingJackson2HttpMessageConverter'/><bean class='org.springframework.http.converter.StringHttpMessageConverter'></bean><bean class='org.springframework.http.converter.ResourceHttpMessageConverter'></bean><bean class='org.springframework.http.converter.xml.SourceHttpMessageConverter'></bean><bean class='org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter'></bean></list></property>
</bean><bean name='handlerMapping' class='org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping'><property name='useTrailingSlashMatch' value='false'></property>
</bean>

绝对不是更改配置的好方法。 相反,如果面对配置RequestMappingHandlerMapping的需要,一种更好的方法是通过以下方式将部分或整个Web-MVC配置移动到Java @Configuration:

package mvcsample.spring;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;@Configuration
public class WebConfig extends WebMvcConfigurationSupport{@Beanpublic RequestMappingHandlerMapping requestMappingHandlerMapping() {RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping();handlerMapping.setUseSuffixPatternMatch(false);handlerMapping.setUseTrailingSlashMatch(false);return handlerMapping;} 
}

并将此配置导入到配置xml的其余部分中(还有其他记录的方法):

<bean class='mvcsample.spring.WebConfig'/><!-- 
<mvc:annotation-driven>
</mvc:annotation-driven> 
-->

因此,@Configuration提供了一种更简单的机制来配置Spring MVC中的组件,强烈建议从基于xml的配置迁移到Java配置,以简化配置和管理定制。

参考: Spring MVC –来自all和杂类博客的JCG合作伙伴 Biju Kunjummen 自定义RequestMappingHandlerMapping 。

翻译自: https://www.javacodegeeks.com/2013/01/spring-mvc-customizing-requestmappinghandlermapping.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css的三个特性 背景透明设置

关于行内元素&#xff08;补充一点&#xff09; 行内元素只能容纳文本或其他行内元素。&#xff08;a特殊a里面可以放块级元素&#xff09; 例子&#xff1a; 关于行高tip: 选择器的嵌套层级不应大于3级&#xff0c;位置靠后的限定条件应尽可能的精确。 属性定义必须另起一行…

比较容易犯的一些智障错误(不定时修改)

无论在什么学习中&#xff0c;在成长的过程中&#xff0c;注定要犯一些错误&#xff0c;有些比较高级的错误&#xff0c;有些是比较智障的错误。那么在oi的学习中&#xff0c;我们最讨厌的就是一些智障的小错误&#xff0c;因为如果是大错误的话一般情况下在测试样例的时候都是…

ccs安装多版本编译器离线_大数据分析:学习工具JDK,在线安装指南

hadoop是使用Java语言开发的并且Hadoop运行需要有Java环境的支持&#xff0c;因此在安装hadoop之前需要安装Java开发环境即JDK(Java Development Kit)。安装前首先向大家介绍以一下本文会用到的几个词&#xff1a;JAVA_HOME:一是为了方便引用&#xff0c;比如&#xff0c;JDK安…

HTML基础入门学习准备篇

在学习前端的开始&#xff0c;让我们一起来了解什么是HTML5时代的大前端开发和全栈开发的定义传统的前端&#xff1a;切图-标签和样式-实现效果H5时代的前端&#xff1a;一、需要各端的兼容开发二、可以用于APP开发和移动站点的开发三、Ajax服务器端技术开发四、高级设计模式和…

asp.net尚未在web服务器上注册_最新版Web服务器项目详解 00 项目概述

点 击 关 注 上 方&#xff02;两猿社&#xff02;设 为&#xff02;置 顶 或 星 标&#xff02;&#xff0c;干 货 第 一 时 间 送 达。互 联 网 猿 | 两 猿 社TineyWebServerLinux下C轻量级Web服务器&#xff0c;助力初学者快速实践网络编程&#xff0c;搭建属于自己的服务器…

python正则r的作用_Python正则表达式,这一篇就够了!

原标题&#xff1a;Python正则表达式&#xff0c;这一篇就够了&#xff01;大多数编程语言的正则表达式设计都师从Perl&#xff0c;所以语法基本相似&#xff0c;不同的是每种语言都有自己的函数去支持正则&#xff0c;今天我们就来学习 Python中关于 正则表达式的函数。re模块…

服务器微信了早上好,每天早上好的问候语 微信早安问候语合集66句

1、没有伞的孩子&#xff0c;必须努力奔跑&#xff01;早安&#xff01;2、你不能改变过去&#xff0c;但你可以改变未来。早安&#xff01;3、坚持了才叫梦想&#xff0c;放弃了就只是妄想。早安&#xff01;4、忘掉失败&#xff0c;不过要牢记失败中的教训。早安&#xff01;…

如何得到某个文件的旧版本

下载某个文件的旧版本 如果想要得到某个文件的旧版本&#xff0c;只需在该文件上单击右键&#xff0c;选择Updata to revision…即可。 系统会提示输入版本号。 例如要下载soc_1的第五个版本&#xff0c;只需填入5即可。如图7。 查看完版本5的文件后&#xff0c;如果想在此回到…

Google Guava EventBus和Java 7 WatchService用于事件编程

这篇文章将介绍如何使用Guava EventBus将更改发布到Java 7 WatchService检测到的目录或子目录中。 Guava EventBus是向应用程序添加发布/订阅通信的好方法。 Java 7 java.nio.file软件包中新增的WatchService用于监视目录中的更改。 由于EventBus和WatchService已在以前的文章中…

Bootstrap-table 部分浏览器显示不出来

一、问题 近日&#xff0c;写了一个ASP.Net项目&#xff0c;但是bootstrap-table在别人的电脑上显示不出来&#xff0c;在自己的电脑上能显示&#xff0c;有些浏览器也是能显示&#xff0c;但部分浏览器就是显示不出来。找了很多原因&#xff0c;最后有个老师和我说是内核版本的…

DBMS-基本概念

文件处理系统&#xff08;file-processing system&#xff09;的主要弊端&#xff1a; 数据冗余和不一致&#xff08;data redundancy and inconsistency&#xff09;、数据访问困难&#xff08;difficulty in accessing data&#xff09;、数据孤立&#xff08;data isolation…

python多大孩子可以学_孩子学编程最佳年龄是多大

儿童编程教育已经悄悄地掀起了编程低龄化的热浪。但是很多人会疑惑&#xff0c;到底孩子学编程最佳年龄是多少呢&#xff1f;下面小编就为大家解答一下。孩子学编程最佳年龄 首先&#xff0c;孩子的学习黄金时期是非常重要的。从6岁开始&#xff0c;大多数孩子都可以掌握对基本…

上传文件到华为云云服务器,上传文件到云服务器

上传文件到云服务器 内容精选换一换登录Windows操作系统的弹性云服务器时&#xff0c;需使用密码方式登录。因此&#xff0c;用户需先根据创建弹性云服务器时使用的密钥文件&#xff0c;获取该弹性云服务器初始安装时系统生成的管理员密码(Administrator帐户或Cloudbase-init设…

JUnit规则

第一次偶然发现JUnit Rule批注时&#xff0c;我对此概念有些恼火。 在测试用例中拥有一个公共领域似乎有些奇怪&#xff0c;因此我不愿意定期使用它。 但是一段时间后&#xff0c;我习惯了这一点&#xff0c;事实证明&#xff0c;规则可以通过多种方式简化编写测试的过程。 这篇…

微pe工具箱是微软的吗_微PE工具箱V2.0更新10内核

本帖最后由 韦小宝2 于 2017-3-22 21:26 编辑微PE工具箱V2.0发布更新了&#xff0c;链接&#xff1a;http://pan.baidu.com/s/1c9whpO 转载自无忧论坛 07年&#xff0c;第一个XP内核通用PE工具箱发布。17年&#xff0c;第一个WIN10内核的微PE工具箱就此诞生。64位纯内核&#x…

jq实现轮播图

之前设计了一个校团委网站&#xff0c;里面有一个轮播图效果&#xff0c;上网后查看了许多方法&#xff0c;觉得下面这个方法最为适用&#xff0c;记录下来 js代码&#xff1a; $(document).ready(function () {//无缝切换轮播var i 0;//索引var clone $(".banner .imgL…

关于图片预加载的思考

引子&#xff1a; 很多时候&#xff0c;我们在写html页面的时候&#xff0c;当需要在页面中加入图片时&#xff0c;我们很自然地把图片直接用<img>标签放在了<body>里面&#xff0c;这本来是没有多大问题的。 但是当图片数量很多的时候&#xff0c;问题就来了。H…

oracle安装中桌面模式与服务器模式的去别

桌面模式只能本机使用。 服务器模式可以在网络中使用&#xff0c;也就是网络中的其他服务器可以使用。 所以安装时&#xff0c;如果是生产环境肯定是服务器模式。一般也都是服务器模式。 转载于:https://www.cnblogs.com/zhjx0521/p/7803691.html

python不能创建字典的是_用Python创建带有重复键的字典

用Python创建带有重复键的字典 我有以下列表&#xff0c;其中包含重复的具有不同值的汽车注册号。 我想将其转换为字典&#xff0c;该字典接受汽车登记号的多个键。 到目前为止&#xff0c;当我尝试将列表转换为字典时&#xff0c;它消除了键之一。 如何制作具有重复键的字典&a…

python中int是什么的缩写_python中int是什么类型

python中的基本数据类型1:虽然python中的变量不需要声明&#xff0c;但使用时必须赋值整形变量浮点型变量字符型2:可以一个给多个变量赋值&#xff0c;也可以多个给多个变量赋值3:python3中有6个标准数据类型Number(数字)*True1*False0*数值的除法(/)总是返回一个浮点数&#x…