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