Servlet編程API

一、基本的servlet API
JavaEE關於Servlet的API主要有兩個包:javax.servlet和javax.servlet.http。前者主要提供了Web容器能 夠使用的servlet基本類和接口,後者主要包括和HTTP協議相關的servlet類和接口。對servlet的編程,主要是根據需要,繼承這些類實 現需要的功能。

javax.servlet包和javax.servlet.http包的類和接口主要分以下幾類:
1.servlet基本類

javax.servlet.Servlet
javax.servlet.http.HttpServlet
javax.servlet.SingleThreadModel
javax.servlet.GenericServlet
這些是servlet程序需要直接或間接繼承的抽象類和接口。SingleThreadModel接口可以保證servlet在同一時間只處理一個客戶請 求。

2.Web請求和響應類
javax.servlet.ServletRequest
javax.servlet.ServletResponse
javax.servlet.ServletInputStream
javax.servlet.ServletOutputStream
javax.servlet.HttpServletRequest
javax.servlet.HttpServletResponse

3.和Web容器聯繫
javax.servlet.ServletConfig
ServletConfig接口使Web容器在servlet初始化時(一般是web服務器啓動並載入Web應用時)能夠和servlet進行聯繫。 Servlet可以通過該接口取得初始變量和servlet名稱等。

4.和Web應用聯繫
javax.servlet.ServletContext
這個接口是Servlet和Web應用進行連接,使用servlet和Web程序在運行時能夠傳遞數據。Servlet之間也可以通過這個接口共享數據。 ServletContext是包含在ServletConfig中的,它和ServletConfig的主要不同是:ServletContext有更 多方法,主要是在servlet運行時使用,而ServletConfig主要是在servlet啓動時從Web容器中得到。

5.和其他Web資源的共同作用
javax.servlet.http.RequestDispatcher
RequestDispather支持servlet和JSP,其他servlet或Web資源之間的調用。這樣當servlet需要引入其他 servlet、JSP或HTML內容時,可以更靈活地控制它們之間的邏輯關係。

6.錯誤異常類
javax.servlet.ServletException
javax.servlet.UnavailableException

7.其他附屬類
javax.servlet.http.HttpUtils
javax.servlet.http.Cookie
前者提供servlet的一些幫助功能,後者是對應HTTP的Cookie。

二、主要servlet類和接口的使用方法
1.javax.servlet.Servlet接口
這個接口定義了servlet初始化、進行服務和終止服務的基本方法,這個些方法都和servlet的生命週期有關。 javax.servlet.Servlet將被HttpServlet和GenericServlet所實現。一般編程者在其中通過繼承 HttpServlet間接使用了javax.servlet.Servlet的方法,比如init(),service(),destroy()。
2.javax.servlet.GenericServlet類
該類定義了一個通用的servlet類。它的用法和HTTP協議無關,主要用來方便編程者自己開發其他Web協議的servlet程序。 GenericServlet實現了上面的Servlet和ServletConfig接口,它提供了包括Servlet生命週期方法的一些常用方法。繼 承這個類的servlet需要填定其service()方法。它的init()、destroy()方法和javax.servlet.Servlet的 同名方法基本一樣。另外,它加入了getInitParameter()等方法。

3.javax.servlet.http.HttpServlet類
HttpServlet是最常用的Servlet類,編程者需要繼承這個抽象類並填充其有關doXXX方法。另外在編程時注意各個方法的線程關係,避免當 多個Web請求到來時,servlet會產生錯誤。它的service()方法一般不需要被替代,它會調用和用戶請求對應的doXXX等方法。在一般 servlet中,使用最多的是doGet和doPost方法,沒有必要重寫doOptions和doTrace方法。

4.javax.servlet.SingleThreadModel接口
Web容器保證實現SingleTheadModel接口的servlet運行在單線程模式下,也就是保證其service()方法不會使用多線程。 Web容器有兩種方法可以實現這一功能。一種是創建並管理多個servlet實例,每個實例在同一時間單獨處理一個請求;另一種是讓請求依照順序被一個 servlet處理。

5.javax.servet.ServletConfig接口
ServletConfig接口能夠使Web容器在servlet初始化時向servlet傳遞一些設置信息。設置信息是在servlet之外定義的,如 在Web容器中配置描述文件web.xml內指定的初始化變量。在servet進行配置可以帶來很大的靈活性。

6.javax.servlet.ServletRequest接口和javax.servlet.ServletResponse接口
這兩個接口定義了來自客戶端的請求和向客戶端發送的響應。Web容器根據客戶請求建立ServetRequest對象和ServletResponse對 象並作爲參數傳遞給servlet的service()方法。

可以從ServletRequest中獲得請求參數(即url後的&var1=value1...)、請求屬性(attributes)、和輸入 流。另外,它還可以得到Web協議信息(如getRemoteAddr(),getRemoteHost(),GetServetName()等)。
當Web容器通過ServletResponse接口向客戶傳遞響應數據時,數據的格式主要可以有二進帛類型和文本類型。如果在servlet中需要發送 二進制數據,servlet要用getOutputStream()取得的ServletOutputStream對象;如果需要發送文本數據,要用 getWriter()取得PrinterWriter對象。Servlet可以通過setContentType()設置響應數據的字符集(注:此設置 應在getWriter方法獲得PrinterWriter對象前取得)。
7.javax.servlet.ServletInputStream接口和 javax.servlet.ServletOutputStream接口
SetvletInputStream用於從ServletRequest中獲取數據輸入流;ServletOutputStream用於向 ServletResponse中寫數據流。

8.javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletReponse 接口
這兩個接口分別繼承自ServletRequest,ServletResponse,它們提供了處理HTTP請求和響應的多種方法。在servlet編 程中這兩個接口作爲參數傳遞給doGet,doPost等方法。可以從這兩個方法中獲得和設置HTTP頭信息。

9.javax.servlet.http.HttpSession接口

HttpSession提供了會話的管理機制。它可以用來識別一個用戶和一系列Web請求的關聯關係。同時HttpSession可以用來記載用戶的一些 特定信息。在Web容器中,常用的實現會話的方式有通過cookie或重寫URL等。HttpSession編程接口代表在HTTP客戶和Web服務器之 間創建的會話。使用這個接口的方法可以查詢和管理關於會話的信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章