複製鏈接
請複製以下鏈接發送給好友

HttpServlet

鎖定
servlet.http包中定義了採用HTTP通信協議的HttpServlet類。
外文名
HttpServlet
性    質
網絡框架
組    成
servlet和servlet.http
採用協議
HTTP通信協議

目錄

HttpServlet簡介

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客户。

HttpServlet基本介紹

下面介紹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協議要求響應碼和所有的頭字段都在任何響應體之前返回.

HttpServlet用法

下面就對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
一般情況下不需要覆蓋這個方法.