Sun 公司提供了一系列的接口和類(lèi)用于 Servlet
技術(shù)的開(kāi)發(fā),其中最重要的接口是 javax.servlet.Servlet
。在 Servlet
接口中定義了 5 個(gè)抽象方法,如表 1 所示。
Servlet接口的抽象方法
方法聲明 | 功能描述 |
---|---|
void init(ServletConfig config) | 容器在創(chuàng)建好 Servlet 對(duì)象后,就會(huì)調(diào)用此方法。該方法接收一個(gè) ServletConfig 類(lèi)型的參數(shù),Servlet 容器通過(guò)該參數(shù)向 Servlet 傳遞初始化配置信息 |
ServletConfig getSendetConfig() | 用于獲取 Servlet 對(duì)象的配置信息,返回 Servlet 的 ServletConfig 對(duì)象 |
String getServletInfo() | 返回一個(gè)字符串,其中包含關(guān)于 Servlet 的信息,如作者、版本和版權(quán)等信息 |
voidservice (ServletRequest request,ServletResponse response) | 負(fù)責(zé)響應(yīng)用戶的請(qǐng)求,當(dāng)容器接收到客戶端訪問(wèn) Servlet 對(duì)象的請(qǐng)求時(shí),就會(huì)調(diào)用此方法。容器會(huì)構(gòu)造一個(gè)表示客戶端請(qǐng)求信息的 ServletRequest 對(duì)象和一個(gè)用于響應(yīng)客戶端的 ServletResponse 對(duì)象作為參數(shù)傳遞給 service() 方法。在 service() 方法中,可以通過(guò) ServletRequest 對(duì)象得到客戶端的相關(guān)信息和請(qǐng)求信息,在對(duì)請(qǐng)求進(jìn)行處理后,調(diào)用 ServletResponse 對(duì)象的方法設(shè)置響應(yīng)信息 |
void destroy() | 負(fù)責(zé)釋放 Servlet 對(duì)象占用的資源。當(dāng)服務(wù)器關(guān)閉或者 Servlet 對(duì)象被移除時(shí),Servlet 對(duì)象會(huì)被銷(xiāo)毀,容器會(huì)調(diào)用此方法 |
在表 1 中,列舉了 Servlet 接口中的五個(gè)方法,其中 init()、service() 和 destroy() 方法可以表現(xiàn) Servlet 的生命周期,它們會(huì)在某個(gè)特定的時(shí)刻被調(diào)用。
針對(duì) Servlet 的接口,Sun 公司提供了兩個(gè)默認(rèn)的接口實(shí)現(xiàn)類(lèi):GenericServlet
和HttpServlet
。其中,GenericServlet
是一個(gè)抽象類(lèi),該類(lèi)為 Servle
t 接口提供了部分實(shí)現(xiàn),它并沒(méi)有實(shí)現(xiàn) HTTP 請(qǐng)求處理。
HttpServlet
是 GenericServlet
的子類(lèi),它繼承了 GenericServlet
的所有方法,并且為 HTTP 請(qǐng)求中的 GET
和 POST
等類(lèi)型提供了具體的操作方法。通常情況下,編寫(xiě)的 Servlet
類(lèi)都繼承自 HttpServlet
,在開(kāi)發(fā)中使用的也是 HttpServlet
對(duì)象。
HttpServlet 類(lèi)中包含兩個(gè)常用方法,這兩個(gè)方法的說(shuō)明如表 2 所示。
HttpServlet 類(lèi)的常用方法
方法聲明 | 功能描述 |
---|---|
protected void doGet (HttpServletRequest req, HttpServletResponse resp) | 用于處理 GET 類(lèi)型的 HTTP 請(qǐng)求的方法 |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) | 用于處理 POST 類(lèi)型的 HTTP 請(qǐng)求的方法 |
HttpServlet
主要有兩大功能,具體如下。
- 根據(jù)用戶請(qǐng)求方式的不同,定義相應(yīng)的
doXxx()
方法處理用戶請(qǐng)求。例如,與GET
請(qǐng)求方式對(duì)應(yīng)的doGet()
方法,與POST
方式對(duì)應(yīng)的doPost()
方法。 - 通過(guò) service() 方法將 HTTP 請(qǐng)求和響應(yīng)分別強(qiáng)轉(zhuǎn)為
HttpServletRequest
和HttpServletResponse
類(lèi)型的對(duì)象。
需要注意的是,由于HttpServlet
類(lèi)在重寫(xiě)的 service()
方法中,為每一種 HTTP
請(qǐng)求方式都定義了對(duì)應(yīng)的 doXxx()
方法,因此,當(dāng)定義的類(lèi)繼承 HttpServlet
后,只需要根據(jù)請(qǐng)求方式重寫(xiě)對(duì)應(yīng)的 doXxx()
方法即可,而不需要重寫(xiě)service()
方法。