Sun 公司提供了一系列的接口和類用于 Servlet 技術(shù)的開發(fā),其中最重要的接口是 javax.servlet.Servlet。在 Servlet 接口中定義了 5 個(gè)抽象方法,如表 1 所示。
表 1 Servlet接口的抽象方法
方法聲明 |
功能描述 |
---|---|
void init(ServletConfig config) |
容器在創(chuàng)建好 Servlet 對(duì)象后,就會(huì)調(diào)用此方法。該方法接收一個(gè) ServletConfig 類型的參數(shù),Servlet 容器通過該參數(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)容器接收到客戶端訪問 Servlet 對(duì)象的請(qǐng)求時(shí),就會(huì)調(diào)用此方法。容器會(huì)構(gòu)造一個(gè)表示客戶端請(qǐng)求信息的 ServletRequest 對(duì)象和一個(gè)用于響應(yīng)客戶端的 ServletResponse 對(duì)象作為參數(shù)傳遞給 service() 方法。 在 service() 方法中,可以通過 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ì)被銷毀,容器會(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)類:GenericServlet 和 HttpServlet。其中,GenericServlet 是一個(gè)抽象類,該類為 Servlet 接口提供了部分實(shí)現(xiàn),它并沒有實(shí)現(xiàn) HTTP 請(qǐng)求處理。
HttpServlet 是 GenericServlet 的子類,它繼承了 GenericServlet 的所有方法,并且為 HTTP 請(qǐng)求中的 GET 和 POST 等類型提供了具體的操作方法。通常情況下,編寫的 Servlet 類都繼承自 HttpServlet,在開發(fā)中使用的也是 HttpServlet 對(duì)象。
HttpServlet 類中包含兩個(gè)常用方法,這兩個(gè)方法的說明如表 2 所示。
表 2 HttpServlet 類的常用方法
方法聲明 |
功能描述 |
---|---|
protected void doGet (HttpServletRequest req, HttpServletResponse resp) |
用于處理 GET 類型的 HTTP 請(qǐng)求的方法 |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) |
用于處理 POST 類型的 HTTP 請(qǐng)求的方法 |
HttpServlet 主要有兩大功能,具體如下。
① 根據(jù)用戶請(qǐng)求方式的不同,定義相應(yīng)的 doXxx() 方法處理用戶請(qǐng)求。例如,與 GET 請(qǐng)求方式對(duì)應(yīng)的 doGet() 方法,與 POST 方式對(duì)應(yīng)的 doPost() 方法。
② 通過 service() 方法將 HTTP 請(qǐng)求和響應(yīng)分別強(qiáng)轉(zhuǎn)為 HttpServletRequest 和 HttpServletResponse 類型的對(duì)象。
需要注意的是,由于 HttpServlet 類在重寫的 service() 方法中,為每一種 HTTP 請(qǐng)求方式都定義了對(duì)應(yīng)的 doXxx() 方法,因此,當(dāng)定義的類繼承 HttpServlet 后,只需要根據(jù)請(qǐng)求方式重寫對(duì)應(yīng)的 doXxx() 方法即可,而不需要重寫 service() 方法。