Java開發學習筆記之五:Servlet編程API

來源:互聯網
上載者:User

一、基本的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伺服器之間建立的會話。使用這個介面的方法可以查詢和管理關於會話的資訊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.