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