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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值