-
servlet容器对url的匹配过程
- 精确路径匹配
- 最长路径匹配。例子:servletA的url-pattern为/test/,而servletB的url-pattern为/test/a/,此 时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。
- 扩展匹配,如*.action
- 如果前面没有找到对应的路径,如果应用定义了一个default servlet,则容器会将请求丢给default servlet
-
filter对url的匹配过程
对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一 个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。
-
web.xml url-pattern详解
在web.xml文件中,以下语法用于定义映射:
- 以”/’开头和以”/*”结尾的是用来做路径映射的。
- 以前缀”*.”开头的是用来做扩展映射的。
- “/” 是用来定义default servlet映射的。
- 剩下的都是用来定义详细映射的。比如: /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
原文地址:https://www.cnblogs.com/zlt666/p/10579134.html
时间: 2024-08-14 17:08:08