路径匹配规则,servlet-mapping的url匹配规则,以及优先级

这篇博客探讨了Servlet的路径匹配规则,包括精准匹配、部分路径匹配、后缀名匹配和缺省匹配,通过实验展示了不同规则的匹配顺序。文章提到了/*.do和/*的区别,前者匹配所有请求但可能导致404错误,后者优先级较高,常用于过滤器。在SpringMVC中,DispatcherServlet配置为/以避免匹配JSP,而Interceptor主要拦截webapp根目录下的请求。

如何区别这些路径匹配规则

作为一个java小白(*__*) 嘻嘻,最近在学习,查询了一下还是不大明白,然后(还是自己动手实验吧 好嗨哟!!)根据日常在这记录一下

   精准路径匹配:/abc/test.do
   部分路径匹配:/abc/*
   路径匹配(匹配所有路径):/*
   后缀名匹配:*.do
   缺省匹配:/

在这里插入图片描述
同时设置五种匹配规则
按顺序先后输入网址
1.http://localhost:8080/myapp/test/test.do (test/test.do 精准匹配
2.http://localhost:8080/myapp/test/test2.do (test/* 部分路径匹配
3.http://localhost:8080/myapp/test2/test2.do (/* 路径匹配(匹配所有路径))
4.http://localhost:8080/myapp/test2/test2.png (/* 路径匹配(匹配所有路径))
控制台打印servlet所接收的顺序如图在这里插入图片描述

由这里得出匹配的顺序 精准路径匹配>部分路径匹配>路径匹配(路径匹配了“/*”表示所有 后面的3和4网址的匹配路径等级都比“/*”低 ,优先匹配上了“/*” )

接下来注释掉   为“/*” 的servlet  ,再次输入

http://localhost:8080/myapp/test2/test2.do (*.do 后缀名匹配
http://localhost:8080/myapp/test2/test2.png (/ 缺省匹配
在这里插入图片描述

得出 后缀名匹配>缺省匹配

最后结论: 精准路径匹配>部分路径结合通配符匹配>路径匹配(匹配所有路径)>后缀名匹配>缺省匹配

``

那么问题来了好像 //* 都可以匹配所有请求,有啥区别捏, 个人觉的就是 /* 匹配等级高点像什么带后缀的也会被匹配进来 例如本该交由tomcat的 .jsp也会被匹配进来,但是程序中又没有对应的处理方法,会报404这样的错误。
而配成 / 的话,后缀名匹配等级较大 所以不会匹配 / 而是会优先匹配 tomcat的web.xml中的.jsp 交由tomcat处理。

一般只有过滤器才会设置成/*
在springmvc框架中 DispatcherServlet一般设置为 <url-pattern>/</url-pattern> 这样jsp不会被匹配但是动作可以匹配

SpringMVC的interceptor拦截器的匹配规则。
<mvc:mapping path="/*"/> 拦截的是webapp根目录下的一些文件,而不能拦截webapp/xx/xx.jsp这类子目录中的
<mvc:mapping path="/**"/> 即可以拦截当前目录及其子目录下的所有请求。
在这里插入图片描述

感觉越记录越多,就到这叭
作为一名java小白↖( ^ω ^)↗,随手记录遇到的问题
如有错误的地方希望大神指出来好嗨有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值