Java Web學習---Servlet學習(學習步驟介紹)
Servlet學習的大綱:
l 1. servlet概念及相關介面簡介
l 2. servet 執行過程
l 3. servlet路徑對映
l 4. 預設servlet --應用
l 5. servlet生命週期(重點) --理解(重點)
l 6. Servlet自動載入
l 7. Servlet執行緒安全
l 8. servletConfig物件
l 9. Servlet相關介面詳解
l 10. ServletContext物件 --知識點
1 如何開發一個Servlet
1.1 步驟:
1)編寫java類,繼承HttpServlet類
2)重新doGet和doPost方法
3)Servlet程式交給tomcat伺服器執行!!
3.1 servlet程式的class碼拷貝到WEB-INF/classes目錄
3.2 在web.xml檔案中進行配置
<!-- 配置一個servlet --> <!-- servlet的配置 --> <servlet> <!-- servlet的內部名稱,自定義。儘量有意義 --> <servlet-name>FirstServlet</servlet-name> <!-- servlet的類全名: 包名+簡單類名 --> <servlet-class </servlet> <!-- servlet的對映配置 --> <servlet-mapping> <!-- servlet的內部名稱,一定要和上面的內部名稱保持一致!! --> <servlet-name>FirstServlet</servlet-name> <!-- servlet的對映路徑(訪問servlet的名稱) --> <url-pattern>/first</url-pattern> </servlet-mapping> |
問題:訪問次URL: http://localhost:8080/day10/first
前提: tomcat伺服器啟動時,首先載入webapps中的每個web應用的web.xml配置檔案。
http://: http協議
localhost: 到本地的hosts檔案中查詢是否存在該域名對應的IP地址
127.0.0.1
8080: 找到tomcat伺服器
/day10 在tomcat的webapps目錄下找 day10的目錄
/first 資源名稱。
1)在day10的web.xml中查詢是否有匹配的url-pattern的內容(/first)
2)如果找到匹配的url-pattern,則使用當前servlet-name的名稱到web.xml檔案中查詢是否相同名稱的servlet配置
3)如果找到,則取出對應的servlet配置資訊中的servlet-class內容:
字串: gz.itcast.a_servlet.FirstServlet
通過反射:
a)構造FirstServlet的物件
b)然後呼叫FirstServlet裡面的方法
2 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同時被匹配的情況下:
3.1 精確匹配優先。(長的最像優先被匹配)
3.2 以後綴名結尾的模糊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錯誤頁面。
結論: 先找動態資源,再找靜態資源。