美文网首页
Servlet映射规则

Servlet映射规则

作者: kindol | 来源:发表于2018-07-22 18:44 被阅读0次

Servlet容器的URL匹配过程

  1. 发送请求url:http://localhost/test/abc
  2. Servlet容器将请求的url减去当前应用上下文的路径作为其url,也就去去掉http://localhost/test,剩下/abc用来作路径匹配。
  3. 按照一定的匹配规则只要有一个servlet匹配成功,就不会去理会其他的servlet(当然,filter是不同的)

url-pattern详解

  • 路径映射:以”/’开头和以”/*”结尾
  • 拓展映射:以前缀”*.”开头
  • default servlet:"/"
  • 精确映射:完全的url路径

匹配规则

Servlet共有四大匹配规则,

  • 精确路径匹配

    比如URL为http://localhost/test/abc,去掉上下文路径为/abc,如果 servletA 的url-pattern为 /abc,servletB的url-pattern为 /*,servletA完全匹配,则其他servlet不会再匹配

  • 最长路径匹配(跟同类相比的最长)

    如上URL,没有上下文路径,如果 servletA 的url-pattern为 /test/*,servletB的url-pattern为 /test/abc/*,根据最长路径,此时选择servletB

    但是,如果servletC的url-pattern为/test/abc,那么会选择servletC,完全匹配

  • 扩展匹配

    果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。如:servletA的url-pattern:*.action

  • 默认匹配

    如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet,default servlet的url-pattern为"/"

filter与url-pattern

对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一个filterFilter的处理顺序和filter-mapping在web.xml中定义的顺序相同

一个特例

/*.action会被tomcat认为是错误的匹配,因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。

相关文章

  • Servlet映射规则

    Servlet容器的URL匹配过程 发送请求url:http://localhost/test/abc Servl...

  • Servlet的映射规则

    例子: 若请求url为:localhost:8080/action/*.do 会调用第三个servlet-mapp...

  • Servlet中通配符详解

    对于如下的一些映射关系: Servlet1 映射到 /abc/* Servlet2 映射到 /* Servlet3...

  • Servlet2

    Servlet调用图 Servlet的细节 一个已经注册的Servlet可以被多次映射 Servlet映射的URL...

  • SpringMVC中Servlet拦截器匹配规则

    其实Spring 的Servlet拦截器匹配规则(即 ... )都可以自己定义,例:当映射为@RequestM...

  • Servlet学习4 -- Servlet一些细节

    Servlet的一些小细节 Servlet可以多重映射多重映射是指:同一个Servlet可以被映射成多个路径,客户...

  • Servlet学习笔记2: Servlet细节

    【目录】 Servlet多重映射 映射路径中使用通配符 Servlet是运行在...

  • SpringBoot2 - Servlet

    传统的Spring项目,配置Servlet需要在web.xml内添加对应的标签以及映射路径规则。 SpringBo...

  • Servlet虚拟路径--多重映射

    多重映射 多重映射实质上是为一个Servlet配置多个路径。 从Servlet3.0开始,配置Servlet支持注...

  • 1.servlet的介绍

    1.Servlet简介 2.Servlet开发的过程 3.Servlet的执行过程 4.Servlet的路径映射 ...

网友评论

      本文标题:Servlet映射规则

      本文链接:https://www.haomeiwen.com/subject/yohrmftx.html