Servlet的URL映射规则

一、Servlet容器对URL的匹配过程:

  当客户端发送一个请求到Servlet容器的时候,容器会将请求的URL减去当前web应用的路径作为Servlet的映射,找到符合的Servlet并进行处理响应,如访问的url为http://localhost:8080/FirstWebDemo/index.jsp,那么容器得到Servlet的映射为/index.jsp,根据匹配规则匹配成功后则无视其他的Servlet,其中。

二、路径匹配的类别及匹配规则:

  1. 精确路径匹配

  /first                     http://localhost:8080/ProjectName/first

  /xxx/demoServlet          http://localhost:8080/ProjectName/xxx/demoServlet

  2. 模糊路径匹配

  /*                                 http://localhost:8080/ProjectName/任意路径

  /test/*                          http://localhost:8080/ProjectName/test/任意路径

  *.后缀名                         http://localhost:8080/ProjectName/任意路径.do   如:*.do      *.action        *.html(伪静态)

  3. 匹配规则

  (1) Servlet的映射要么以/开头,要么以*开头,只写例如news是非法路径,同时写两个模糊匹配是非法路径,例如/news/*.action。

  (2) 当输入的URL有多个Servlet同时匹配情况下:

    优先级最高的是精确路径匹配,其次为模糊路径匹配,例如Servlet1的映射为/index.jsp,Servlet2的映射为/*,那么客户端发出请求http://localhost/index.jsp后会和/index.jsp进行匹配,匹配成功后边无视其它Servlet。

    最长路径优先匹配。在同等匹配条件下,即都为精确路径匹配或模糊匹配,例如Servlet1的映射为/news/*,而Servlet2的映射为/news/normalnews/*,那么客户端发出请求http://localhost/news/normalnews后会和Servlet2匹配。

    模糊匹配中的后缀名结尾的映射优先级最低。

注意:/是servlet中预定义好的一个映射路径:servlet的缺省映射路径(<url-pattern>/</url-pattern>)是在tomcat服务器内置的一个映射路径。该路径对应的是一个DefaultServlet(缺省Servlet)。这个缺省的Servlet的作用是用于解析web应用的静态资源文件。总之,先找动态资源,当动态资源不存在的时候,再找静态资源。

参考自:https://www.cnblogs.com/fnz0/p/5586019.html

猜你喜欢

转载自www.cnblogs.com/chenloveslife/p/8996643.html