码迷,mamicode.com
首页 > 编程语言 > 详细

servlet与springmvc的url设置方式及映射规则

时间:2019-03-22 17:00:45      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:csdn   样式   round   出现   int   应用   文件   方法   esc   

  • servlet容器对url的匹配过程

  1. 精确路径匹配
  2. 最长路径匹配。例子:servletA的url-pattern为/test/,而servletB的url-pattern为/test/a/,此 时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。
  3. 扩展匹配,如*.action
  4. 如果前面没有找到对应的路径,如果应用定义了一个default servlet,则容器会将请求丢给default servlet
  • filter对url的匹配过程

对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一 个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。

  • web.xml url-pattern详解

在web.xml文件中,以下语法用于定义映射:

  1. 以”/’开头和以”/*”结尾的是用来做路径映射的。
  2. 以前缀”*.”开头的是用来做扩展映射的。
  3. “/” 是用来定义default servlet映射的。
  4. 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action

所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。

  • Spring MVC中的路径匹配

Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法,这些可以组合出很多种灵活的路径模式
|Wildcard | Description |
| ? | 匹配任何单字符|
| * | 匹配0或者任意数量的字符 |
| ** | 匹配0或者更多的目录 |

 

Path Description

/app/*.x    匹配(Matches)所有在app路径下的.x文件         
/app/p?ttern    匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern         
/**/example    匹配(Matches) /app/example, /app/foo/example         
/app/**/dir/file.    匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java
/**/*.jsp    匹配(Matches)任何的.jsp 文件

原文参考:
https://blog.csdn.net/qiaqia609/article/details/48825711
https://blog.csdn.net/qq_26878363/article/details/81635139

servlet与springmvc的url设置方式及映射规则

标签:csdn   样式   round   出现   int   应用   文件   方法   esc   

原文地址:https://www.cnblogs.com/zlt666/p/10579134.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!