tomcat urlpattern /与/*的区别

百度上查找了很多,但是那些第一行第二行的都错了,还差点误导我。


/*可以拦截所有url,包括带后缀的,这个他们没讲错。

但是他们说/的url-pattern不能匹配带后缀的url,比如.html,.jsp等等,这个当时就让我感觉非常困惑。

使用spring mvc的DispatherServlet的url-pattern不就是经常用/作为匹配规则的吗?

而且DispatherServlet一样可以收到各种带后缀的url请求,然后让controller处理,一直都这么用。

然后又是到处查资料,终于搞明白了:

tomcat或者其他容器,都有一个默认servlet,当其他servlet的url-pattern都不匹配请求url时,该请求就会交给默认servlet处理

默认servlet能够处理 静态资源、HTTP缓存请求,媒体(音频/视频)数据流和文件下载。

然后呢,默认servlet的url-pattern就是/,当你的servlet的url-pattern用/匹配,那么就代表你的servlet替代了默认servlet了。

那如果需要处理静态资源什么的,你的servlet就要自己处理了。

springmvc 的DispatherServlet就是这样,静态资源什么的也是自己处理,或者在内部使用容器默认的servlet

spring mvc自己处理静态资源就是我们熟悉的<mvc:resource  ...../>

spring mvc调用默认servlet处理也是熟悉的<mvc:default-servlet-handler>.


所以,最后总结,/和/*的区别就是:/*的匹配规则比/更详细,所以,如果有/*与/同时存在,那么/*会优先匹配。

一般如果我们自己写servlet,那url-pattern是尽量不要设置成/以及/*,道理应该显而易见的,除非专门的框架,否则正常的一个servlet怎么可能会去处理所有请求?

一般情况下建议:/*给filter使用,/给mvc框架实现的servlet使用


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值