【Servlet】Servlet体系结构
Servlet
Servlet是基于Java語言的Web服務(wù)器端編程技術(shù),按照Java EE規(guī)范定義,Servlet是運行在Servlet容器中的Java類,它能處理Web客戶的HTTP請求,并產(chǎn)生HTTP響應(yīng)。
Servlet運行在服務(wù)器端,由Servlet容器所管理,Servlet容器也叫Servlet引擎,是Web服務(wù)器或應(yīng)用服務(wù)器的一部分,用于在發(fā)送的請求和響應(yīng)之上提供網(wǎng)絡(luò)服務(wù)、解碼基于MIME的請求、格式化基于MIME的響應(yīng)。
Servlet是使用Servlet API及相關(guān)類和方法的Java程序。
Servlet API包含兩個軟件包:
- javax.servlet:定義了所有Servlet類都必須實現(xiàn)或繼承的通用接口和類。
- javax.servlet.http:定義了采用HTTP協(xié)議通信的HttpServlet類。
Servlet API的主要接口和類之間的關(guān)系
Servlet接口
定義如下:
package javax.servlet;import java.io.IOException;public interface Servlet {public void init(ServletConfig config) throws ServletException;public ServletConfig getServletConfig();public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;public String getServletInfo();public void destroy(); }- Servlet接口規(guī)定了必須由Servlet類實現(xiàn)并且由Servlet引擎識別和管理的方法集。
- Servlet接口的基本目標是提供與Servlet生命周期相關(guān)的方法,如:init()、service()和destroy()等。
主要方法說明:
| init(ServletConfig config) | Servlet初始化方法。在Servlet實例化后,容器調(diào)用該方法進行Servlet的初始化。 init()方法只能被調(diào)用一次,如果此方法沒有正常結(jié)束,就會拋出一個ServletException異常。 一旦拋出該異常,Servlet將不再執(zhí)行,隨后對其進行再次調(diào)用,容器會重新載入并再次運行init()方法。 |
| service(ServletRequest req,ServletResponse resp) | Servlet的服務(wù)方法。當用戶對Servlet發(fā)出請求時容器會調(diào)用該方法處理用戶的請求。 |
| destroy() | Servlet的銷毀方法。容器在終止Servlet服務(wù)前調(diào)用此方法。 容器調(diào)用此方法前必須給service()線程足夠時間來結(jié)束執(zhí)行, 因此接口規(guī)定當service()正在執(zhí)行時,destroy()不被執(zhí)行。 |
| getServletConfig() | 此方法可以讓Servlet在任何時候獲得ServletConfig對象。 |
| getServletInfo() | 此方法返回一個String對象,該對象包含Servlet的信息,例如:開發(fā)者、創(chuàng)建日期、描述信息等。 該方法也可用于容器。 |
GenericServlet抽象類
- GenericServlet是一個通用的協(xié)議無關(guān)的Servlet,它實現(xiàn)了Servlet和ServletConfig接口。
- GenericServlet繼承自Servlet,應(yīng)該重寫service()方法。
主要方法說明:
| public void init(ServletConfig config) | 調(diào)用Servlet接口中的init()方法。 此方法還有一無參的重載方法,其功能與此方法相同。 |
| public String getInitParameter(String name) | 返回名稱為name的初始化參數(shù)的值。 |
| public ServletContext getServletContext() | 返回ServletContext對象的引用。 |
HttpServlet類
HttpServlet指能夠處理HTTP請求的Servlet,它在原有Servlet接口上添加了對HTTP協(xié)議的處理,它比Servlet接口的功能更為強大。
主要方法說明:
| service(HttpServletRequest req, HttpServletResponse resp) | HttpServlet在實現(xiàn)Servlet接口時,重寫了service()方法,該方法會自動判斷用戶的請求方式。 若為GET請求,則調(diào)用HttpServlet的doGet()方法; 若為POST請求,則調(diào)用doPost()方法。 因此,開發(fā)人員在編寫Servlet時,通常只需要重寫doGet()或doPost()方法,而不要去重寫service方法。 如果Servlet收到一個HTTP請求而你沒有重載相應(yīng)的do方法,它就返回一個說明此方法對本資源不可用的標準HTTP錯誤。 |
| doGet(HttpServletRequest req, HttpServletResponse resp) | 此方法被本類的service()方法調(diào)用,用來處理一個HTTP GET 操作。 |
| doPost(HttpServletRequest req, HttpServletResponse resp) | 此方法被本類的service()方法調(diào)用,用來處理一個HTTP POST 操作。 |
HttpServlet作為HTTP請求的分發(fā)器,除了提供對GET和POST請求的處理外,對于其他請求類型也提供了相應(yīng)的處理方法(如:doHead()、doOptions()、doDelete()、doPut()、doTrace())
總結(jié)
以上是生活随笔為你收集整理的【Servlet】Servlet体系结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript中的事件处理
- 下一篇: jquery的ajax向ashx传中文,