今天下午没课,细学了有关于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的路径匹配问题相关推荐

  1. 【spring】第二个springmvc helloworld 以及 spring模糊路径

    第二个helloword 配置文件: 1.添加pom文件 (1)配置parent 代码实现: <parent><groupId>org.springframework.boot ...

  2. SpringMVC路径匹配规则AntPathMatcher(转)

    SpringMVC的路径匹配规则是依照Ant的来的. 实际上不只是SpringMVC,整个Spring框架的路径解析都是按照Ant的风格来的. 在Spring中的具体实现,详情参见 org.sprin ...

  3. spring boot与spring cloud版本匹配关系

    Spring Cloud版本 在写本篇文章时,Spring Cloud版本演进情况如下: 版本名称 版本 Finchley snapshot版 Edgware snapshot版 Dalston SR ...

  4. SpringCloud实战小贴士:Zuul的路径匹配

    路径匹配 不论是使用传统路由的配置方式还是服务路由的配置方式,我们都需要为每个路由规则定义匹配表达式,也就是上面所说的path参数.在Zuul中,路由匹配的路径表达式采用了Ant风格定义. Ant风格 ...

  5. 路径匹配C++变量文件夹下所有文件

    改章节朋友在广东吃饭的时候突然想到的...最近就有想写几篇关于路径匹配的博客,所以回家到之后就奋笔疾书的写出来发表了 void ShowDir(char* dir) {   long Handle; ...

  6. Spring Cloud与Spring Boot版本匹配关系

    Spring Cloud与Spring Boot版本匹配关系 Spring Cloud与Spring Boot版本匹配关系 Spring Cloud Spring Boot Finchley 兼容Sp ...

  7. Nginx 系列:Nginx 实践,location 路径匹配

    1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2. location 路径匹配 2.1. 匹配规则 location 路径正则匹配: 2.2. 匹配优先级 路径匹配, ...

  8. Ant 风格的路径匹配模式

    目录 1. Ant 风格 2. Ant 风格示例 1. Ant 风格 Apache Ant 路径匹配模式(目录的模式匹配)中主要有三种通配符: 通配符 说明 ? 匹配任何单字符 * 匹配0或者任意数量 ...

  9. Go 学习笔记(53)— Go 标准库之 path(判断绝对路径、拆分目录和文件、组合路径、返回路径目录、获取路径最后文件名、获取文件扩展名、路径匹配规则)

    1. 概述说明 import "path" path 实现了对斜杠分隔的路径的实用操作函数. 2. 主要函数 2.1 func IsAbs func IsAbs(path stri ...

最新文章

  1. javascript_JavaScript疲劳疲劳
  2. IDEA修改module的名字
  3. Django之部署NGINX+uWSGI
  4. 计算机科学导论第二章,计算机科学导论第二章.doc
  5. 素数-试除法和埃式筛选法模板
  6. BZOJ2081 [Poi2010]Beads
  7. Hadoop概念学习系列之Hadoop 是什么?(一)
  8. C++查漏补缺之流状态
  9. BERT源码分析(二)
  10. python3.4.3如何获取文件的路径
  11. Ubuntu系统安装VMware Tools的简单方法
  12. 嵌入式专业名词整理(以后会不断完善)
  13. 惠新宸php教程_【转载】惠新宸:PHP在百度的应用现状及展望
  14. office2007在ppt中插入文件对象(可以单击打开)
  15. java快速排序的时间复杂度_程序猿必备排序算法及其时间复杂度分析
  16. linux 怎么撤销移动命令,Linux的常用命令
  17. 报名系统网页导出html,教资报名系统提示网站兼容性怎么办 ie浏览器兼容性操作流程...
  18. 传统的冒泡排序(一)
  19. 使用队列 模拟跳舞舞伴Java实现
  20. C++ 狂热分子:你会为了性能而牺牲代码简洁性吗?

热门文章

  1. php简单的登录界面,PHP实现简单用户登录界面
  2. easyui前端实现多选框_EasyUI实现下拉框多选功能
  3. 安卓linux终端 计算,5种在Linux终端中进行算术运算的方法
  4. lua table insert_超详细的sysbench oltp-数据库性能测试中lua脚本解剖
  5. recyclerview不显示_Android studio中导入v7包,使用recyclerview前的操作
  6. 南京理工大学计算机专业考研,2020南京理工大学计算机考研初试科目、参考书目、复试详情汇总...
  7. 图解PCB板元器件焊接流程
  8. NYOJ-疯牛(贪心)
  9. Matplotlib - bar(条形图)
  10. 红黑树插入和删除的各种情况分析