解决tomcat关于配置servlet的url模式的问题

  介绍

这篇文章主要讲解了解决tomcat关于配置servlet的url模式的问题,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

tomcat在配置web . xml的时候,servlet是一个比较重要的问题,在这里讨论一下servlet中的几个痛点

    <李>,servlet url模式的匹配问题 <李> url模式中<代码>/和<代码>/*> <李> url模式的优先级问题 <李>根路径<代码>/的匹配问题

<代码> url模式>

<强> 1.1精确匹配

<代码> & lt; url-pattern> 中配置的项必须与url完全精确匹配。

代码举例:point_down:

& lt; servlet-mapping>   & lt; servlet-name> MyServlet   & lt; url-pattern>/型/detail.html   & lt; url-pattern>/demo.html   & lt; url-pattern>/table   & lt;/servlet-mapping>

当在浏览器中输入如下几种url时,都会被匹配到该servlet

<代码> http://10.43.11.143/myapp/kata/detail。html代码
<代码> http://10.43.11.143/myapp/demo.html

<代码> http://10.43.11.143/myapp/table

注意:

<代码> http://10.43.11.143/myapp/table/是非法的url,不会被当作http://10.43.11.143/myapp/table <代码> 识别

另外上述url后面可以跟任意的查询条件,都会被匹配,如

<代码> http://10.43.11.143/myapp/table& # 63;你好>

<强> 1.2路径匹配

以“/弊址耐?并以“/*”结尾的字符串用于路径匹配

代码举例:point_down:

& lt; servlet-mapping>   & lt; servlet-name> MyServlet   & lt; url-pattern> * .jsp   & lt; url-pattern> * .action   & lt;/servlet-mapping>

路径以/user/开始,后面的路径可以任意。比如下面都的url会被匹配。

<代码> http://localhost: 8080/appDemo/user/users.html

<代码> http://localhost: 8080/appDemo/user/addUser.action

<代码> http://localhost: 8080/appDemo/user/updateUser.actionl

<强> 1.3后缀匹配

以“*。“开头的字符串被用于后缀匹配

代码举例:point_down:

& lt; servlet-mapping>   & lt; servlet-name> MyServlet   & lt; url-pattern> * .jsp   & lt; url-pattern> * .action   & lt;/servlet-mapping>

则任何扩展名为jsp或行动的网址请求都会匹配,比如下面都的url会被匹配

<代码> http://localhost: 8080/appDemo/user/users.jsp

<代码> http://localhost: 8080/appDemo/toHome.action

注意:路径和后缀匹配无法同时设置

注意:路径和扩展名匹配无法同时设置,比如下面的三个都是非法的,如果设置,启动tomcat服务器会报错。

<代码> & lt; url-pattern>/型/* .jsp

<代码> & lt; url-pattern>/* .jsp

<代码> & lt; url-pattern>他* .jsp

几个实例:point_down:,不明白请看本文第三章

解决tomcat关于配置servlet的url模式的问题

<代码> & lt; url-pattern>/& lt;/url-pattern>

<代码> & lt; url-pattern>/* & lt;/url-pattern>

先说<代码>/* ,<代码>/*> 注意!我说的是路径匹配),路径匹配的优先级是从长到短的(具体请看本文第三章),所以说它是精度最低的路径匹配。很多博客中说它的特点是匹配<代码> *。jsp代码> /* 本身就是路径匹配,它当然可以匹配<代码> *。jsp代码 .

再说<代码>/,<代码>/ <强>是匹配优先级最低的匹配强,当一个url和所有的<代码> url模式> /匹配,根本就没有什么<代码> *。jsp代码的限制,大家之所以产生了(客观上也确实是这样)<代码>/不会匹配<代码> *。jsp代码但是<代码>/*> *。jsp代码的原因是在tomcat/conf/网络。xml里面单独配置了<代码> *。jsp代码

解决tomcat关于配置servlet的url模式的问题