簡介
Servlet的框架是由兩個Java包組成:javax.servlet和javax.servlet.http。 在javax.servlet包中定義了所有的Servlet類都必須實現或擴展的的通用接口和類,在javax.servlet.http包中定義了採用HTTP通信協定的HttpServlet類。
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
一般情況下不需要覆蓋這個方法.