servlet總結二

1、servlet生命週期

1、網站中所有的servlet介面的實現類的例項物件,只能由http伺服器負責建立。開發人員不能手動建立servlet介面實現類的例項物件。

2、在預設情況下,http伺服器接收到當前servlet介面實現類第一次請求時,會自動建立這個servlet介面實現類的例項物件。

3、在手動配置情況下,要求http伺服器在啟動的時候自動建立某個servlet介面實現類的例項物件

login

com。bjpowernode。controller。LoginServlet

1

4、在http伺服器執行期間,一個servlet介面實現類只能被建立一個實現類物件。

5、在http伺服器關閉時刻,會將所有的servlet實現類物件進行銷燬。

2、HttpServletRespones介面

一:介紹

1、HttpServletRespones介面來自於Servlet規範中,在tomcat中存在於servlet-api。jar中。

2、HttpServletRespones介面實現類由Http伺服器負責提供

3、HttpServletRespones介面負責將doGet/doPost方法執行結果寫入到【響應體】交給遊覽器。

4、開發人員習慣於將HttpServletRespones介面修飾的物件稱為【響應物件】

二:主要功能

1、將執行結果以二進位制的形式寫入到【響應體】

2、設定響應頭[content-type]屬性值,從而控制遊覽器使用對應編譯器將響應體二進位制資料編譯為[文字,圖片,影片,命令]

3、設定響應頭中【location】屬性,將一個請求地址賦值給location,從而控制遊覽器向指定伺服器傳送請求。

三:注意點

1、out。writer方法在將結果寫入到響應體的時候,如果結果是一個數字,那麼會將該數字對應的ASCII碼寫入到響應體中。 比如寫入數字97,那麼遊覽器展示的是 a

2、在實際開發中,我們都是使用out。print()方法,該方法不會將數字轉換成ASCII碼。會將結果原樣輸出。

3、遊覽器根據響應包中的響應頭裡面的content-type屬性的值,來解析相應體中的二進位制資料。在預設的情況下content-type屬性的值預設為 “text”,此時遊覽器會採用【文字編譯器】對響應體中的二進位制進行編譯。只會將響應體裡面的二進位制,以文字的形式進行輸出展示,不會解析html標籤的命令。

解決辦法:一定要在拿到輸出流之前,透過響應物件對響應頭中的content-type屬性進行一次重新賦值用於指定遊覽器採用正確的編譯器。content-type=“text/html”

respones。setContentType(“text/html”);

4、響應頭中的charset屬性值預設等於IOS-8859-1,那麼在不做修改的情況下。遊覽器會使用IOS-8859-1的字元編碼對響應體中的二進位制中文進行解碼操作,但是中文解碼需要UTF-8所以這時候就會出現亂碼的情況。解決辦法:respones。setContentType(“text/html;charset=UTF-8”);

5、重定向:透過伺服器端控制遊覽器的傳送請求。

respones。sendRedirect(“http://www。baidu。com”);//透過響應物件,將地址賦值給響應頭中的location屬性。

遊覽器接收到響應包之後,發現相應頭中存在location屬性,自動透過位址列向location指定的網站傳送請求。