1. 程式人生 > >Servlet的學習:Servlet常用類和介面

Servlet的學習:Servlet常用類和介面

Servlet API分別在兩個包中,分別是javax.servlet和javax.servet.http。而最典型的Servlet 類則是在兩個包中,中的常 用介面和類。在Servlet 架構中,Servlet介面是所有型別的Servlet 類必須實現的介面,而最典型的Servlet 類則是HttpServlet類。下面介紹Servlet常用類和介面。

1.Servlet介面

Servlet介面是所有Servet都必須直接或間接實現的介面。

Servlet介面包含的主要方法如下:

void init(ServletConfig config):初始化Servlet。

ServletConfng getServletConfig0):獲得Servlet 的相關配置資訊,該方法會返回一個指向ServletConfig的引用。

java.lang.Sring getServletInfo():獲得Servlet開發者定義的資訊。

void service(ServletRequet req, ServletResponse res); 該方法用於響應客戶端請求。

void destroy():清理方法,用於釋放資源等。

2.GenericServlet抽象類

有兩個Servlet類: GenericServlet 和StpServlet類,它們提供了兩種基本的Servlet,分別為Servlet方法提供了一種預設的實現模式。一般的, 我們編寫的 Servlet類總是從這兩種Servlet中繼承.GenericServlet實現了Servlet 介面,它是一個抽象類,其包含的service()方法是一個抽象方法。GenericServlet 的派生類必須實現service()方法。

3. HttpServlet抽象類

HttpServlet是所有基於Web的Servlet類的根類。HttpServlet 類重寫了Service()方法,並針對客戶端的不同請求型別提供了幾個不同的方法,如doGet(0方法、doPost(方法 。

HttpServlet包含的主要方法如下:

void doPost(HttpServletRequest request,HttpServletResponse response)  throws ServletException,java.io.IOException:該方法用於處理和響應HTTP GET請求。

void  doGet(HttpServletRequest request,  HttpServletResponse response)  throws ServletException, java io.IOException:該方法用於處理和響應HTTP POST請求。除了doGet()方法和doPost()方法以外,其他型別的HTTP請求如PUT、DELETE等也有對應的處理方法。編寫HttpServlet 類的關鍵就是要對doGet()、doPost()等方法進行重寫,以實現對客戶端請求的響應。要注意的是,不要重寫Service()方法,否則會有問題。

4. ServletRequest介面和ServletResponse介面

當客戶請求到來時,Servlet容器會建立一個ServletRequest 物件用來封裝請求資料了同時建立一個ServletResponse物件,用來封裝響應資料。隨後,這兩個物件將作為service()方法的引數被傳遞Servlet, Servlet 可以利用ServletRequest 物件獲取客戶端的請求資料,利用SerletResponse物件傳送最後的響應資料。ServletRequest介面和ServletResponse介面都在javax.servlet包中定義。

ServletRequest包含的主要方法如下:

Object getAttribute(String name):返回屬性名為name的屬性值,如果該屬性不存在,則返回null。

Enumeration getAttributeNames():返回請求中所有屬性的名字,如果請求中沒有任何屬性,則返回一個空列舉集合。

void removeAttribute(String name):  從請求中移除。

String getCharactrEncoding():返回請求正文所使用的字元編碼名稱。如果未指定字元編碼,則該方法返回null.

int getContent Length():返回請求正文的長度,以位元組為單位。如果長度未知,則該方法返回-1。

Strine getContentType():返回請求正文的MIME型別。如果型別未知,則該方法返回null。

ServletInputStream getInputStream():返回一個輸入流,使用該輸入流可以以二進位制的方式來讀取請求正文。

Sring getParamere(String name): 返回請求中name引數的值。如果name引數包含多個值,則該方法將返回引數值列表中的第一個引數值。若在請求中未找到該引數,則方法返回null。

Enumeration getParameterNamesO: 返回請求中包含的所有引數的名字。如果請求中沒有引數,則該方法會返回一個空的列舉集合.

String getParameterValues(String name): 返回請求中請求中name引數的所有值。如果請求中不含有name引數,則該方法返回null。

ServletResponse包含的主要方法如下:

ServletOutputStream getOutputStream():返回一個ServletOutputStream物件,用來發送對客戶端的請求。

PrintWrier getWriter():返回PrintWrier類物件,用來將字元文字傳送到客戶端。

void setContentLength(int length):設定響應資料的長度。

void setBufferSize(int size):設定傳送到客戶端的資料緩衝區大小。

5.HttpServletRequest介面

ServletRequest介面表示Servlet的請求,HttpServletRequest是它的子類,HttpServletRequest介面代表了客戶端的HTTP請求。

HttpServletRequest包含的主要方法如下:

Cookie[] getCookies():返回由伺服器存放在客戶端的Cookie陣列,常常使用Cookie來區分不同的客戶。

HttpSession getSession():獲取當前的HTTP會話物件。

HttpSession getSession(boolean create):獲取當前的HTTP會話物件,若不存在則自動建立一個新會話.

6. HttpServletResponse介面

ServletResponse介面表示Servlet的響應,而HttpServletResponse介面表示對客戶端的HTTP響應。

HttpServletResponse介面包含的主要方法如下:

public void addCookie (Cookie cookie):向響應的頭部加入一個Cookie。

void setStatus(int status):將響應狀態碼設定為指定值,只用於不產生錯誤的響應。

7.  HttpSessien介面

HttpSession物件由Servlet容器負責建立,在HttpSession物件中可以存放客戶狀態資訊。Servlet 會為HttpSession分配一個唯一識別符號, 即Session ID。Session ID作為Cookie儲存在客戶的瀏覽器中,每當客戶發出HTTP請求時,Servlet 容器就可以從HttpRequest物件中讀取到Session ID,再根據Session ID找到相應的HttpSession物件,進而獲取客戶的狀態資訊。

HttpSession接日包含的主要方法如下:

String getld():返回Session的ID。

void invalidate():使當前的Session失效,Servlet 容器會釋放掉HttpSession物件所佔用的資源。

void setAttribute(String name,Object value): 將名值對(name, value)屬性儲存在HttpSession物件中。

Object getAttribute(String name):根據name引數返回儲存在HttpSession物件中的屬性值。

Enumeration getAttributeNames():返回當前HttpSession物件中所有的屬性名。

isNew(): 判斷該Session是否是新建立的,如果是新建立的Session,則返回true,否則返回false.