Servlet執行原理及404、500、405異常原因和解決方法總結
一、Servlet執行原理
比如,在瀏覽器位址列輸入
http://ip:port/web01/hello
整個通訊流程如下圖所示:分步解釋:
1、瀏覽器依據ip,port建立與servlet容器(容器同時也是一個簡單的web伺服器)之間的連線。
2、瀏覽器將請求資料打包(按照http協議,該資料包也稱為請求資料包)。
3、瀏覽器傳送請求資料包給容器。
4、容器收到請求資料包之後,解析該資料包
5、將4中解析之後得到的資料封裝到request物件上,同時,容器還要建立response物件。
6、容器要依據請求資源路徑("/web01/hello")找到servlet的配置,然後建立servlet物件。
7、容器呼叫servlet物件的service方法。容器會將事先建立好的request,response作為引數傳遞給service方法。
8-10、在service方法裡面,可以通過request物件獲得請求引數,並進行相應的處理,處理結果會放到response物件裡面。
11-13、容器從response物件中取出處理結果,然後打包(按照http協議,該資料包稱之為響應資料包)。再將響應資料包傳送給瀏覽器。
14-15、瀏覽器收到響應資料包之後,解析處理結果,然後生成相應的頁面。
其實Java Web開發人員需要手動編寫程式碼的部分主要在8-10,因為其他部分工作已被web伺服器和開發工具完成。
二、常見異常及處理辦法
(1)404
伺服器依據請求資源路徑找不到對應的資源。
1)錯誤原因:
a,請求地址寫錯了
b,<servlet-name>不一致
2)解決方式:
a,依據http://ip:port/appname/servlet-url檢查請求地址。
b,檢查web.xml檔案。
(2)500
執行時出錯。
1)錯誤原因:
a,配置檔案類名寫錯了。
b,沒有繼承HttpServlet。
c,程式程式碼寫錯。
2)解決方式:
a,檢查web.xml檔案。servlet-class中有沒有把類名寫錯(必須是完整類名)
b,檢查程式程式碼。
(3)405
方法異常。
1)錯誤原因:
service方法的簽名不正確
2)解決方式:
檢查service方法的簽名(方法名、返回型別、引數型別、異常型別)。