【Servlet】web.xml中url-pattern的用法


目錄結構:

contents structure [+]

一.url-pattern的三種寫法

  1. 精確匹配。以"/"開頭,加上servlet名稱。
    Java代碼 
    1. /ad  
     
  2. 路徑匹配。以"/"開頭,加上通配符"*"。
    Java代碼 
    1. /*  
     
  3. 擴展名匹配。以通配符"*"開頭,加上擴展名。
    Java代碼 
    1. *.action  
     

二.servlet匹配規則

  1. 先精確匹配,再路徑匹配。servlet-mapping1:<url-pattern>/ad</url-pattern>,servlet-mapping2:<url-pattern>/*</url-pattern>。當一個請求http://localhost:8080/ad來的時候,servlet-mapping1匹配到,不再用servlet-mapping2匹配。
  2. 路徑匹配的時候,先最長路徑匹配,再最短路徑匹配。servlet-mapping1:<url-pattern>/ad/uplaod.jsp</url-pattern>,servlet-mapping2:<url-pattern>/ad/*</url-pattern>。當一個請求http://localhost:8080/ad/upload.jsp來的時候,servlet-mapping1匹配到,不再用servlet-mapping2匹配。
  3. 至於擴展名匹配,就是單獨於精確匹配和匹配的一類了。struts2的擴展名就是.action,所以http://localhost:8080/ad.action會被servlet-mapping:<url-pattern>*.action</url-pattern>匹配到。
  4. 以上都找不到servlet,就用默認的servlet,配置為<url-pattern>/</url-pattern>。

 

三. filter匹配規則

    1. 順着web.xml定義的filter順序匹配,匹配到了就開始filter。
    2. 有幾個就匹配幾次filter幾次。
          <filter>  
              <filter-name>encodeFilter</filter-name>  
              <filter-class>com.skylark.common.util.EncodeFilter</filter-class>  
          </filter>  
          <filter-mapping>  
              <filter-name>encodeFilter</filter-name>  
              <url-pattern>/*</url-pattern>  
          </filter-mapping>  
        
          <filter>  
              <filter-name>initSessionFilter</filter-name>  
              <filter-class>com.skylark.service.servlet.InitSessionFilter</filter-class>  
          </filter>  
          <filter-mapping>  
              <filter-name>initSessionFilter</filter-name>  
              <url-pattern>/*</url-pattern>  
          </filter-mapping>

      任何請求過來的時候,都會先encode,然后initSession。

四,語法錯誤的后果

如果匹配符出現語法錯誤,那么項目是不能夠發布的。筆者的服務器報錯了如下的錯誤:

Server Tomcat v8.5 Server at localhost failed to start.

五,原文鏈接

點我查看原文

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM