HttpServlet

HttpServlet

servlet.http包中定義了採用HTTP通信協議的HttpServlet類。

簡介


Servlet的框架是由兩個Java包組成:javax.servlet和javax.servlet.http。在javax.servlet包中定義了所有的Servlet類都必須實現或擴展的的通用介面和類。
Servlet的框架的核心是javax.servlet.Servlet介面,所有的Servlet都必須實現這一介面。在Servlet介面中定義了5個方法,其中有3個方法代表了Servlet的生命周期:
init方法,負責初始化Servlet對象
service方法,負責響應客戶的請求
destroy方法,當Servlet對象退出生命周期時,負責釋放佔有的資源
Servlet被設計成請求驅動的.Servlet的請求可能包含多個數據項,當Web容器接收到某個Servlet請求時,Web容器把請求封裝成一個HttpServletRequest對象,然後把對象傳給Servlet的對應的服務方法.
HTTP的請求方式包括DELETE,GET,OPTIONS,POST,PUT和TRACE,在HttpServlet類中分別提供了相應的服務方法,它們是,doDelete(),doGet(),doOptions(),doPost(), doPut()和doTrace().
HttpServlet容器響應Web客戶請求流程如下:
1)Web客戶向Servlet容器發出Http請求;
2)Servlet容器解析Web客戶的Http請求;
3)Servlet容器創建一個HttpServletRequest對象(繼承於ServletRequest),在這個對象中封裝Http請求信息;
4)Servlet容器創建一個HttpServletResponse對象;
5)Servlet容器調用HttpServlet的service方法,把HttpServletRequest和HttpServletResponse對象作為service方法的參數傳給HttpServlet對象;
6)HttpServlet調用HttpServletRequest的有關方法,獲取HTTP請求信息;
7)HttpServlet調用HttpServletResponse的有關方法,生成響應數據;
8)Servlet容器把HttpServlet的響應結果傳給Web客戶。

介紹


下面介紹HTTP請求和響應,一個HTTP請求包含請求方法,請求URL,頭欄位和請求體.HTTP1.1定義了下面的請求方法:
1. GET :獲取由請求URL標識的資源
2. POST :向Web伺服器發送無限制長度的數據
3. PUT :存儲一個資源到請求的URL
4. DELETE :刪除由URL標識的資源
5. HEAD :返回URL標識的頭信息
6. OPTIONS :返回伺服器支持的HTTP方法
7. TRACE :返回TRACE請求附帶的頭欄位
HTTP響應包括響應碼,頭欄位和響應體.HTTP協議要求響應碼和所有的頭欄位都在任何響應體之前返回.

用法


下面就對Servlet各個服務方法做以介紹.
1. doGet() :調用伺服器的資源,並將其作為響應返回給客戶端.doGet()調用在URL里顯示正在傳送給Servlet的數據,這在系統的安全方面可能帶來一些問題,比如說,用戶登錄時,表單里的用戶名和密碼需要發送到伺服器端,doGet()調用會在瀏覽器的URL里顯示用戶名和密碼.
2. doPost() :它用於把客戶端的數據傳給服務端,使用它可以以隱藏方式給伺服器端發送數據.Post適合發送大量數據.
3. doPut() :調用和doPost()相似,並且它允許客戶端把真正的文件存放在伺服器上,而不僅僅是傳送數據.
4. doDelete() :它允許客戶端刪除伺服器端的文件或者Web頁面.它的使用非常少.
5. doHead() :它用於處理客戶端的Head調用,並且返回一個response.當客戶端只需要響應的Header時,它就發出一個Header請求。這種情況下客戶端往往關心響應的長度和響應的MIME類型.
6. doOptions():它用於處理客戶端的Options調用,通過這個調用,客戶端可以獲得此Servlet支持的方法。如果Servlet覆蓋了doPost()方法,那麼將返回:
Allow:POST,TRACE,OPTIONS,HEAD
一般情況下不需要覆蓋這個方法.