spring的路径匹配问题
今天下午没课,细学了有关于spring的配置。刚开始比较顺利,试的几个项目都通过了,但没多久就碰到难题,结果被困惑了整整一个晚上。
在spring官方文档中,它提供了给我们关于spring在web.xml中的一个实例
1 <web-app> 2 <servlet> 3 <servlet-name>golfing</servlet-name> 4 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 5 <load-on-startup>1</load-on-startup> 6 </servlet> 7 8 <servlet-mapping> 9 <servlet-name>golfing</servlet-name> 10 <url-pattern>/golfing/*</url-pattern> 11 </servlet-mapping> 12 </web-app>
通过测试,这个例子本身是正确无误的。任何路径形式为:<项目名>/goifing/*的请求均能够被正确拦截并处理。这里可能有人会有迷惑,说明一下,这里它查找RequestMapping时匹配的只有*部分的内容,而不包括/golfing部分。
举个例子,比如你输入了<项目名>/gofing/hello这样请求。那么spring将会处理你的请求,查找@RequestMapping("hello")的方法进行处理,而不是@RequestMapping("gofing/hello")。
接下来讲解第二个问题。其实我们一般是不喜欢再多加/golfing这样的一个前缀。因此我们会很自然的想处理成下面这样的形式
<web-app><servlet><servlet-name>golfing</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>golfing</servlet-name><url-pattern>/*</url-pattern></servlet-mapping></web-app>
也就是只剩下了/*这样的匹配,去掉了/gofing部分。很多人应该会认为这样应该是没什么问题,不过,结果出乎我们的意料。但我们输入<项目名>/*这样请求后,返回均为404,究竟是什么消失了?
对于这个问题我目前也还没能解答,不过我找到解决这个问题的方法,将上面的代码在修改一小点
1 <web-app> 2 3 <servlet> 4 <servlet-name>golfing</servlet-name> 5 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 6 <load-on-startup>1</load-on-startup> 7 </servlet> 8 9 <servlet-mapping> 10 <servlet-name>golfing</servlet-name> 11 <url-pattern>/</url-pattern> 12 </servlet-mapping> 13 14 </web-app>
可以看到,我这次连*也删除了,只剩下/。进测试,采用这种方法请求恢复正常!
转载于:https://www.cnblogs.com/YESheng/archive/2013/02/27/2935787.html
spring的路径匹配问题相关推荐
- 【spring】第二个springmvc helloworld 以及 spring模糊路径
第二个helloword 配置文件: 1.添加pom文件 (1)配置parent 代码实现: <parent><groupId>org.springframework.boot ...
- SpringMVC路径匹配规则AntPathMatcher(转)
SpringMVC的路径匹配规则是依照Ant的来的. 实际上不只是SpringMVC,整个Spring框架的路径解析都是按照Ant的风格来的. 在Spring中的具体实现,详情参见 org.sprin ...
- spring boot与spring cloud版本匹配关系
Spring Cloud版本 在写本篇文章时,Spring Cloud版本演进情况如下: 版本名称 版本 Finchley snapshot版 Edgware snapshot版 Dalston SR ...
- SpringCloud实战小贴士:Zuul的路径匹配
路径匹配 不论是使用传统路由的配置方式还是服务路由的配置方式,我们都需要为每个路由规则定义匹配表达式,也就是上面所说的path参数.在Zuul中,路由匹配的路径表达式采用了Ant风格定义. Ant风格 ...
- 路径匹配C++变量文件夹下所有文件
改章节朋友在广东吃饭的时候突然想到的...最近就有想写几篇关于路径匹配的博客,所以回家到之后就奋笔疾书的写出来发表了 void ShowDir(char* dir) { long Handle; ...
- Spring Cloud与Spring Boot版本匹配关系
Spring Cloud与Spring Boot版本匹配关系 Spring Cloud与Spring Boot版本匹配关系 Spring Cloud Spring Boot Finchley 兼容Sp ...
- Nginx 系列:Nginx 实践,location 路径匹配
1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2. location 路径匹配 2.1. 匹配规则 location 路径正则匹配: 2.2. 匹配优先级 路径匹配, ...
- Ant 风格的路径匹配模式
目录 1. Ant 风格 2. Ant 风格示例 1. Ant 风格 Apache Ant 路径匹配模式(目录的模式匹配)中主要有三种通配符: 通配符 说明 ? 匹配任何单字符 * 匹配0或者任意数量 ...
- Go 学习笔记(53)— Go 标准库之 path(判断绝对路径、拆分目录和文件、组合路径、返回路径目录、获取路径最后文件名、获取文件扩展名、路径匹配规则)
1. 概述说明 import "path" path 实现了对斜杠分隔的路径的实用操作函数. 2. 主要函数 2.1 func IsAbs func IsAbs(path stri ...
最新文章
- Modern CSV中文版
- MVP介绍以及优化封装
- Android 开发工具类 36_ getSimSerial
- react领域里面jsx中的style的值为什么放到了{}中
- GoJS 绘图 (二) :TextBlocks
- matlab 给参数赋值,未对输出参数赋值 求大神帮忙解惑
- 车辆销售系统用例_销售管理系统的UML分析与设计
- ckplayer 网页视频播放插件
- DUBBO启动为啥不用web容器启动
- 7月编程语言排行榜揭晓!
- 高德地图显示服务器加载失败,常见问题
- Mac OS X 窗口操作快捷键
- JQuery使用及基础原理解析相关笔记(三)
- 数据人之苦,你造吗?(转自知乎)
- AHK 键盘控制鼠标点击屏幕不同位置
- 2022年K1刷第三方固件教程
- 软件测试 6(等价类) --等价类测试
- 分析一下云ERP与本地ERP相比区别在哪里
- 基于Hmm模型和Viterbi算法的中文分词和词性标注
- CTF---Web---SQL注入---10---get传参的删减
热门文章
- 在oracle里面password密码为什么输入_刷机成功之后为什么还是需要输入 ID 密码?...
- gnu java_【Java学习笔记】修饰符
- c语言实现点在多边形内部,求教这个判断点是否在多边形内的C语言算法用的什么原理....
- cut out数据增强_ChIP-Seq数据分析(PE型)
- mysql update修改数据_MYsql如何用update语句修改数据,值得一看
- C++程序代码:利用【函数】——画正三角形、倒三角形
- 【转】QTableView 小结
- 十款最常见的Linux发行版及目标用户
- 周鸿祎:网络安全面前 没有国家可以袖手旁观
- CentOS图形界面和命令行切换