今天下午没课,细学了有关于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. Modern CSV中文版
  2. MVP介绍以及优化封装
  3. Android 开发工具类 36_ getSimSerial
  4. react领域里面jsx中的style的值为什么放到了{}中
  5. GoJS 绘图 (二) :TextBlocks
  6. matlab 给参数赋值,未对输出参数赋值 求大神帮忙解惑
  7. 车辆销售系统用例_销售管理系统的UML分析与设计
  8. ckplayer 网页视频播放插件
  9. DUBBO启动为啥不用web容器启动
  10. 7月编程语言排行榜揭晓!
  11. 高德地图显示服务器加载失败,常见问题
  12. Mac OS X 窗口操作快捷键
  13. JQuery使用及基础原理解析相关笔记(三)
  14. 数据人之苦,你造吗?(转自知乎)
  15. AHK 键盘控制鼠标点击屏幕不同位置
  16. 2022年K1刷第三方固件教程
  17. 软件测试 6(等价类) --等价类测试
  18. 分析一下云ERP与本地ERP相比区别在哪里
  19. 基于Hmm模型和Viterbi算法的中文分词和词性标注
  20. CTF---Web---SQL注入---10---get传参的删减

热门文章

  1. 在oracle里面password密码为什么输入_刷机成功之后为什么还是需要输入 ID 密码?...
  2. gnu java_【Java学习笔记】修饰符
  3. c语言实现点在多边形内部,求教这个判断点是否在多边形内的C语言算法用的什么原理....
  4. cut out数据增强_ChIP-Seq数据分析(PE型)
  5. mysql update修改数据_MYsql如何用update语句修改数据,值得一看
  6. C++程序代码:利用【函数】——画正三角形、倒三角形
  7. 【转】QTableView 小结
  8. 十款最常见的Linux发行版及目标用户
  9. 周鸿祎:网络安全面前 没有国家可以袖手旁观
  10. CentOS图形界面和命令行切换