天天看點

Servlet的映射路徑

<servlet-mapping>
      <!-- servlet的内部名稱,一定要和上面的内部名稱保持一緻!! -->
      <servlet-name>FirstServlet</servlet-name>
      <!-- servlet的映射路徑(通路servlet的名稱) -->
      <url-pattern>/first</url-pattern>
  </servlet-mapping>           
url-pattern                   浏覽器輸入           
精确比對             /first                 http://localhost:8080/day10/first
                    /itcast/demo1          http://localhost:8080/day10/itcast/demo1

模糊比對             /*                   http://localhost:8080/day10/任意路徑
                    /itcast/*               http://localhost:8080/day10/itcast/任意路徑
                    *.字尾名              http://localhost:8080/day10/任意路徑.do
                    *.do
                    *.action
                    *.html(僞靜态)           

注意:

1)url-pattern要麼以 / 開頭,要麼以*開頭。  例如, itcast是非法路徑。
2)不能同時使用兩種模糊比對,例如 /itcast/*.do是非法路徑
3)當有輸入的URL有多個servlet同時被比對的情況下:
4)精确比對優先。(長的最像優先被比對)
5)以字尾名結尾的模糊url-pattern優先級最低!!!           

3 servlet預設路徑

servlet的預設路徑(<url-pattern>/</url-pattern>)是在tomcat伺服器内置的一個路徑。該路徑對應的是一個DefaultServlet(預設Servlet)。這個預設的Servlet的作用是用于解析web應用的靜态資源檔案。
           

問題: URL輸入

http://localhost:8080/day10/index.html

如何讀取檔案????

1)到目前day10應用下的web.xml檔案查找是否有比對的url-pattern。
    2)如果沒有比對的url-pattern,則交給tomcat的内置的DefaultServlet處理
    3)DefaultServlet程式到day10應用的根目錄下查找是存在一個名稱為index.html的靜态檔案。
    4)如果找到該檔案,則讀取該檔案内容,傳回給浏覽器。
    5)如果找不到該檔案,則傳回404錯誤頁面。
           

結論: 先找動态資源,再找靜态資源。

繼續閱讀