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 ...
最新文章
- javascript_JavaScript疲劳疲劳
- IDEA修改module的名字
- Django之部署NGINX+uWSGI
- 计算机科学导论第二章,计算机科学导论第二章.doc
- 素数-试除法和埃式筛选法模板
- BZOJ2081 [Poi2010]Beads
- Hadoop概念学习系列之Hadoop 是什么?(一)
- C++查漏补缺之流状态
- BERT源码分析(二)
- python3.4.3如何获取文件的路径
- Ubuntu系统安装VMware Tools的简单方法
- 嵌入式专业名词整理(以后会不断完善)
- 惠新宸php教程_【转载】惠新宸:PHP在百度的应用现状及展望
- office2007在ppt中插入文件对象(可以单击打开)
- java快速排序的时间复杂度_程序猿必备排序算法及其时间复杂度分析
- linux 怎么撤销移动命令,Linux的常用命令
- 报名系统网页导出html,教资报名系统提示网站兼容性怎么办 ie浏览器兼容性操作流程...
- 传统的冒泡排序(一)
- 使用队列 模拟跳舞舞伴Java实现
- C++ 狂热分子:你会为了性能而牺牲代码简洁性吗?
热门文章
- php简单的登录界面,PHP实现简单用户登录界面
- easyui前端实现多选框_EasyUI实现下拉框多选功能
- 安卓linux终端 计算,5种在Linux终端中进行算术运算的方法
- lua table insert_超详细的sysbench oltp-数据库性能测试中lua脚本解剖
- recyclerview不显示_Android studio中导入v7包,使用recyclerview前的操作
- 南京理工大学计算机专业考研,2020南京理工大学计算机考研初试科目、参考书目、复试详情汇总...
- 图解PCB板元器件焊接流程
- NYOJ-疯牛(贪心)
- Matplotlib - bar(条形图)
- 红黑树插入和删除的各种情况分析