Java Servlet 中文API說明

這份文檔描述了Java Servlet API的最新版本2.1版。因此,這本書對於Servlet的開發者及servlet引擎的開發者一樣適用。  

      Java Servlet API
  的組成  
      Java Servlet API
  由兩個軟件包組成:一個是對應HTTP的軟件包這份文檔描述了Java Servlet API的最新版本2.1版。因此,這本書對於Servlet的開發者及servlet引擎的開發者一樣適用。 

      Java Servlet API
 的組成 
      Java Servlet API
 由兩個軟件包組成:一個是對應HTTP的軟件包,另外一個是不對應HTTP的通用的軟件包。這兩個軟件包的同時存在使得Java Servlet API可以適應未來的其餘請求-響應的協議。 
      
 這份文檔以及剛纔說起的Javadoc格式的文檔都描述了這兩個軟件包,Javadoc格式的文檔還描述了你應該如何使用這兩個軟件包中的全部方法。 

      
 有關規範 
      
 你也許對下面的這些Internet規範感興趣,這些規範將直接影響到Servlet API的發展和執行。你能夠從http://info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的全部這些RFC規範。 
      RFC 1738 
統一資源定位器 (URL) 
      RFC 1808 
相關統一資源定位器
 
      RFC 1945 
超文本傳輸協議
 --HTTP/1.0 
      RFC 2045 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第一部分:Internet信息體格式
 
      RFC 2046 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第二部分:媒體類型
 
      RFC 2047 
多用途網際郵件擴充協議(MIME)(多用途Internet郵件擴展)第三部分:信息標題擴展用於非ASCII文本
 
      RFC 2048 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第四部分註冊步驟
 
      RFC 2049 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第五部分:一致性標準和例子
 
      RFC 2068 
超文本傳輸協議
 -- HTTP/1.1 
      RFC 2069 
一個擴展HTTP:摘要訪問鑑定
 
      RFC 2109 HTTP
狀態管理機制
 
      RFC 2145 HTTP 
版本號的使用和解釋
 
      RFC 2324 
超文本Coffee Pot控制協議
 (HTCPCP/1.0)
      
萬維網協會(http://www.w3.org)管理着這些協議的規範和執行。
 


有關 Java Servlets
      JavaTM servlets
是一個不受平臺約束的Java小程序,它能夠被用來經過多種方法擴充一個Web服務器的功能。你能夠把Servlet理解成Server上的applets,它被編譯成字節碼,這樣它就能夠被動態地載入並用效地擴展主機的處理能力。
 
      Servlet
 applets不一樣的地方是,它不運行在Web瀏覽器或其餘圖形化的用戶界面上。Servlet經過servlet引擎運行在Web服務器中,以執行請求和響應,請求、響應的典型範例是HTTP協議。 
      
 一個客戶端程序,能夠是一個Web瀏覽器,或者是非其餘的能夠鏈接上Internet的程序,它會訪問Web服務器併發出請求。這個請求被運行在Web服務器上的Servlet引擎處理,並返回響應到ServletServlet經過HTTP將這個響應轉發到客戶端。 
在功能上,ServletCGINSAPI有點相似,可是,與他們不一樣的是:Servlet具備平臺無關性。 

      
 Java Servlet概論 
      Servlet與其餘普通的server擴展機制有如下進步: 
      
 由於它採用了不一樣的進程處理模式,因此它比CGI更快。 
      
 它使用了許多Web服務器都支持的標準的API 
      
 它繼承了Java的全部優點,包括易升級以及平臺無關性。 
      
 它能夠調用Java所提供的大量的API的功能模塊。 
      
 這份文檔說明了Java Servlet API的類和接口的方法。有關更多的信息,請參看下面的API說明。 

     
 Servlet的生命週期 
      一個Java servlet具備一個生命週期,這個生命週期定義了一個Servlet如何被載入並被初始化,如何接收請求並做出對請求的響應,如何被從服務中清除。Servlet的生命週期被javax.servlet.Servlet這個接口所定義。 
      
 全部的Java Servlet都會直接地或間接地執行javax.servlet.Servlet接口,這樣它才能在一個Servlet引擎中運行。Servlet引擎是Web 服務器按照Java Servlet API定製的擴展。Servlet引擎提供網絡服務,可以理解MIME請求,並提供一個運行Servlet的容器。 
      javax.servlet.Servlet
 接口定義了在Servlet的生命週期中特定時間以及特定順序被調用的方法。 

      
 Servlet的解析和載入 
      Servlet引擎解析並載入一個Servlet,這個過程能夠發生在引擎啓動時,須要一個Servlet去響應請求時,以及在此之間的任什麼時候候。 
      Servlet
 引擎利用Java類載入工具載入一個ServletServlet引擎能夠從一個本地的文件系統、一個遠程的文件系統以及網絡載入Servlet 

      
 Servlet的初始化 
      Servlet引擎載入Servlet後,Servlet引擎必須對Servlet進行初始化,在這一過程當中,你能夠讀取一些固定存儲的數據、初始化JDBC的鏈接以及創建與其餘資源的鏈接。 
      
 在初始化過程當中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。這樣,Servlet能夠對本身進行配置。 
      init()
 方法得到了一個Servlet配置對象(ServletConfig)。這個對象在Servlet引擎中執行,並容許Servlet經過它獲處相關參數。這個對象使得Servlet可以訪問ServletContext對象。 

      
 Servlet處理請求 
      Servlet
 被初始化以後,它已經能夠處理來自客戶端的請求,每個來自客戶端的請求都被描述成一個ServletRequest對象,Servlet的響應被描述成一個ServletResponse對象。 
      
 當客戶端發出請求時,Servlet引擎傳遞給Servlet一個ServletRequest對象和一個ServletResponse對象,這兩個對象做爲參數傳遞到service()方法中。 
      Servlet
 也能夠執行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有權使用客戶端發出的請求。Servlet能夠經過ServletInputStream對象讀取請求信息。 
      ServletResponse
 接口容許Servlet創建響應頭和狀態代碼。經過執行這個接口,Servlet有權使用ServletOutputStream類來向客戶端返回數據。 

      
 多線程和映射 
      
 在多線程的環境下,Servlet必須能處理許多同時發生的請求。例外的狀況是這個Servlet執行了SingleThreadModel接口,若是是那樣的話,Servlet只能同時處理一個請求。 
      Servlet
 依照Servlet引擎的映射來響應客戶端的請求。一個映射對包括一個Servlet實例以及一個Servlet返回數據的URL,例如:HelloServlet with /hello/index.html 
      
 然而,一個映射多是由一個URL和許多Servlet實例組成,例如:一個分佈式的Servlet引擎可能運行在不止一個的服務器中,這樣的話,每個服務器中均可能有一個Servlet實例,以平衡進程的載入。做爲一個Servlet的開發者,你不能假定一個Servlet只有一個實例。 

      
 Servlet的卸載 
      Servlet引擎並沒必要需保證一個Servlet在任什麼時候候或在服務開啓的任什麼時候候都被載入。Servlet引擎能夠自由的在任什麼時候候使用或清除一個Servlet。所以,咱們不能依賴一個類或實例來存儲重要的信息。 
      
 Servlet引擎決定卸載一個Servlet時(例如,若是這個引擎被關閉或者須要讓資源),這個引擎必須容許Servlet釋放正在使用的資源並存儲有關資料。爲了完成以上工做,引擎會調用Servletdestroy()方法。 
      
在卸載一個Servlet以前,Servlet引擎必須等待全部的service()方法完成或超時結束(Servlet引擎會對超時做出定義)。當一個Servlet被卸載時,引擎將不能給Servlet發送任何請求。引擎必須釋放Servlet並完成無用存儲單元的收集
 

      
 Servlet映射技術 
      做爲一個Servlet引擎的開發者,你必須對於如何映射客戶端的請求到Servlet有大量的適應性。這份說明文檔不規定映射如何發生。可是,你必須可以自由地運用下面的全部技術: 

      
 映射一個Servlet到一個 URL
      
例如,你能夠指定一個特殊的Servlet它僅被來自/feedback/index.html的請求調用。
 

      
 映射一個Servlet到以一個指定的目錄名開始的全部 URL
      
例如,你能夠映射一個Servlet/catalog,這樣來自/catalog/ /catalog/garden/catalog/housewares/index.html的請求都會被映射到這個Servlet。可是來自/catalogtwo/catalog.html的請求沒被映射。
 

      
 映射一個Servlet到全部以一個特定的字段結尾的全部 URL
      
例如,你能夠映射一個來自於全部以in.thtml結尾的請求到一個特定的Servlet
 

      
 映射一個Servlet到一個特殊的URL /servlet/servlet_name 
      
 例如,若是你創建了一個名叫listattributesServlet,你能夠經過使用/servlet/listattributes來訪問這個Servlet 

      
 經過類名調用 Servlet
      
例如,若是Servlet引擎接收了來自/servlet/com.foo.servlet.MailServlet的請求,Servlet引擎會載入這個com.foo.servlet.MailServlet類,創建實例,並經過這個Servlet來處理請求。
 

      
 Servlet環境 
      ServletContext接口定義了一個Servlet環境對象,這個對象定義了一個在Servlet引擎上的Servlet的視圖。經過使用這個對象,Servlet能夠記錄事件、獲得資源並獲得來自Servlet引擎的類(例如RequestDispatcher對象)。一個Servlet只能運行在一個Servlet環境中,可是不一樣的Servlet能夠在Servlet引擎上有不一樣的視圖。 
      
 若是Servlet引擎支持虛擬主機,每一個虛擬主機有一個Servlet環境。一個Servlet環境不能在虛擬主機之間共享。 
      Servlet
 引擎可以容許一個Servlet環境有它本身的活動範圍。 
      
 例如,一個Servlet環境是屬於bank應用的,它將被映射到/bank目錄下。在這種狀況下,一個對getContext方法的調用會返回/bankServlet環境。 

      
 HTTP會話 
      HTTP是一個沒有狀態的協議。要創建一個有效的Web服務應用,你必須可以識別一個連續的來自遠端的客戶機的惟一的請求。隨着時間的過去,發展了許多會話跟蹤的技術,可是使用起來都比較麻煩。 
      Java Servlet API
 提供了一個簡單的接口,經過這個接口,Servlet引擎能夠有效地跟蹤用戶的會話。 

      
 創建Session 
      
 由於HTTP是一個請求-響應協議,一個會話在客戶機加入以前會被認爲是一個新的會話。加入的意思是返回會話跟蹤信息到服務器中,指出會話已被創建。在客戶端加入以前,咱們不能判斷下一個客戶端請求是目前會話的一部分。 
      
 在下面的狀況下,Session會被認爲是新的Session 
      
 客戶端的Session在此以前還不知道 
      
 客戶端選擇不加入Session,例如,若是客戶端拒絕接收來自服務器的 cookie
做爲一個Servlet的開發者,你必須決定你的Web應用是否處理客戶機不加入或不能加入Session。服務器會在Web服務器或Servlet規定的時間內維持一個Session對象。當Session終止時,服務器會釋放Session對象以及全部綁定在Session上的對象。
 
綁定對象到Session 
      
 若是有助於你處理應用的數據需求,你也許須要綁定對象到Session中,你能夠經過一個惟一的名字綁定任何的對象到Session中,這時,你須要使用HttpSession對象。任何綁定到Session上的對象均可以被處理同一會話的Servlet調用。 
      
 有些對象可能須要你知道何時會被放置到Session中或從Session中移開。你能夠經過使用HttpSessionBindingListener接口得到這些信息。當你的應用存儲數據到Session中,或從Session中清除數據,Servlet都會經過HttpSessionBindingListener檢杳什麼類被綁定或被取消綁定。這個接口的方法會通報被綁定或被取消綁定的對象 

API
 對象的說明 

      
 這一部分包含了對Java Servlet API的所有類和接口的詳細說明。這個說明與Javadoc API差很少,可是這份文檔提供了更多的信息。 
API
 包含了兩個軟件包,十二個接口和九個類。 
軟件包: javax.servlet 
所包含的接口:RequestDispatcherServletServletConfigServletContextServletRequestServletResponseSingleThreadModel
 
所包含的類:GenericServletServletInputStreamServletOutputStreamServletExceptionUnavailableException 

     
 1、RequestDispatcher接口 
      
 定義: 

      
 public interface RequestDispatcher; 

      定義一個對象,從客戶端接收請求,而後將它發給服務器的可用資源(例如ServletCGIHTML文件、JSP文件)。Servlet引擎建立request dispatcher對象,用於封裝由一個特定的URL定義的服務器資源。 
      
 這個接口是專用於封裝Servlet的,可是一個Servlet引擎能夠建立request dispatcher對象用於封裝任何類型的資源。 
      request dispatcher
 對象是由Servlet引擎創建的,而不是由Servlet開發者創建的 

      
 方法 

      
 1forward 

      
 public void forward(ServletRequest request, ServletReponse response) 
      throws ServletException, IOException; 

      
 被用來從這個Servlet向其它服務器資源傳遞請求。當一個Servlet對響應做了初步的處理,並要求其它的對象對此做出響應時,可使用這個方法。 
      
 request對象被傳遞到目標對象時,請求的URL路徑和其餘路徑參數會被調整爲反映目標對象的目標URL路徑。 
      
 若是已經經過響應返回了一個ServletOutputStream對象或PrintWriter對象,這個方法將不能使用,不然,這個方法會拋出一個IllegalStateException 

      
 2include 

      
 public void include(ServletRequest request, ServletResponse response)
      throws ServletException, IOException
 

      
 用來包括髮送給其餘服務器資源的響應的內容。本質上來講,這個方法反映了服務器端的內容。 
      
 請求對象傳到目標對象後會反映調用請求的請求URL路徑和路徑信息。這個響應對象只能調用這個ServletServletOutputStream對象和PrintWriter對象。 
      
 一個調用includeServlet不能設置頭域,若是這個Servlet調用了必須設置頭域的方法(例如cookie),這個方法將不能保證正常使用。做爲一個Servlet開發者,你必須妥善地解決那些可能直接存儲頭域的方法。例如,即便你使用會話跟蹤,爲了保證session的正常工做,你必須在一個調用includeServlet以外開始你的 session

      
2、Servlet接口。
 
      定義 

      
 public interface Servlet 

      
 這個接口定義了一個Servlet:一個在Web服務器上繼承了這個功能的Java類。 

      
 方法 

      
 1init 

      
 public void init(ServletConfig config) throws ServletException; 

      Servlet
 引擎會在Servlet實例化以後,置入服務以前精確地調用init方法。在調用service方法以前,init方法必須成功退出。 
      
 若是init方法拋出一個ServletException,你不能將這個Servlet置入服務中,若是init方法在超時範圍內沒完成,咱們也能夠假定這個Servlet是不具有功能的,也不能置入服務中。 

      
 2service 

      
 public void service(ServletRequest request, ServletResponse response)
      throws ServletException, IOException;
 

      Servlet
 引擎調用這個方法以容許Servlet響應請求。這個方法在Servlet未成功初始化以前沒法調用。在Servlet被初始化以前,Servlet引擎可以封鎖未決的請求。 
      
 在一個Servlet對象被卸載後,直到一個新的Servelt被初始化,Servlet引擎不能調用這個方法 

     
 3destroy 

      
 public void destroy(); 

      
 當一個Servlet被從服務中去除時,Servlet引擎調用這個方法。在這個對象的service方法全部線程未所有退出或者沒被引擎認爲發生超時操做時,destroy方法不能被調用。 

      
 4getServletConfig 

      
 public ServletConfig getServletConfig(); 

      
 返回一個ServletConfig對象,做爲一個Servlet的開發者,你應該經過init方法存儲ServletConfig對象以便這個方法能返回這個對象。爲了你的便利,GenericServlet在執行這個接口時,已經這樣作了。 

     
 5getServletInfo 

      
 public String getServletInfo(); 

      
 容許Servlet向主機的Servlet運行者提供有關它自己的信息。返回的字符串應該是純文本格式而不該有任何標誌(例如HTMLXML等)。 

      
 3、ServletConfig接口 

      
 定義 

      
 public interface ServletConfig 

      
 這個接口定義了一個對象,經過這個對象,Servlet引擎配置一個Servlet而且容許Servlet得到一個有關它的ServletContext接口的說明。每個ServletConfig對象對應着一個惟一的Servlet 

      
 方法 

      
 1getInitParameter 

      
 public String getInitParameter(String name); 

      
 這個方法返回一個包含Servlet指定的初始化參數的String。若是這個參數不存在,返加空值。 

      
 2getInitParameterNames 

      
 public Enumeration getInitParameterNames(); 

      
 這個方法返回一個列表String對象,該對象包括Servlet的全部初始化參數名。若是Servlet沒有初始化參數,getInitParameterNames返回一個空的列表。 

      
 3getServletContext 

      
 public ServletContext getServletContext(); 

      
 返回這個ServletServletContext對象。 

      
 4、ServletContext接口 

      
 定義 

      
 public interface ServletContext 

      
 定義了一個Servlet的環境對象,經過這個對象,Servlet引擎向Servlet提供環境信息。 
      
 一個Servlet的環境對象必須至少與它所駐留的主機是一一對應的。在一個處理多個虛擬主機的Servlet引擎中(例如,使用了HTTP1.1的主機頭域),每個虛擬主機必須被視爲一個單獨的環境。此外,Servlet引擎還能夠建立對應於一組Servlet的環境對象。 
      
 方法 
      1
 getAttribute
      public Object getAttribute(String name); 
      
返回Servlet環境對象中指定的屬性對象。若是該屬性對象不存在,返回空值。這個方法容許訪問有關這個Servlet引擎的在該接口的其餘方法中還沒有提供的附加信息。
 
      2
  getAttributeNames
      public Enumeration getAttributeNames();
      
返回一個Servlet環境對象中可用的屬性名的列表。
 
      3
  getContext
      public ServletContext getContext(String uripath);
      
返回一個Servlet環境對象,這個對象包括了特定URI路徑的Servlets和資源,若是該路徑不存在,則返回一個空值。URI路徑格式是/dir/dir/filename.ext
 
      
 爲了安全,若是經過這個方法訪問一個受限制的Servlet的環境對象,會返回一個空值。 
      4
  getMajorVersion
      public int getMajorVersion();
      
返回Servlet引擎支持的Servlet API的主版本號。例如對於2.1版,這個方法會返回一個整數2
 
      5
  getMinorVersion
      public int getMinorVersion();
      
返回Servlet引擎支持的Servlet API的次版本號。例如對於2.1版,這個方法會返回一個整數2
 
      6
  getMimeType
      public String getMimeType(String file);
      
返回指定文件的MIME類型,若是這種MIME類型未知,則返回一個空值。MIME類型是由Servlet引擎的配置決定的。
 
      7
  getRealPath
      public String getRealPath(String path);
      
一個符合URL路徑格式的指定的虛擬路徑的格式是:/dir/dir/filename.ext。用這個方法,能夠返回與一個符合該格式的虛擬路徑相對應的真實路徑的String。這個真實路徑的格式應該適合於運行這個Servlet引擎的計算機(包括其相應的路徑解析器)。
 
      
 無論是什麼緣由,若是這一從虛擬路徑轉換成實際路徑的過程不能執行,該方法將會返回一個空值。 
      8
  getResource
      public URL getResource(String uripath);
      
返回一個URL對象,該對象反映位於給定的URL地址(格式:/dir/dir/filename.ext)的Servlet環境對象已知的資源。不管URLStreamHandlers對於訪問給定的環境是否是必須的,Servlet引擎都必須執行。若是給定的路徑的Servlet環境沒有已知的資源,該方法會返回一個空值。
 
      
 這個方法和java.lang.ClassgetResource方法不徹底相同。java.lang.ClassgetResource方法經過裝載類來尋找資源。而這個方法容許服務器產生環境變量給任何資源的任何Servlet,而沒必要依賴於裝載類、特定區域等等。 
      9
  getResourceAsStream
      public InputStream getResourceAsStream(String uripath);
      
返回一個InputStream對象,該對象引用指定的URLServlet環境對象的內容。若是沒找到Servlet環境變量,就會返回空值,URL路徑應該具備這種格式:/dir/dir/filename.ext
 
      
 這個方法是一個經過getResource方法得到URL對象的方便的途徑。請注意,當你使用這個方法時,meta-information(例如內容長度、內容類型)會丟失。 
      10
  getRequestDispatcher
      public RequestDispatcher getRequestDispatcher(String uripath);
      
若是這個指定的路徑下可以找到活動的資源(例如一個ServletJSP頁面,CGI等等)就返回一個特定URLRequestDispatcher對象,不然,就返回一個空值,Servlet引擎負責用一個request dispatcher對象封裝目標路徑。這個request dispatcher對象能夠用來徹底請求的傳送。
 
      11
  getServerInfo
      public String getServerInfo();
      
返回一個String對象,該對象至少包括Servlet引擎的名字和版本號。
 
      12
  log
      public void log(String msg);
      public void log(String msg, Throwable t);
      public void log(Exception exception, String msg); // 
這種用法將被取消
 
      
 寫指定的信息到一個Servlet環境對象的log文件中。被寫入的log文件由Servlet引擎指定,可是一般這是一個事件log。當這個方法被一個異常調用時,log中將包括堆棧跟蹤。 
      13
  setAttribute
      public void setAttribute(String name, Object o);
      
給予Servlet環境對象中你所指定的對象一個名稱。
 
      14
  removeAttribute
      public void removeAttribute(String name);
      
從指定的Servlet環境對象中刪除一個屬性。
 
      
 注:如下幾個方法將被取消 
      15
  getServlet
      public Servlet getServlet(String name) throws ServletException;
      
最初用來返回一個指定名稱的Servlet,若是沒找到就返回一個空值。若是這個Servlet可以返回,這就意味着它已經被初始化,並且已經能夠接受service請求。這是一個危險的方法。當調用這個方法時,可能並不知道Servlet的狀態,這就可能致使有關服務器狀態的問題。而容許一個Servlet訪問其餘Servlet的這個方法也一樣的危險。
 
      
 如今這個方法返回一個空值,爲了保持和之前版本的兼容性,如今這個方法尚未被取消。在之後的API版本中,該方法將被取消。 
      16
  getServletNames
      public Enumeration getServletNames();
      
最初用來返回一個String對象的列表,該列表表示了在這個Servlet環境下全部已知的Servlet對象名。這個列表老是包含這個Servlet自身。
 
基於與上一個方法一樣的理由,這也是一個危險的方法。 
      
 如今這個方法返回一個空的列表。爲了保持和之前版本的兼容性,如今這個方法尚未被取消。在之後的API版本中,該方法將被取消。 
      17
  getServlets
      public Enumeration getServlets();
      
最初用來返回在這個Servelet環境下全部已知的Servlet對象的列表。這個列表老是包含這個Servlet自身。
 
基於與getServlet方法一樣的理由,這也是一個危險的方法。 
      
 如今這個方法返回一個空的列表。爲了保持和之前版本的兼容性,如今這個方法尚未被取消。在之後的API版本中,該方法將被取消。 

      
 5、ServletRequest接口 

      定義 

      
 public interface ServletRequest 

      
 定義一個Servlet引擎產生的對象,經過這個對象,Servlet能夠得到客戶端請求的數據。這個對象經過讀取請求體的數據提供包括參數的名稱、值和屬性以及輸入流的全部數據。 

      
 方法 

      
 1getAttribute 

      
 public Object getAttribute(String name); 

      
 返回請求中指定屬性的值,若是這個屬性不存在,就返回一個空值。這個方法容許訪問一些不提供給這個接口中其餘方法的請求信息以及其餘Servlet放置在這個請求對象內的數據。 

      2
  getAttributeNames

      public Enumeration getAttributeNames();

      
返回包含在這個請求中的全部屬性名的列表。
 

      3
  getCharacterEncoding

      public String getCharacterEncoding();

      
返回請求中輸入內容的字符編碼類型,若是沒有定義字符編碼類型就返回空值。
 

      4
  getContentLength

      public int getContentLength();

      
請求內容的長度,若是長度未知就返回-1
 

      5
  getContentType

      public String getContentType();

      
返回請求數據體的MIME類型,若是類型未知返回空值。
 

      6
  getInputStream

      public ServletInputStream getInputStream() throws IOException;

      
返回一個輸入流用來從請求體讀取二進制數據。若是在此以前已經經過getReader方法得到了要讀取的結果,這個方法會拋出一個IllegalStateException
 

      7
  getParameter

      public String getParameter(String name);

      
以一個String返回指定的參數的值,若是這個參數不存在返回空值。例如,在一個HTTP Servlet中,這個方法會返回一個指定的查詢語句產生的參數的值或一個被提交的表單中的參數值。若是一個參數名對應着幾個參數值,這個方法只能返回經過getParameterValues方法返回的數組中的第一個值。所以,若是這個參數有(或者可能有)多個值,你只能使用getParameterValues方法。
 

      8
  getParameterNames

      public Enumeration getParameterNames();

      
返回全部參數名的String對象列表,若是沒有輸入參數,該方法返回一個空值。
 

      9
  getParameterValues

      public String[] getParameterValues(String name);

      
經過一個String對象的數組返回指定參數的值,若是這個參數不存在,該方法返回一個空值。
 

      10
  getProtocol

      public String getProtocol();

      
返回這個請求所用的協議,其形式是協議/主版本號.次版本號。例如對於一個HTTP1.0的請求,該方法返回HTTP/1.0
 

      11
  getReader

      public BufferedReader getReader() throws IOException;

      
這個方法返回一個buffered reader用來讀取請求體的實體,其編碼方式依照請求數據的編碼方式。若是這個請求的輸入流已經被getInputStream調用得到,這個方法會拋出一個
IllegalStateException
 
      12
  getRemoteAddr

      public String getRemoteAddr();

      
返回發送請求者的IP地址。
 

      13
  getRemoteHost

      public String getRemoteHost();

      
返回發送請求者的主機名稱。若是引擎不能或者選擇不解析主機名(爲了改善性能),這個方法會直接返回IP地址。
 

      14
  getScheme

      public String getScheme();

      
返回請求所使用的URL的模式。例如,對於一個HTTP請求,這個模式就是http
 

      15
  getServerName

      public String getServerName();

      
返回接收請求的服務器的主機名。
 

      16
  getServerPort

      public int getServerPort();

      
返回接收請求的端口號。
 

      17
  setAttribute

      public void setAttribute(String name, Object object);

      
這個方法在請求中添加一個屬性,這個屬性能夠被其餘能夠訪問這個請求對象的對象(例如一個嵌套的Servlet)使用。
 

      
 注:如下方法將被取消 
      getRealPath
      public String getRealPath(String path);
      
返回與虛擬路徑相對應的真實路徑,若是由於某種緣由,這一過程不能進行,該方法將返回一個空值。
 
      
 這個方法和ServletContext接口中的getRealPath方法重複。在2.1版中,ServletContext接口將闡明一個Servlet所能用的全部的路徑的映射。該方法執行的結果將會與ServletContextgetRealPath方法的結果徹底同樣。 

      
 6、ServletResponse接口 
      定義 

      public interface ServletResponse

      
 定義一個Servlet引擎產生的對象,經過這個對象,Servlet對客戶端的請求做出響應。這個響應應該是一個MIME實體,多是一個HTML頁、圖象數據或其餘MIME的格式。 

      
 方法 

      1
  getCharacterEncoding

      public String getCharacterEncoding();

      
返回MIME實體的字符編碼。這個字符編碼能夠是指定的類型,也能夠是與請求頭域所反映的客戶端所能接受的字符編碼最匹配的類型。在HTTP協議中,這個信息被經過Accept-Charset傳送到Servlet引擎。
 
      
 有關字符編碼和MIME的更多信息請參看RFC 2047 

      2
  getOutputStream

      public ServletOutputStream getOutputStream() throws IOException;

      
返回一個記錄二進制的響應數據的輸出流。
 

      
 若是這個響應對象已經調用getWriter,將會拋出IllegalStateException 

      3
  getWriter

      public PrintWriter getWriter throws IOException;

      
這個方法返回一個PringWriter對象用來記錄格式化的響應實體。若是要反映使用的字符編碼,必須修改響應的MIME類型。在調用這個方法以前,必須設定響應的content類型。
 

      
 若是沒有提供這樣的編碼類型,會拋出一個UnsupportedEncodingException,若是這個響應對象已調用getOutputStream,會拋出一個getOutputStream 

      4
  setContentLength

      public void setContentLength(int length);

      
設置響應的內容的長度,這個方法會覆蓋之前對內容長度的設定。
 
      
 爲了保證成功地設定響應頭的內容長度,在響應被提交到輸出流以前必須調用這個方法。 

      5
  setContentType

      public void setContentType(String type);

      
這個方法用來設定響應的content類型。這個類型之後可能會在另外的一些狀況下被隱式地修改,這裏所說的另外的狀況可能當服務器發現有必要的狀況下對MIME的字符設置。
 
      
 爲了保證成功地設定響應頭的content類型,在響應被提交到輸出流以前必須調用這個方法。 

      
 7、SingleThreadModel接口 
      
 定義 
      public interface SingleThreadModel;
      
 這是一個空接口,它指定了系統如何處理對同一個Servlet的調用。若是一個Servlet被這個接口指定,那麼在這個Servlet中的service方法中將不會有兩個線程被同時執行。 
      Servlet
 能夠經過維持一個各自獨立的Servlet實例池,或者經過只讓Servletservice中只有一個線程的方法來實現這個保證。 

      
 8、GenericServlet 
      public abstract class GenericServlet implements Servlet,
            ServletConfig, Serializable;
      
 這個類的存在使得編寫Servlet更加方便。它提供了一個簡單的方案,這個方案用來執行有關Servlet生命週期的方法以及在初始化時對ServletConfig對象和ServletContext對象進行說明。 
      
 方法 
      1
  destroy
      public void destroy();
      
在這裏destroy方法不作任何其餘的工做。
 
      2
  getInitParameter
      public String getInitParameter(String name);
      
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法。
 
      3
  getInitParameterNames
      public Enumeration getInitParameterNames();
      
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法。
 
      4
  getServletConfig
      public ServletConfig getServletConfig();
      
返回一個經過這個類的init方法產生的ServletConfig對象的說明。
 
      5
  getServletContext
      public ServletContext getServletContext();
      
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法。
 
      6
  getServletInfo
      public String getServletInfo();
      
返回一個反映Servlet版本的String
 
      7
  init
      public void init() throws ServletException;
      public void init(ServletConfig config) throws ServletException;
      init(ServletConfig config)
方法是一個對這個Servlet的生命週期進行初始化的簡便的途徑。
 
      init()
 方法是用來讓你對GenericServlet類進行擴充的,使用這個方法時,你不須要存儲config對象,也不須要調用super.init(config) 
      init(ServletConfig config)
 方法會存儲config對象而後調用init()。若是你重載了這個方法,你必須調用super.init(config),這樣GenericServlet類的其餘方法才能正常工做。 
      8
  log
      public void log(String msg);
      public void log(String msg, Throwable cause);
      
經過Servlet content對象將Servlet的類名和給定的信息寫入log文件中。
 
      9
  service
      public abstract void service(ServletRequest request, ServletResponse
            response) throws ServletException, IOException;
      
這是一個抽象的方法,當你擴展這個類時,爲了執行網絡請求,你必須執行它。
 

      
 9、ServletInputStream 
      
 定義 
      public abstract class ServletInputStream extends InputStream
      
 這個類定義了一個用來讀取客戶端的請求信息的輸入流。這是一個Servlet引擎提供的抽象類。一個Servlet經過使用ServletRequest接口得到了對一個ServletInputStream對象的說明。 
      
 這個類的子類必須提供一個從InputStream接口讀取有關信息的方法。 
      
 方法 
      1
  readLine
      public int readLine(byte[] b, int off, int len) throws IOException;
      
從輸入流的指定的偏移量開始將指定長度的字節讀入到指定的數組中。若是該行全部請求的內容都已被讀取,這個讀取的過程將結束。若是是遇到了新的一行,新的一行的首個字符也將被讀入到數組中。
 

      
 10、ServletOutputStream 
      
 定義 
      public abstract class ServletOutputStream extends OutputStream
      
 這是一個由Servlet引擎使用的抽象類。Servlet經過使用ServletResponse接口的使用得到了對一個這種類型的對象的說明。利用這個輸出流能夠將數據返回到客戶端。 
      
 這個類的子類必須提供一個向OutputStream接口寫入有關信息的方法。 
      
 在這個接口中,當一個刷新或關閉的方法被調用時。全部數據緩衝區的信息將會被髮送到客戶端,也就是說響應被提交了。請注意,關閉這種類型的對象時不必定要關閉隱含的socket流。 
      
 方法 
      1
  print
      public void print(String s) throws IOException;
      public void print(boolean b) throws IOException;
      public void print(char c) throws IOException;
      public void print(int i) throws IOException;
      public void print(long l) throws IOException;
      public void print(float f) throws IOException;
      public void print(double d) throws IOException;
      
輸出變量到輸出流中
 
      2
  println
      public void println() throws IOException;
      public void println(String s) throws IOException;
      public void println(boolean b) throws IOException;
      public void println(char c) throws IOException;
      public void println(int i) throws IOException;
      public void println(long l) throws IOException;
      public void println(float f) throws IOException;
      public void println(double d) throws IOException;
      
輸出變量到輸出流中,並增長一個回車換行符
 

      
 11、ServletException 
      
 定義 
      public class ServletException extends Exception
      
 Servlet遇到問題時拋出的一個異常。 
      
 構造函數 
      public ServletException();
      public ServletException(String message);
      public ServletException(String message, Throwable cause);
      public ServletException(Throwable cause);
      
 構造一個新的ServletException,若是這個構造函數包括一個Throwable參數,這個Throwable對象將被做爲可能拋出這個異常的緣由。 
      
 方法 
      1
  getRootCause
      public Throwable getRootCause();
      
若是配置了拋出這個異常的緣由,這個方法將返回這個緣由,不然返回一個空值。
 

      
 12、UnavailableException 
      
 定義 
      public class UnavailableException extends ServletException
      
 不論一個Servlet是永久地仍是臨時地無效,都會拋出這個異常。Servlet會記錄這個異常以及Servlet引擎所要採起的相應措施。 
      
 臨時的無效是指Servlet在某一時間因爲一個臨時的問題而不能處理請求。例如,在另外一個不一樣的應用層的服務(多是數據庫)沒法使用。這個問題可能會自行糾正或者須要採起其餘的糾正措施。 
      
 永久的無效是指除非管理員採起措施,這個Servlet將不能處理客戶端的請求。例如,這個Servlet配置信息丟失或Servlet的狀態被破壞。 
      Servlet
 引擎能夠安全地處理包括永久無效在內的這兩種異常,可是對臨時無效的正常處理可使得Servlet引擎更健壯。特別的,這時對Servlet的請求只是被阻止(或者是被延期)一段時間,這顯然要比在service本身從新啓動前徹底拒絕請求更爲科學。 
      
 構造函數 
      public UnavailableException(Servlet servlet, String message);
      public UnavailableException(int seconds, Servlet servlet, 
            String message);
      
 構造一個包含指定的描述信息的新的異常。若是這個構造函數有一個關於秒數的參數,這將給出Servlet發生臨時無效後,可以從新處理請求的估計時間。若是不包含這個參數,這意味着這個Servlet永久無效。 
      
 方法 
      1
  getServlet
      public Servlet getServlet();
      
返回報告無效的Servlet。這被Servlet引擎用來識別受到影響的Servlet
 
      2
  getUnavailableSeconds
      public int getUnavailableSeconds();
      
返回Servlet預期的無效時間,若是這個Servlet是永久無效,返回-1
 
      3
  isPermanent
      public boolean isPermanent();
      
若是這個Servlet永久無效,返回布爾值true,指示必須採起一些管理行動以使得這個Servlet可用。
   

軟件包:
 javax.servlet.http 
      
所包含的接口:HttpServletRequestHttpServletResponseHttpSessionHttpSessionBindingListenerHttpSessionContext
 
      
 所包含的類:CookieHttpServletHttpSessionBindingEventHttpUtils 

      
 1、HttpServletRequest接口 
      
 定義 \
      public interface HttpServletRequest extends ServletRequest;
      
用來處理一個對ServletHTTP格式的請求信息。
 
      
 方法 
      1
  getAuthType
      public String getAuthType();
      
返回這個請求的身份驗證模式。
 
      2
  getCookies
      public Cookie[] getCookies();
      
返回一個數組,該數組包含這個請求中當前的全部cookie。若是這個請求中沒有cookie,返回一個空數組。
 
      3
  getDateHeader
      public long getDateHeader(String name);
      
返回指定的請求頭域的值,這個值被轉換成一個反映自1970-1-1日(GMT)以來的精確到毫秒的長整數。
 
      
 若是頭域不能轉換,拋出一個IllegalArgumentException。若是這個請求頭域不存在,這個方法返回-1 
      4
  getHeader
      public String getHeader(String name);
      
返回一個請求頭域的值。(譯者注:與上一個方法不一樣的是,該方法返回一個字符串)
 
      
 若是這個請求頭域不存在,這個方法返回-1 
      5
  getHeaderNames
      public Enumeration getHeaderNames();
      
該方法返回一個String對象的列表,該列表反映請求的全部頭域名。
 
      
 有的引擎可能不容許經過這種方法訪問頭域,在這種狀況下,這個方法返回一個空的列表。 
      6
  getIntHeader
      public int getIntHeader(String name);
      
返回指定的請求頭域的值,這個值被轉換成一個整數。
 
      
 若是頭域不能轉換,拋出一個IllegalArgumentException。若是這個請求頭域不存在,這個方法返回-1 
      7
  getMethod
      public String getMethod();
      
返回這個請求使用的HTTP方法(例如:GETPOSTPUT
 
      8
  getPathInfo
      public String getPathInfo();
      
這個方法返回在這個請求的URLServlet路徑以後的請求URL的額外的路徑信息。若是這個請求URL包括一個查詢字符串,在返回值內將不包括這個查詢字符串。這個路徑在返回以前必須通過URL解碼。若是在這個請求的URLServlet路徑以後沒有路徑信息。這個方法返回空值。
 
      9
  getPathTranslated
      public String getPathTranslated();
      
這個方法得到這個請求的URLServlet路徑以後的額外的路徑信息,並將它轉換成一個真實的路徑。在進行轉換前,這個請求的URL必須通過URL解碼。若是在這個URLServlet路徑以後沒有附加路徑信息。這個方法返回空值。
 
      10
  getQueryString
      public String getQueryString();
      
返回這個請求URL所包含的查詢字符串。一個查詢字串符在一個URL中由一個引出。若是沒有查詢字符串,這個方法返回空值。
 
      11
  getRemoteUser
      public String getRemoteUser
      
返回做了請求的用戶名,這個信息用來做HTTP用戶論證。
 
      
 若是在請求中沒有用戶名信息,這個方法返回空值。 
      12
  getRequestedSessionId
      public String getRequestedSessionId();
      
返回這個請求相應的session id。若是因爲某種緣由客戶端提供的session id是無效的,這個session id將與在當前session中的session id不一樣,與此同時,將創建一個新的session
 
      
 若是這個請求沒與一個session關聯,這個方法返回空值。 
      13
  getRequestURI
      public String getRequestURI();
      
HTTP請求的第一行返回請求的URL中定義被請求的資源的部分。若是有一個查詢字符串存在,這個查詢字符串將不包括在返回值當中。例如,一個請求經過/catalog/books?id=1這樣的URL路徑訪問,這個方法將返回/catalog/books。這個方法的返回值包括了Servlet路徑和路徑信息。
 
      
 若是這個URL路徑中的的一部分通過了URL編碼,這個方法的返回值在返回以前必須通過解碼。 
      14
  getServletPath
      public String getServletPath();
      
這個方法返回請求URL反映調用Servlet的部分。例如,一個Servlet被映射到/catalog/summer這個URL路徑,而一個請求使用了/catalog/summer/casual這樣的路徑。所謂的反映調用Servlet的部分就是指/catalog/summer
 
      
 若是這個Servlet不是經過路徑匹配來調用。這個方法將返回一個空值。 
      15
  getSession
      public HttpSession getSession();
      public HttpSession getSession(boolean create);
      
返回與這個請求關聯的當前的有效的session。若是調用這個方法時沒帶參數,那麼在沒有session與這個請求關聯的狀況下,將會新建一個session。若是調用這個方法時帶入了一個布爾型的參數,只有當這個參數爲真時,session纔會被創建。
 
      
 爲了確保session可以被徹底維持。Servlet開發者必須在響應被提交以前調用該方法。 
      
 若是帶入的參數爲假,並且沒有session與這個請求關聯。這個方法會返回空值。 
      16
  isRequestedSessionIdValid
      public boolean isRequestedSessionIdValid();
      
這個方法檢查與此請求關聯的session當前是否是有效。若是當前請求中使用的session無效,它將不能經過getSession方法返回。
 
      17
  isRequestedSessionIdFromCookie
      public boolean isRequestedSessionIdFromCookie();
      
若是這個請求的session id是經過客戶端的一個cookie提供的,該方法返回真,不然返回假。
 
      18
  isRequestedSessionIdFromURL
      public boolean isRequestedSessionIdFromURL();
      
若是這個請求的session id是經過客戶端的URL的一部分提供的,該方法返回真,不然返回假。請注意此方法與isRequestedSessionIdFromUrlURL的拼寫上不一樣。
 
      
 如下方法將被取消 \

      19
 isRequestedSessionIdFromUrl
      public boolean isRequestedSessionIdFromUrl();
      
該方法被isRequestedSessionIdFromURL代替。
 

      
 2、HttpServletResponse接口 
      
 定義 \

      public interface HttpServletResponse extends ServletResponse
      
描述一個返回到客戶端的HTTP迴應。這個接口容許Servlet程序員利用HTTP協議規定的頭信息。
 
      
 成員變量 
      public static final int SC_CONTINUE = 100;
      public static final int SC_SWITCHING_PROTOCOLS = 101;
      public static final int SC_OK = 200;
      public static final int SC_CREATED = 201;
      public static final int SC_ACCEPTED = 202;
      public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
      public static final int SC_NO_CONTENT = 204;
      public static final int SC_RESET_CONTENT = 205;
      public static final int SC_PARTIAL_CONTENT = 206;
      public static final int SC_MULTIPLE_CHOICES = 300;
      public static final int SC_MOVED_PERMANENTLY = 301;
      public static final int SC_MOVED_TEMPORARILY = 302;
      public static final int SC_SEE_OTHER = 303;
      public static final int SC_NOT_MODIFIED = 304;
      public static final int SC_USE_PROXY = 305;
      public static final int SC_BAD_REQUEST = 400;
      public static final int SC_UNAUTHORIZED = 401;
      public static final int SC_PAYMENT_REQUIRED = 402;
      public static final int SC_FORBIDDEN = 403;
      public static final int SC_NOT_FOUND = 404;
      public static final int SC_METHOD_NOT_ALLOWED = 405;
      public static final int SC_NOT_ACCEPTABLE = 406;
      public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
      public static final int SC_REQUEST_TIMEOUT = 408;
      public static final int SC_CONFLICT = 409;
      public static final int SC_GONE = 410;
      public static final int SC_LENGTH_REQUIRED = 411;
      public static final int SC_PRECONDITION_FAILED = 412;
      public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
      public static final int SC_REQUEST_URI_TOO_LONG = 414;
      public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
      public static final int SC_INTERNAL_SERVER_ERROR = 500;
      public static final int SC_NOT_IMPLEMENTED = 501;
      public static final int SC_BAD_GATEWAY = 502;
      public static final int SC_SERVICE_UNAVAILABLE = 503;
      public static final int SC_GATEWAY_TIMEOUT = 504;
      public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
      
 以上HTTP產狀態碼是由HTTP/1.1定義的。 
      
 方法 
      1
  addCookie
      public void addCookie(Cookie cookie);
      
在響應中增長一個指定的cookie。可屢次調用該方法以定義多個cookie。爲了設置適當的頭域,該方法應該在響應被提交以前調用。
 
      2
  containsHeader
      public boolean containsHeader(String name);
      
檢查是否設置了指定的響應頭。
 
      3
  encodeRedirectURL
      public String encodeRedirectURL(String url);
      
sendRedirect方法使用的指定URL進行編碼。若是不須要編碼,就直接返回這個URL。之因此提供這個附加的編碼方法,是由於在redirect的狀況下,決定是否對URL進行編碼的規則和通常狀況有所不一樣。所給的URL必須是一個絕對URL。相對URL不能被接收,會拋出一個IllegalArgumentException
 
      
 全部提供給sendRedirect方法的URL都應經過這個方法運行,這樣才能確保會話跟蹤可以在全部瀏覽器中正常運行。 
      4
  encodeURL
      public String encodeURL(String url);
      
對包含session IDURL進行編碼。若是不須要編碼,就直接返回這個URLServlet引擎必須提供URL編碼方法,由於在有些狀況下,咱們將不得不重寫URL,例如,在響應對應的請求中包含一個有效的session,可是這個session不能被非URL的(例如cookie)的手段來維持。
 
      
 全部提供給ServletURL都應經過這個方法運行,這樣才能確保會話跟蹤可以在全部瀏覽器中正常運行。 
      5
  sendError
      public void sendError(int statusCode) throws IOException;
      public void sendError(int statusCode, String message) throws
         IOException;
      
用給定的狀態碼發給客戶端一個錯誤響應。若是提供了一個message參數,這將做爲響應體的一部分被髮出,不然,服務器會返回錯誤代碼所對應的標準信息。
 
      
 調用這個方法後,響應當即被提交。在調用這個方法後,Servlet不會再有更多的輸出。 
      6
  sendRedirect
      public void sendRedirect(String location) throws IOException;
      
使用給定的路徑,給客戶端發出一個臨時轉向的響應(SC_MOVED_TEMPORARILY)。給定的路徑必須是絕對URL。相對URL將不能被接收,會拋出一個IllegalArgumentException
 
      
 這個方法必須在響應被提交以前調用。調用這個方法後,響應當即被提交。在調用這個方法後,Servlet不會再有更多的輸出。 
      7
  setDateHeader
      public void setDateHeader(String name, long date);
      
用一個給定的名稱和日期值設置響應頭,這裏的日期值應該是反映自1970-1-1日(GMT)以來的精確到毫秒的長整數。若是響應頭已經被設置,新的值將覆蓋當前的值。
 
      8
  setHeader
      public void setHeader(String name, String value);
      
用一個給定的名稱和域設置響應頭。若是響應頭已經被設置,新的值將覆蓋當前的值。
 
      9
  setIntHeader
      public void setIntHeader(String name, int value);
      
用一個給定的名稱和整形值設置響應頭。若是響應頭已經被設置,新的值將覆蓋當前的值。
 
      10
  setStatus
      public void setStatus(int statusCode);
      
這個方法設置了響應的狀態碼,若是狀態碼已經被設置,新的值將覆蓋當前的值。
 
      
 如下的幾個方法將被取消 \
      11
 encodeRedirectUrl
      public String encodeRedirectUrl(String url);
      
該方法被encodeRedirectURL取代。
 
      12
 encodeUrl
      public String encodeUrl(String url);
      
該方法被encodeURL取代。
 
      13
 setStatus
      public void setStatus(int statusCode, String message);
      
這個方法設置了響應的狀態碼,若是狀態碼已經被設置,新的值將覆蓋當前的值。若是提供了一個message,它也將會被做爲響應體的一部分被髮送。
 

      
 3、HttpSession接口 
      
 定義 \
      public interface HttpSession
      
這個接口被Servlet引擎用來實如今HTTP客戶端和HTTP會話二者的關聯。這種關聯可能在多外鏈接和請求中持續一段給定的時間。session用來在無狀態的HTTP協議下越過多個請求頁面來維持狀態和識別用戶。
 
      
 一個session能夠經過cookie或重寫URL來維持。 
      
 方法 
      1
  getCreationTime
      public long getCreationTime();
      
返回創建session的時間,這個時間表示爲自1970-1-1日(GMT)以來的毫秒數。
 
      2
 getId
      public String getId();
      
返回分配給這個session的標識符。一個HTTP session的標識符是一個由服務器來創建和維持的惟一的字符串。
 
      3
  getLastAccessedTime
      public long getLastAccessedTime();
      
返回客戶端最後一次發出與這個session有關的請求的時間,若是這個session是新創建的,返回-1。這個時間表示爲自1970-1-1日(GMT)以來的毫秒數。
 
      4
 getMaxInactiveInterval
      public int getMaxInactiveInterval();
      
返加一個秒數,這個秒數表示客戶端在不發出請求時,sessionServlet引擎維持的最長時間。在這個時間以後,Servlet引擎可能被Servlet引擎終止。若是這個session不會被終止,這個方法返回-1
 
      
 session無效後再調用這個方法會拋出一個IllegalStateException 
      5
  getValue
      public Object getValue(String name);
      
返回一個以給定的名字綁定到session上的對象。若是不存在這樣的綁定,返回空值。
 
      
 session無效後再調用這個方法會拋出一個IllegalStateException 
      6
  getValueNames
      public String[] getValueNames();
      
以一個數組返回綁定到session上的全部數據的名稱。
 
      
 session無效後再調用這個方法會拋出一個IllegalStateException 
      7
  invalidate
      public void invalidate();
      
這個方法會終止這個session。全部綁定在這個session上的數據都會被清除。並經過HttpSessionBindingListener接口的valueUnbound方法發出通告。
 
      8
  isNew
      public boolean isNew();
      
返回一個布爾值以判斷這個session是否是新的。若是一個session已經被服務器創建可是尚未收到相應的客戶端的請求,這個session將被認爲是新的。這意味着,這個客戶端尚未加入會話或沒有被會話公認。在他發出下一個請求時還不能返回適當的session認證信息。
 
      
 session無效後再調用這個方法會拋出一個IllegalStateException 
      9
  putValue
      public void putValue(String name, Object value);
      
以給定的名字,綁定給定的對象到session中。已存在的同名的綁定會被重置。這時會調用HttpSessionBindingListener接口的valueBound方法。
 
      
 session無效後再調用這個方法會拋出一個IllegalStateException 
      10
  removeValue
      public void removeValue(String name);
      
取消給定名字的對象在session上的綁定。若是未找到給定名字的綁定的對象,這個方法什麼出不作。這時會調用HttpSessionBindingListener接口的valueUnbound方法。
 
      
 session無效後再調用這個方法會拋出一個IllegalStateException 
      11
  setMaxInactiveInterval
      public int setMaxInactiveInterval(int interval);
      
設置一個秒數,這個秒數表示客戶端在不發出請求時,sessionServlet引擎維持的最長時間。
 
      
 如下這個方法將被取消 \
      12
 getSessionContext
      public HttpSessionContext getSessionContext();
      
返回session在其中得以保持的環境變量。這個方法和其餘全部HttpSessionContext的方法同樣被取消了。
 

      
 4、HttpSessionBindingListener接口 
      
 定義 \
      public interface HttpSessionBindingListener
      
這個對象被加入到HTTPsession中,執行這個接口會通告有沒有什麼對象被綁定到這個HTTP session中或被從這個HTTP session中取消綁定。
 
      
 方法 
      1
  valueBound
      public void valueBound(HttpSessionBindingEvent event);
      
當一個對象被綁定到session中,調用此方法。HttpSession.putValue方法被調用時,Servlet引擎應該調用此方法。
 
      2
  valueUnbound
      public void valueUnbound(HttpSessionBindingEvent event);
      
當一個對象被從session中取消綁定,調用此方法。HttpSession.removeValue方法被調用時,Servlet引擎應該調用此方法。
 

      
 5、HttpSessionContext接口 
      
 定義 \
      
此接口將被取消
 \
      public interface HttpSessionContext
      
這個對象是與一組HTTP session關聯的單一的實體。
 
      
 這個接口因爲安全的緣由被取消,它出如今目前的版本中僅僅是爲了兼容性的緣由。這個接口的方法將模擬之前的版本的定義返回相應的值。 
      
 方法 
      1
  getSession
      public HttpSession getSession(String sessionId);
      
當初用來返回與這個session id相關的session。如今返回空值。
 
      2
  getIds
      public Enumeration getIds();
      
當初用來返回這個環境下全部session id的列表。如今返回空的列表。
 

      
 6、Cookie \
      
定義
 \
      public class Cookie implements Cloneable
      
這個類描述了一個cookie,有關cookie的定義你能夠參照Netscape Communications Corporation的說明,也能夠參照RFC 2109
 
      
 構造函數 
      public Cookie(String name, String value);
      
 用一個name-value對定義一個cookie。這個name必須能被HTTP/1.1所接受。 
      
 以字符$開頭的nameRFC 2109保留。 
      
 給定的name若是不能被HTTP/1.1所接受,該方法拋出一個IllegalArgumentException 
      
 方法 
      1
  getComment
      public String getComment();
      
返回描述這個cookie目的的說明,若是未定義這個說明,返回空值。
 
      2
  getDomain
      public String getDomain();
      
返回這個cookie能夠出現的區域,若是未定義區域,返回空值。
 
      3
  getMaxAge
      public int getMaxAge();
      
這個方法返回這個cookie指定的最長存活時期。若是未定義這個最長存活時期,該方法返回-1
 
      4
  getName
      public String getName();
      
該方法返回cookie名。
 
      5
  getPath
      public String getPath();
      
返回這個cookie有效的全部URL路徑的前綴,若是未定義,返回空值。
 
      6
  getSecure
      public boolean getSecure();
      
若是這個cookie只經過安全通道傳輸返回真,不然返回假。
 
      7
  getValue
      public String getValue();
      
該方法返回cookie的值。
 
      8
  getVersion
      public int getVersion();
      
返回cookie的版本。版本1RFC 2109解釋。版本0Netscape Communications Corporation的說明解釋。新構造的cookie默認使用版本0
 
      9
  setComment
      public void setComment(String purpose);
      
若是一個用戶將這個cookie提交給另外一個用戶,必須經過這個說明描述這個cookie的目的。版本0不支持這個屬性。
 
      10
  setDomain
      public void setDomain(String pattern);
      
這個方法設置cookie的有效域的屬性。這個屬性指定了cookie能夠出現的區域。一個有效域以一個點開頭(.foo.com),這意味着在指定的域名解析系統的區域中(多是www.foo.com但不是a.b.foo.com)的主機能夠看到這個cookie。默認狀況是,cookie只能返回保存它的主機。
 
      11
  setMaxAge
      public void setMaxAge(int expiry);
      
這個方法設定這個cookie的最長存活時期。在該存活時期以後,cookie會被終目。負數表示這個cookie不會生效,0將從客戶端刪除這個cookie
 
         12
  setPath
      public void setPath(String uri);
      
這個方法設置cookie的路徑屬性。客戶端只能向以這個給定的路徑String開頭的路徑返回cookie
 
      13
  setSecure
      public void setSecure(boolean flag);
      
指出這個cookie只能經過安全通道(例如HTTPS)發送。只有當產生這個cookie的服務器使用安全協議發送這個cookie值時才能這樣設置。
 
      14
  setValue
      public void setValue(String newValue);
      
設置這個cookie的值,對於二進制數據採用BASE64編碼。
 
      
 版本0不能使用空格、{}()=、,、「」/?@、:以及;。 
      15
  setVersion
      public void setVersion(int v);
      
設置cookie的版本號
 

      
 7、HttpServlet \
      
定義
 \
      public class HttpServlet extends GenericServlet implements 
         Serializable
      
這是一個抽象類,用來簡化HTTP Servlet寫做的過程。它是GenericServlet類的擴充,提供了一個處理HTTP協議的框架。
 
      
 在這個類中的service方法支持例如GETPOST這樣的標準的HTTP方法。這一支持過程是經過分配他們到適當的方法(例如doGetdoPost)來實現的。 
      
 方法 
      1
  doDelete
      protected void doDelete(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP DELETE操做。這個操做容許客戶端請求從服務器上刪除URL。這一操做可能有負面影響,對此用戶就負起責任。
 
      
 這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。當你要處理DELETE請求時,你必須重載這一方法。 
      2
  doGet
      protected void doGet(HttpServletRequest request, 
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP GET操做。這個操做容許客戶端簡單地從一個HTTP服務器得到資源。對這個方法的重載將自動地支持HEAD方法。
 
      GET
 操做應該是安全並且沒有負面影響的。這個操做也應該能夠安全地重複。 
      
 這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。 
      3
  doHead
      protected void doHead(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP HEAD操做。默認的狀況是,這個操做會按照一個無條件的GET方法來執行,該操做不向客戶端返回任何數據,而僅僅是返回包含內容長度的頭信息。
 
      
 GET操做同樣,這個操做應該是安全並且沒有負面影響的。這個操做也應該能夠安全地重複。 
      
 這個方法的默認執行結果是自動處理HTTP HEAD操做,這個方法不須要被一個子類執行。 
      4
 doOptions
      protected void doOptions(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP OPTION操做。這個操做自動地決定支持哪種HTTP方法。例如,一個Servlet寫了一個HttpServlet的子類並重載了doGet方法,doOption會返回下面的頭:
 
      Allow: GET,HEAD,TRACE,OPTIONS
      
 你通常不須要重載這個方法。 
      5
  doPost
      protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP POST操做。這個操做包含請求體的數據,Servlet應該按照他行事。
 
      
 這個操做可能有負面影響。例如更新存儲的數據或在線購物。 
      
 這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。當你要處理POST操做時,你必須在HttpServlet的子類中重載這一方法。 
      6
  doPut
      protected void doPut(HttpServletRequest request, 
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP PUT操做。這個操做相似於經過FTP發送文件。
 
      
 這個操做可能有負面影響。例如更新存儲的數據或在線購物。 
      
 這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。當你要處理PUT操做時,你必須在HttpServlet的子類中重載這一方法。 
      7
  doTrace
      protected void doTrace(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP TRACE操做。這個操做的默認執行結果是產生一個響應,這個響應包含一個反映trace請求中發送的全部頭域的信息。
 
      
 當你開發Servlet時,在多數狀況下你須要重載這個方法。 
      8
  getLastModified
      protected long getLastModified(HttpServletRequest request);
      
返回這個請求實體的最後修改時間。爲了支持GET操做,你必須重載這一方法,以精確地反映最後修改的時間。這將有助於瀏覽器和代理服務器減小裝載服務器和網絡資源,從而更加有效地工做。返回的數值是自1970-1-1日(GMT)以來的毫秒數。
 
默認的執行結果是返回一個負數,這標誌着最後修改時間未知,它也不能被一個有條件的GET操做使用。
 
      9
  service
      protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException;
      
這是一個ServletHTTP-specific方案,它分配請求到這個類的支持這個請求的其餘方法。
 
      
 當你開發Servlet時,在多數狀況下你沒必要重載這個方法。 

      
 8、HttpSessionBindingEvent \
      
定義
 \
      public class HttpSessionBindingEvent extends EventObject
      
這個事件是在監聽到HttpSession發生綁定和取消綁定的狀況時連通HttpSessionBindingListener的。這多是一個session被終止或被認定無效的結果。
 
      
 事件源是HttpSession.putValueHttpSession.removeValue 
      
 構造函數 
      public HttpSessionBindingEvent(HttpSession session, String name);
      
 經過引發這個事件的Session和發生綁定或取消綁定的對象名構造一個新的HttpSessionBindingEvent 
      
 方法 
      1
  getName
      public String getName();
      
返回發生綁定和取消綁定的對象的名字。
 
      2
  getSession
      public HttpSession getSession();
      
返回發生綁定和取消綁定的session的名字。
 

         
 9、HttpUtils 
      定義 \
      public class HttpUtils

      
收集HTTP Servlet使用的靜態的有效的方法。
 

      
 方法 

      
 1getRequestURL 

      
 public static StringBuffer getRequestURL(HttpServletRequest request); 

      
 在服務器上重建客戶端用來創建請求的URL。這個方法反映了不一樣的協議(例如httphttps)和端口,但不包含查詢字符串。 
      
 這個方法返回一個StringBuffer而不是一個String,這樣URL能夠被Servlet開發者有效地修改。 

      
 2parsePostData 

      public static Hashtable parsePostData(int len,ServletInputstream in);

      
 解析一個包含MIME類型application/x-www-form-urlencoded的數據的流,並建立一個具備關鍵值-數據對的hash table。這裏的關鍵值是字符串,數據是該字符串所對應的值的列表。一個關鍵值能夠在POST的數據中出現一次或屢次。這個關鍵值每出現一次,它的相應的值就被加入到hash table中的字符串所對應的值的列表中。 
      
 POST數據讀出的數據將通過URL解碼,+將被轉換爲空格以十六進制傳送的數據(例如%xx)將被轉換成字符。 
      
 POST數據無效時,該方法拋出一個IllegalArgumentException 

      
 3parseQueryString 

      
 public static Hashtable parseQueryString(String s); 

      
 解析一個查詢字符串,並建立一個具備關鍵值-數據對的hash table。這裏的數據是該字符串所對應的值的列表。一個關鍵值能夠出現一次或屢次。這個關鍵值每出現一次,它的相應的值就被加入到hash table中的字符串所對應的值的列表中。 
      
 從查詢字符串讀出的數據將通過URL解碼,+將被轉換爲空格以十六進制傳送的數據(例如%xx)將被轉換成字符。 
      
 當查詢字符串無效時,該方法拋出一個IllegalArgumentException 

術語表 
bytecode 
      字節碼:由Java編譯器和Java解釋程序生成的機器代碼。
 

cookie 
      Web服務器創建的數據,該數據存儲在用戶的計算機上,提供了一個Web站點跟蹤用戶的參數並存儲在用戶本身硬盤上的方法。
 

HTTP 
      
 超文本傳輸協議。一個請求響應協議用來鏈接WWW服務器向客戶端瀏覽器傳輸HTML頁面。 

輸入流對象 

         
 一個對象,由ServletInputStream類定義,被Servlet用來從客戶端讀取請求。 

映射 

      
 Servlet實例和Servlet返回數據的URL組成的一對,例如,HelloServlet/hello/index.html 

輸出流對象 

         
 一個對象,由ServletOutputStream class類定義,被Servlet用來向客戶端返回數據。 

request dispatcher object 

      
RequestDispatcher接口定義的一個對象,用來從客戶端接收請求,並將其發送到Web服務器上可用的其餘資源(例如ServletCGIHTML文件或JSP文件)。
 

sandboxed servlet 

      
在一個安全性約束下運行的Servlet
 

servlet 

         
一個小的,具備平臺無關性的,沒有圖形用戶界面的Java程序。它能夠在許多方面擴充Web服務的功能。
 

servlet configuration object 

      ServletConfig
接口定義的一個對象,用來配置一個Servlet
 

servlet context object 

      ServletContext
接口定義的一個對象。給予Servlet有關Servlet引擎的信息。
 

servlet引擎 

      
 Web服務器提供商製做的一個環境,能夠容許Servlet在具體的Web服務器上運行。 

servlet請求對象 

      
ServletRequest接口定義的一個對象,容許Servlet得到用關客戶端請求的數據。
 

servlet response object 

      
ServletResponse接口定義的一個對象,容許Servlet做出響應。
 

servlet runner 

         Java Servlet Developer’s Kit (JSDK)
中的sun.servlet.http.HttpServer過程,它使得Servlet得以運行。
 
會話跟蹤 

      
在一個Web應用程序中,識別一個從同一個客戶端發出的連續的惟一的請求的能力。
 

SSL 
      加密套接字協議層。一個安全協議,用來在Iternet上的客戶端瀏覽器和服務器交換密鑰和加密數據。
 

URI 
      統一資源標識。定義一個Internet地址,它是一個URL的超集。
 

URL 
      統一資源路徑。這個地址定義了到達一個WWW上的文件的路線,一般由協議前綴、域名、目錄名和文件名組成。
,另外一個是不對應
HTTP的通用的軟件包。這兩個軟件包的同時存在使得Java Servlet API可以適應未來的其餘請求-響應的協議。
 
      
  這份文檔以及剛纔說起的Javadoc格式的文檔都描述了這兩個軟件包,Javadoc格式的文檔還描述了你應該如何使用這兩個軟件包中的全部方法。  

      
  有關規範  
      
  你也許對下面的這些Internet規範感興趣,這些規範將直接影響到Servlet API的發展和執行。你能夠從http://info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的全部這些RFC規範。  
      RFC 1738 
統一資源定位器   (URL) 
      RFC 1808 
相關統一資源定位器
 
      RFC 1945 
超文本傳輸協議
  --HTTP/1.0 
      RFC 2045 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第一部分:Internet信息體格式
 
      RFC 2046 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第二部分:媒體類型
 
      RFC 2047 
多用途網際郵件擴充協議(MIME)(多用途Internet郵件擴展)第三部分:信息標題擴展用於非ASCII文本
 
      RFC 2048 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第四部分註冊步驟
 
      RFC 2049 
多用途Internet郵件擴展(多用途網際郵件擴充協議(MIME))第五部分:一致性標準和例子
 
      RFC 2068 
超文本傳輸協議
  -- HTTP/1.1 
      RFC 2069 
一個擴展HTTP:摘要訪問鑑定
 
      RFC 2109 HTTP
狀態管理機制
 
      RFC 2145 HTTP 
版本號的使用和解釋
 
      RFC 2324 
超文本Coffee Pot控制協議
  (HTCPCP/1.0)
      
萬維網協會(http://www.w3.org)管理着這些協議的規範和執行。
 


有關   Java Servlets
      JavaTM servlets
是一個不受平臺約束的Java小程序,它能夠被用來經過多種方法擴充一個Web服務器的功能。你能夠把Servlet理解成Server上的applets,它被編譯成字節碼,這樣它就能夠被動態地載入並用效地擴展主機的處理能力。
 
      Servlet
  applets不一樣的地方是,它不運行在Web瀏覽器或其餘圖形化的用戶界面上。Servlet經過servlet引擎運行在Web服務器中,以執行請求和響應,請求、響應的典型範例是HTTP協議。  
      
  一個客戶端程序,能夠是一個Web瀏覽器,或者是非其餘的能夠鏈接上Internet的程序,它會訪問Web服務器併發出請求。這個請求被運行在Web服務器上的Servlet引擎處理,並返回響應到ServletServlet經過HTTP將這個響應轉發到客戶端。  
在功能上,ServletCGINSAPI有點相似,可是,與他們不一樣的是:Servlet具備平臺無關性。  

      
  Java Servlet概論  
      Servlet與其餘普通的server擴展機制有如下進步:  
      
  由於它採用了不一樣的進程處理模式,因此它比CGI更快。  
      
  它使用了許多Web服務器都支持的標準的API  
      
  它繼承了Java的全部優點,包括易升級以及平臺無關性。  
      
  它能夠調用Java所提供的大量的API的功能模塊。  
      
  這份文檔說明了Java Servlet API的類和接口的方法。有關更多的信息,請參看下面的API說明。  

     
  Servlet的生命週期  
      一個Java servlet具備一個生命週期,這個生命週期定義了一個Servlet如何被載入並被初始化,如何接收請求並做出對請求的響應,如何被從服務中清除。Servlet的生命週期被javax.servlet.Servlet這個接口所定義。  
      
  全部的Java Servlet都會直接地或間接地執行javax.servlet.Servlet接口,這樣它才能在一個Servlet引擎中運行。Servlet引擎是Web 服務器按照Java Servlet API定製的擴展。Servlet引擎提供網絡服務,可以理解MIME請求,並提供一個運行Servlet的容器。  
      javax.servlet.Servlet
  接口定義了在Servlet的生命週期中特定時間以及特定順序被調用的方法。  

      
  Servlet的解析和載入  
      Servlet引擎解析並載入一個Servlet,這個過程能夠發生在引擎啓動時,須要一個Servlet去響應請求時,以及在此之間的任什麼時候候。  
      Servlet
  引擎利用Java類載入工具載入一個ServletServlet引擎能夠從一個本地的文件系統、一個遠程的文件系統以及網絡載入Servlet  

      
  Servlet的初始化  
      Servlet引擎載入Servlet後,Servlet引擎必須對Servlet進行初始化,在這一過程當中,你能夠讀取一些固定存儲的數據、初始化JDBC的鏈接以及創建與其餘資源的鏈接。  
      
  在初始化過程當中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。這樣,Servlet能夠對本身進行配置。  
      init()
  方法得到了一個Servlet配置對象(ServletConfig)。這個對象在Servlet引擎中執行,並容許Servlet經過它獲處相關參數。這個對象使得Servlet可以訪問ServletContext對象。  

      
  Servlet處理請求  
      Servlet
  被初始化以後,它已經能夠處理來自客戶端的請求,每個來自客戶端的請求都被描述成一個ServletRequest對象,Servlet的響應被描述成一個ServletResponse對象。  
      
  當客戶端發出請求時,Servlet引擎傳遞給Servlet一個ServletRequest對象和一個ServletResponse對象,這兩個對象做爲參數傳遞到service()方法中。  
      Servlet
  也能夠執行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有權使用客戶端發出的請求。Servlet能夠經過ServletInputStream對象讀取請求信息。  
      ServletResponse
  接口容許Servlet創建響應頭和狀態代碼。經過執行這個接口,Servlet有權使用ServletOutputStream類來向客戶端返回數據。  

      
  多線程和映射  
      
  在多線程的環境下,Servlet必須能處理許多同時發生的請求。例外的狀況是這個Servlet執行了SingleThreadModel接口,若是是那樣的話,Servlet只能同時處理一個請求。  
      Servlet
  依照Servlet引擎的映射來響應客戶端的請求。一個映射對包括一個Servlet實例以及一個Servlet返回數據的URL,例如:HelloServlet with /hello/index.html  
      
  然而,一個映射多是由一個URL和許多Servlet實例組成,例如:一個分佈式的Servlet引擎可能運行在不止一個的服務器中,這樣的話,每個服務器中均可能有一個Servlet實例,以平衡進程的載入。做爲一個Servlet的開發者,你不能假定一個Servlet只有一個實例。  

      
  Servlet的卸載  
      Servlet引擎並沒必要需保證一個Servlet在任什麼時候候或在服務開啓的任什麼時候候都被載入。Servlet引擎能夠自由的在任什麼時候候使用或清除一個Servlet。所以,咱們不能依賴一個類或實例來存儲重要的信息。  
      
  Servlet引擎決定卸載一個Servlet時(例如,若是這個引擎被關閉或者須要讓資源),這個引擎必須容許Servlet釋放正在使用的資源並存儲有關資料。爲了完成以上工做,引擎會調用Servletdestroy()方法。  
      
在卸載一個Servlet以前,Servlet引擎必須等待全部的service()方法完成或超時結束(Servlet引擎會對超時做出定義)。當一個Servlet被卸載時,引擎將不能給Servlet發送任何請求。引擎必須釋放Servlet並完成無用存儲單元的收集
 

      
  Servlet映射技術  
      做爲一個Servlet引擎的開發者,你必須對於如何映射客戶端的請求到Servlet有大量的適應性。這份說明文檔不規定映射如何發生。可是,你必須可以自由地運用下面的全部技術:  

      
  映射一個Servlet到一個   URL
      
例如,你能夠指定一個特殊的Servlet它僅被來自/feedback/index.html的請求調用。
 

      
  映射一個Servlet到以一個指定的目錄名開始的全部   URL
      
例如,你能夠映射一個Servlet/catalog,這樣來自/catalog/ /catalog/garden/catalog/housewares/index.html的請求都會被映射到這個Servlet。可是來自/catalogtwo/catalog.html的請求沒被映射。
 

      
  映射一個Servlet到全部以一個特定的字段結尾的全部   URL
      
例如,你能夠映射一個來自於全部以in.thtml結尾的請求到一個特定的Servlet
 

      
  映射一個Servlet到一個特殊的URL /servlet/servlet_name  
      
  例如,若是你創建了一個名叫listattributesServlet,你能夠經過使用/servlet/listattributes來訪問這個Servlet  

      
  經過類名調用   Servlet
      
例如,若是Servlet引擎接收了來自/servlet/com.foo.servlet.MailServlet的請求,Servlet引擎會載入這個com.foo.servlet.MailServlet類,創建實例,並經過這個Servlet來處理請求。
 

      
  Servlet環境  
      ServletContext接口定義了一個Servlet環境對象,這個對象定義了一個在Servlet引擎上的Servlet的視圖。經過使用這個對象,Servlet能夠記錄事件、獲得資源並獲得來自Servlet引擎的類(例如RequestDispatcher對象)。一個Servlet只能運行在一個Servlet環境中,可是不一樣的Servlet能夠在Servlet引擎上有不一樣的視圖。  
      
  若是Servlet引擎支持虛擬主機,每一個虛擬主機有一個Servlet環境。一個Servlet環境不能在虛擬主機之間共享。  
      Servlet
  引擎可以容許一個Servlet環境有它本身的活動範圍。  
      
  例如,一個Servlet環境是屬於bank應用的,它將被映射到/bank目錄下。在這種狀況下,一個對getContext方法的調用會返回/bankServlet環境。  

      
  HTTP會話  
      HTTP是一個沒有狀態的協議。要創建一個有效的Web服務應用,你必須可以識別一個連續的來自遠端的客戶機的惟一的請求。隨着時間的過去,發展了許多會話跟蹤的技術,可是使用起來都比較麻煩。  
      Java Servlet API
  提供了一個簡單的接口,經過這個接口,Servlet引擎能夠有效地跟蹤用戶的會話。  

      
  創建Session  
      
  由於HTTP是一個請求-響應協議,一個會話在客戶機加入以前會被認爲是一個新的會話。加入的意思是返回會話跟蹤信息到服務器中,指出會話已被創建。在客戶端加入以前,咱們不能判斷下一個客戶端請求是目前會話的一部分。  
      
  在下面的狀況下,Session會被認爲是新的Session  
      
  客戶端的Session在此以前還不知道  
      
  客戶端選擇不加入Session,例如,若是客戶端拒絕接收來自服務器的   cookie
做爲一個Servlet的開發者,你必須決定你的Web應用是否處理客戶機不加入或不能加入Session。服務器會在Web服務器或Servlet規定的時間內維持一個Session對象。當Session終止時,服務器會釋放Session對象以及全部綁定在Session上的對象。
 
綁定對象到Session  
      
  若是有助於你處理應用的數據需求,你也許須要綁定對象到Session中,你能夠經過一個惟一的名字綁定任何的對象到Session中,這時,你須要使用HttpSession對象。任何綁定到Session上的對象均可以被處理同一會話的Servlet調用。  
      
  有些對象可能須要你知道何時會被放置到Session中或從Session中移開。你能夠經過使用HttpSessionBindingListener接口得到這些信息。當你的應用存儲數據到Session中,或從Session中清除數據,Servlet都會經過HttpSessionBindingListener檢杳什麼類被綁定或被取消綁定。這個接口的方法會通報被綁定或被取消綁定的對象  

API
  對象的說明  

      
  這一部分包含了對Java Servlet API的所有類和接口的詳細說明。這個說明與Javadoc API差很少,可是這份文檔提供了更多的信息。  
API
  包含了兩個軟件包,十二個接口和九個類。  
軟件包:   javax.servlet 
所包含的接口:RequestDispatcherServletServletConfigServletContextServletRequestServletResponseSingleThreadModel
 
所包含的類:GenericServletServletInputStreamServletOutputStreamServletExceptionUnavailableException  

     
  1、RequestDispatcher接口  
      
  定義:  

      
  public interface RequestDispatcher;  

      定義一個對象,從客戶端接收請求,而後將它發給服務器的可用資源(例如ServletCGIHTML文件、JSP文件)。Servlet引擎建立request dispatcher對象,用於封裝由一個特定的URL定義的服務器資源。  
      
  這個接口是專用於封裝Servlet的,可是一個Servlet引擎能夠建立request dispatcher對象用於封裝任何類型的資源。  
      request dispatcher
  對象是由Servlet引擎創建的,而不是由Servlet開發者創建的  

      
  方法  

      
  1forward  

      
  public void forward(ServletRequest request, ServletReponse response)  
      throws ServletException, IOException;  

      
  被用來從這個Servlet向其它服務器資源傳遞請求。當一個Servlet對響應做了初步的處理,並要求其它的對象對此做出響應時,可使用這個方法。  
      
  request對象被傳遞到目標對象時,請求的URL路徑和其餘路徑參數會被調整爲反映目標對象的目標URL路徑。  
      
  若是已經經過響應返回了一個ServletOutputStream對象或PrintWriter對象,這個方法將不能使用,不然,這個方法會拋出一個IllegalStateException  

      
  2include  

      
  public void include(ServletRequest request, ServletResponse response)
      throws ServletException, IOException
 

      
  用來包括髮送給其餘服務器資源的響應的內容。本質上來講,這個方法反映了服務器端的內容。  
      
  請求對象傳到目標對象後會反映調用請求的請求URL路徑和路徑信息。這個響應對象只能調用這個ServletServletOutputStream對象和PrintWriter對象。  
      
  一個調用includeServlet不能設置頭域,若是這個Servlet調用了必須設置頭域的方法(例如cookie),這個方法將不能保證正常使用。做爲一個Servlet開發者,你必須妥善地解決那些可能直接存儲頭域的方法。例如,即便你使用會話跟蹤,爲了保證session的正常工做,你必須在一個調用includeServlet以外開始你的   session

      
2、Servlet接口。
 
      定義  

      
  public interface Servlet  

      
  這個接口定義了一個Servlet:一個在Web服務器上繼承了這個功能的Java類。  

      
  方法  

      
  1init  

      
  public void init(ServletConfig config) throws ServletException;  

      Servlet
  引擎會在Servlet實例化以後,置入服務以前精確地調用init方法。在調用service方法以前,init方法必須成功退出。  
      
  若是init方法拋出一個ServletException,你不能將這個Servlet置入服務中,若是init方法在超時範圍內沒完成,咱們也能夠假定這個Servlet是不具有功能的,也不能置入服務中。  

      
  2service  

      
  public void service(ServletRequest request, ServletResponse response)
      throws ServletException, IOException;
 

      Servlet
  引擎調用這個方法以容許Servlet響應請求。這個方法在Servlet未成功初始化以前沒法調用。在Servlet被初始化以前,Servlet引擎可以封鎖未決的請求。  
      
  在一個Servlet對象被卸載後,直到一個新的Servelt被初始化,Servlet引擎不能調用這個方法  

     
  3destroy  

      
  public void destroy();  

      
  當一個Servlet被從服務中去除時,Servlet引擎調用這個方法。在這個對象的service方法全部線程未所有退出或者沒被引擎認爲發生超時操做時,destroy方法不能被調用。  

      
  4getServletConfig  

      
  public ServletConfig getServletConfig();  

      
  返回一個ServletConfig對象,做爲一個Servlet的開發者,你應該經過init方法存儲ServletConfig對象以便這個方法能返回這個對象。爲了你的便利,GenericServlet在執行這個接口時,已經這樣作了。  

     
  5getServletInfo  

      
  public String getServletInfo();  

      
  容許Servlet向主機的Servlet運行者提供有關它自己的信息。返回的字符串應該是純文本格式而不該有任何標誌(例如HTMLXML等)。  

      
  3、ServletConfig接口  

      
  定義  

      
  public interface ServletConfig  

      
  這個接口定義了一個對象,經過這個對象,Servlet引擎配置一個Servlet而且容許Servlet得到一個有關它的ServletContext接口的說明。每個ServletConfig對象對應着一個惟一的Servlet  

      
  方法  

      
  1getInitParameter  

      
  public String getInitParameter(String name);  

      
  這個方法返回一個包含Servlet指定的初始化參數的String。若是這個參數不存在,返加空值。  

      
  2getInitParameterNames  

      
  public Enumeration getInitParameterNames();  

      
  這個方法返回一個列表String對象,該對象包括Servlet的全部初始化參數名。若是Servlet沒有初始化參數,getInitParameterNames返回一個空的列表。  

      
  3getServletContext  

      
  public ServletContext getServletContext();  

      
  返回這個ServletServletContext對象。  

      
  4、ServletContext接口  

      
  定義  

      
  public interface ServletContext  

      
  定義了一個Servlet的環境對象,經過這個對象,Servlet引擎向Servlet提供環境信息。  
      
  一個Servlet的環境對象必須至少與它所駐留的主機是一一對應的。在一個處理多個虛擬主機的Servlet引擎中(例如,使用了HTTP1.1的主機頭域),每個虛擬主機必須被視爲一個單獨的環境。此外,Servlet引擎還能夠建立對應於一組Servlet的環境對象。  
      
  方法  
      1
  getAttribute
      public Object getAttribute(String name); 
      
返回Servlet環境對象中指定的屬性對象。若是該屬性對象不存在,返回空值。這個方法容許訪問有關這個Servlet引擎的在該接口的其餘方法中還沒有提供的附加信息。
 
      2
    getAttributeNames
      public Enumeration getAttributeNames();
      
返回一個Servlet環境對象中可用的屬性名的列表。
 
      3
    getContext
      public ServletContext getContext(String uripath);
      
返回一個Servlet環境對象,這個對象包括了特定URI路徑的Servlets和資源,若是該路徑不存在,則返回一個空值。URI路徑格式是/dir/dir/filename.ext
 
      
  爲了安全,若是經過這個方法訪問一個受限制的Servlet的環境對象,會返回一個空值。  
      4
    getMajorVersion
      public int getMajorVersion();
      
返回Servlet引擎支持的Servlet API的主版本號。例如對於2.1版,這個方法會返回一個整數2
 
      5
    getMinorVersion
      public int getMinorVersion();
      
返回Servlet引擎支持的Servlet API的次版本號。例如對於2.1版,這個方法會返回一個整數2
 
      6
    getMimeType
      public String getMimeType(String file);
      
返回指定文件的MIME類型,若是這種MIME類型未知,則返回一個空值。MIME類型是由Servlet引擎的配置決定的。
 
      7
    getRealPath
      public String getRealPath(String path);
      
一個符合URL路徑格式的指定的虛擬路徑的格式是:/dir/dir/filename.ext。用這個方法,能夠返回與一個符合該格式的虛擬路徑相對應的真實路徑的String。這個真實路徑的格式應該適合於運行這個Servlet引擎的計算機(包括其相應的路徑解析器)。
 
      
  無論是什麼緣由,若是這一從虛擬路徑轉換成實際路徑的過程不能執行,該方法將會返回一個空值。  
      8
    getResource
      public URL getResource(String uripath);
      
返回一個URL對象,該對象反映位於給定的URL地址(格式:/dir/dir/filename.ext)的Servlet環境對象已知的資源。不管URLStreamHandlers對於訪問給定的環境是否是必須的,Servlet引擎都必須執行。若是給定的路徑的Servlet環境沒有已知的資源,該方法會返回一個空值。
 
      
  這個方法和java.lang.ClassgetResource方法不徹底相同。java.lang.ClassgetResource方法經過裝載類來尋找資源。而這個方法容許服務器產生環境變量給任何資源的任何Servlet,而沒必要依賴於裝載類、特定區域等等。  
      9
    getResourceAsStream
      public InputStream getResourceAsStream(String uripath);
      
返回一個InputStream對象,該對象引用指定的URLServlet環境對象的內容。若是沒找到Servlet環境變量,就會返回空值,URL路徑應該具備這種格式:/dir/dir/filename.ext
 
      
  這個方法是一個經過getResource方法得到URL對象的方便的途徑。請注意,當你使用這個方法時,meta-information(例如內容長度、內容類型)會丟失。  
      10
    getRequestDispatcher
      public RequestDispatcher getRequestDispatcher(String uripath);
      
若是這個指定的路徑下可以找到活動的資源(例如一個ServletJSP頁面,CGI等等)就返回一個特定URLRequestDispatcher對象,不然,就返回一個空值,Servlet引擎負責用一個request dispatcher對象封裝目標路徑。這個request dispatcher對象能夠用來徹底請求的傳送。
 
      11
    getServerInfo
      public String getServerInfo();
      
返回一個String對象,該對象至少包括Servlet引擎的名字和版本號。
 
      12
    log
      public void log(String msg);
      public void log(String msg, Throwable t);
      public void log(Exception exception, String msg); // 
這種用法將被取消
 
      
  寫指定的信息到一個Servlet環境對象的log文件中。被寫入的log文件由Servlet引擎指定,可是一般這是一個事件log。當這個方法被一個異常調用時,log中將包括堆棧跟蹤。  
      13
    setAttribute
      public void setAttribute(String name, Object o);
      
給予Servlet環境對象中你所指定的對象一個名稱。
 
      14
    removeAttribute
      public void removeAttribute(String name);
      
從指定的Servlet環境對象中刪除一個屬性。
 
      
  注:如下幾個方法將被取消  
      15
    getServlet
      public Servlet getServlet(String name) throws ServletException;
      
最初用來返回一個指定名稱的Servlet,若是沒找到就返回一個空值。若是這個Servlet可以返回,這就意味着它已經被初始化,並且已經能夠接受service請求。這是一個危險的方法。當調用這個方法時,可能並不知道Servlet的狀態,這就可能致使有關服務器狀態的問題。而容許一個Servlet訪問其餘Servlet的這個方法也一樣的危險。
 
      
  如今這個方法返回一個空值,爲了保持和之前版本的兼容性,如今這個方法尚未被取消。在之後的API版本中,該方法將被取消。  
      16
    getServletNames
      public Enumeration getServletNames();
      
最初用來返回一個String對象的列表,該列表表示了在這個Servlet環境下全部已知的Servlet對象名。這個列表老是包含這個Servlet自身。
 
基於與上一個方法一樣的理由,這也是一個危險的方法。  
      
  如今這個方法返回一個空的列表。爲了保持和之前版本的兼容性,如今這個方法尚未被取消。在之後的API版本中,該方法將被取消。  
      17
    getServlets
      public Enumeration getServlets();
      
最初用來返回在這個Servelet環境下全部已知的Servlet對象的列表。這個列表老是包含這個Servlet自身。
 
基於與getServlet方法一樣的理由,這也是一個危險的方法。  
      
  如今這個方法返回一個空的列表。爲了保持和之前版本的兼容性,如今這個方法尚未被取消。在之後的API版本中,該方法將被取消。  

      
  5、ServletRequest接口  

      定義  

      
  public interface ServletRequest  

      
  定義一個Servlet引擎產生的對象,經過這個對象,Servlet能夠得到客戶端請求的數據。這個對象經過讀取請求體的數據提供包括參數的名稱、值和屬性以及輸入流的全部數據。  

      
  方法  

      
  1getAttribute  

      
  public Object getAttribute(String name);  

      
  返回請求中指定屬性的值,若是這個屬性不存在,就返回一個空值。這個方法容許訪問一些不提供給這個接口中其餘方法的請求信息以及其餘Servlet放置在這個請求對象內的數據。  

      2
    getAttributeNames

      public Enumeration getAttributeNames();

      
返回包含在這個請求中的全部屬性名的列表。
 

      3
    getCharacterEncoding

      public String getCharacterEncoding();

      
返回請求中輸入內容的字符編碼類型,若是沒有定義字符編碼類型就返回空值。
 

      4
    getContentLength

      public int getContentLength();

      
請求內容的長度,若是長度未知就返回-1
 

      5
    getContentType

      public String getContentType();

      
返回請求數據體的MIME類型,若是類型未知返回空值。
 

      6
    getInputStream

      public ServletInputStream getInputStream() throws IOException;

      
返回一個輸入流用來從請求體讀取二進制數據。若是在此以前已經經過getReader方法得到了要讀取的結果,這個方法會拋出一個IllegalStateException
 

      7
    getParameter

      public String getParameter(String name);

      
以一個String返回指定的參數的值,若是這個參數不存在返回空值。例如,在一個HTTP Servlet中,這個方法會返回一個指定的查詢語句產生的參數的值或一個被提交的表單中的參數值。若是一個參數名對應着幾個參數值,這個方法只能返回經過getParameterValues方法返回的數組中的第一個值。所以,若是這個參數有(或者可能有)多個值,你只能使用getParameterValues方法。
 

      8
    getParameterNames

      public Enumeration getParameterNames();

      
返回全部參數名的String對象列表,若是沒有輸入參數,該方法返回一個空值。
 

      9
    getParameterValues

      public String[] getParameterValues(String name);

      
經過一個String對象的數組返回指定參數的值,若是這個參數不存在,該方法返回一個空值。
 

      10
    getProtocol

      public String getProtocol();

      
返回這個請求所用的協議,其形式是協議/主版本號.次版本號。例如對於一個HTTP1.0的請求,該方法返回HTTP/1.0
 

      11
    getReader

      public BufferedReader getReader() throws IOException;

      
這個方法返回一個buffered reader用來讀取請求體的實體,其編碼方式依照請求數據的編碼方式。若是這個請求的輸入流已經被getInputStream調用得到,這個方法會拋出一個
IllegalStateException
 
      12
    getRemoteAddr

      public String getRemoteAddr();

      
返回發送請求者的IP地址。
 

      13
    getRemoteHost

      public String getRemoteHost();

      
返回發送請求者的主機名稱。若是引擎不能或者選擇不解析主機名(爲了改善性能),這個方法會直接返回IP地址。
 

      14
    getScheme

      public String getScheme();

      
返回請求所使用的URL的模式。例如,對於一個HTTP請求,這個模式就是http
 

      15
    getServerName

      public String getServerName();

      
返回接收請求的服務器的主機名。
 

      16
    getServerPort

      public int getServerPort();

      
返回接收請求的端口號。
 

      17
    setAttribute

      public void setAttribute(String name, Object object);

      
這個方法在請求中添加一個屬性,這個屬性能夠被其餘能夠訪問這個請求對象的對象(例如一個嵌套的Servlet)使用。
 

      
  注:如下方法將被取消  
      getRealPath
      public String getRealPath(String path);
      
返回與虛擬路徑相對應的真實路徑,若是由於某種緣由,這一過程不能進行,該方法將返回一個空值。
 
      
  這個方法和ServletContext接口中的getRealPath方法重複。在2.1版中,ServletContext接口將闡明一個Servlet所能用的全部的路徑的映射。該方法執行的結果將會與ServletContextgetRealPath方法的結果徹底同樣。  

      
  6、ServletResponse接口  
      定義  

      public interface ServletResponse

      
  定義一個Servlet引擎產生的對象,經過這個對象,Servlet對客戶端的請求做出響應。這個響應應該是一個MIME實體,多是一個HTML頁、圖象數據或其餘MIME的格式。  

      
  方法  

      1
    getCharacterEncoding

      public String getCharacterEncoding();

      
返回MIME實體的字符編碼。這個字符編碼能夠是指定的類型,也能夠是與請求頭域所反映的客戶端所能接受的字符編碼最匹配的類型。在HTTP協議中,這個信息被經過Accept-Charset傳送到Servlet引擎。
 
      
  有關字符編碼和MIME的更多信息請參看RFC 2047  

      2
    getOutputStream

      public ServletOutputStream getOutputStream() throws IOException;

      
返回一個記錄二進制的響應數據的輸出流。
 

      
  若是這個響應對象已經調用getWriter,將會拋出IllegalStateException  

      3
    getWriter

      public PrintWriter getWriter throws IOException;

      
這個方法返回一個PringWriter對象用來記錄格式化的響應實體。若是要反映使用的字符編碼,必須修改響應的MIME類型。在調用這個方法以前,必須設定響應的content類型。
 

      
  若是沒有提供這樣的編碼類型,會拋出一個UnsupportedEncodingException,若是這個響應對象已調用getOutputStream,會拋出一個getOutputStream  

      4
    setContentLength

      public void setContentLength(int length);

      
設置響應的內容的長度,這個方法會覆蓋之前對內容長度的設定。
 
      
  爲了保證成功地設定響應頭的內容長度,在響應被提交到輸出流以前必須調用這個方法。  

      5
    setContentType

      public void setContentType(String type);

      
這個方法用來設定響應的content類型。這個類型之後可能會在另外的一些狀況下被隱式地修改,這裏所說的另外的狀況可能當服務器發現有必要的狀況下對MIME的字符設置。
 
      
  爲了保證成功地設定響應頭的content類型,在響應被提交到輸出流以前必須調用這個方法。  

      
  7、SingleThreadModel接口  
      
  定義  
      public interface SingleThreadModel;
      
  這是一個空接口,它指定了系統如何處理對同一個Servlet的調用。若是一個Servlet被這個接口指定,那麼在這個Servlet中的service方法中將不會有兩個線程被同時執行。  
      Servlet
  能夠經過維持一個各自獨立的Servlet實例池,或者經過只讓Servletservice中只有一個線程的方法來實現這個保證。  

      
  8、GenericServlet  
      public abstract class GenericServlet implements Servlet,
            ServletConfig, Serializable;
      
  這個類的存在使得編寫Servlet更加方便。它提供了一個簡單的方案,這個方案用來執行有關Servlet生命週期的方法以及在初始化時對ServletConfig對象和ServletContext對象進行說明。  
      
  方法  
      1
    destroy
      public void destroy();
      
在這裏destroy方法不作任何其餘的工做。
 
      2
    getInitParameter
      public String getInitParameter(String name);
      
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法。
 
      3
    getInitParameterNames
      public Enumeration getInitParameterNames();
      
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法。
 
      4
    getServletConfig
      public ServletConfig getServletConfig();
      
返回一個經過這個類的init方法產生的ServletConfig對象的說明。
 
      5
    getServletContext
      public ServletContext getServletContext();
      
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法。
 
      6
    getServletInfo
      public String getServletInfo();
      
返回一個反映Servlet版本的String
 
      7
    init
      public void init() throws ServletException;
      public void init(ServletConfig config) throws ServletException;
      init(ServletConfig config)
方法是一個對這個Servlet的生命週期進行初始化的簡便的途徑。
 
      init()
  方法是用來讓你對GenericServlet類進行擴充的,使用這個方法時,你不須要存儲config對象,也不須要調用super.init(config)  
      init(ServletConfig config)
  方法會存儲config對象而後調用init()。若是你重載了這個方法,你必須調用super.init(config),這樣GenericServlet類的其餘方法才能正常工做。  
      8
    log
      public void log(String msg);
      public void log(String msg, Throwable cause);
      
經過Servlet content對象將Servlet的類名和給定的信息寫入log文件中。
 
      9
    service
      public abstract void service(ServletRequest request, ServletResponse
            response) throws ServletException, IOException;
      
這是一個抽象的方法,當你擴展這個類時,爲了執行網絡請求,你必須執行它。
 

      
  9、ServletInputStream  
      
  定義  
      public abstract class ServletInputStream extends InputStream
      
  這個類定義了一個用來讀取客戶端的請求信息的輸入流。這是一個Servlet引擎提供的抽象類。一個Servlet經過使用ServletRequest接口得到了對一個ServletInputStream對象的說明。  
      
  這個類的子類必須提供一個從InputStream接口讀取有關信息的方法。  
      
  方法  
      1
    readLine
      public int readLine(byte[] b, int off, int len) throws IOException;
      
從輸入流的指定的偏移量開始將指定長度的字節讀入到指定的數組中。若是該行全部請求的內容都已被讀取,這個讀取的過程將結束。若是是遇到了新的一行,新的一行的首個字符也將被讀入到數組中。
 

      
  10、ServletOutputStream  
      
  定義  
      public abstract class ServletOutputStream extends OutputStream
      
  這是一個由Servlet引擎使用的抽象類。Servlet經過使用ServletResponse接口的使用得到了對一個這種類型的對象的說明。利用這個輸出流能夠將數據返回到客戶端。  
      
  這個類的子類必須提供一個向OutputStream接口寫入有關信息的方法。  
      
  在這個接口中,當一個刷新或關閉的方法被調用時。全部數據緩衝區的信息將會被髮送到客戶端,也就是說響應被提交了。請注意,關閉這種類型的對象時不必定要關閉隱含的socket流。  
      
  方法  
      1
    print
      public void print(String s) throws IOException;
      public void print(boolean b) throws IOException;
      public void print(char c) throws IOException;
      public void print(int i) throws IOException;
      public void print(long l) throws IOException;
      public void print(float f) throws IOException;
      public void print(double d) throws IOException;
      
輸出變量到輸出流中
 
      2
    println
      public void println() throws IOException;
      public void println(String s) throws IOException;
      public void println(boolean b) throws IOException;
      public void println(char c) throws IOException;
      public void println(int i) throws IOException;
      public void println(long l) throws IOException;
      public void println(float f) throws IOException;
      public void println(double d) throws IOException;
      
輸出變量到輸出流中,並增長一個回車換行符
 

      
  11、ServletException  
      
  定義  
      public class ServletException extends Exception
      
  Servlet遇到問題時拋出的一個異常。  
      
  構造函數  
      public ServletException();
      public ServletException(String message);
      public ServletException(String message, Throwable cause);
      public ServletException(Throwable cause);
      
  構造一個新的ServletException,若是這個構造函數包括一個Throwable參數,這個Throwable對象將被做爲可能拋出這個異常的緣由。  
      
  方法  
      1
    getRootCause
      public Throwable getRootCause();
      
若是配置了拋出這個異常的緣由,這個方法將返回這個緣由,不然返回一個空值。
 

      
  12、UnavailableException  
      
  定義  
      public class UnavailableException extends ServletException
      
  不論一個Servlet是永久地仍是臨時地無效,都會拋出這個異常。Servlet會記錄這個異常以及Servlet引擎所要採起的相應措施。  
      
  臨時的無效是指Servlet在某一時間因爲一個臨時的問題而不能處理請求。例如,在另外一個不一樣的應用層的服務(多是數據庫)沒法使用。這個問題可能會自行糾正或者須要採起其餘的糾正措施。  
      
  永久的無效是指除非管理員採起措施,這個Servlet將不能處理客戶端的請求。例如,這個Servlet配置信息丟失或Servlet的狀態被破壞。  
      Servlet
  引擎能夠安全地處理包括永久無效在內的這兩種異常,可是對臨時無效的正常處理可使得Servlet引擎更健壯。特別的,這時對Servlet的請求只是被阻止(或者是被延期)一段時間,這顯然要比在service本身從新啓動前徹底拒絕請求更爲科學。  
      
  構造函數  
      public UnavailableException(Servlet servlet, String message);
      public UnavailableException(int seconds, Servlet servlet, 
            String message);
      
  構造一個包含指定的描述信息的新的異常。若是這個構造函數有一個關於秒數的參數,這將給出Servlet發生臨時無效後,可以從新處理請求的估計時間。若是不包含這個參數,這意味着這個Servlet永久無效。  
      
  方法  
      1
    getServlet
      public Servlet getServlet();
      
返回報告無效的Servlet。這被Servlet引擎用來識別受到影響的Servlet
 
      2
    getUnavailableSeconds
      public int getUnavailableSeconds();
      
返回Servlet預期的無效時間,若是這個Servlet是永久無效,返回-1
 
      3
    isPermanent
      public boolean isPermanent();
      
若是這個Servlet永久無效,返回布爾值true,指示必須採起一些管理行動以使得這個Servlet可用。
    

軟件包:
  javax.servlet.http 
      
所包含的接口:HttpServletRequestHttpServletResponseHttpSessionHttpSessionBindingListenerHttpSessionContext
 
      
  所包含的類:CookieHttpServletHttpSessionBindingEventHttpUtils  

      
  1、HttpServletRequest接口  
      
  定義   \
      public interface HttpServletRequest extends ServletRequest;
      
用來處理一個對ServletHTTP格式的請求信息。
 
      
  方法  
      1
    getAuthType
      public String getAuthType();
      
返回這個請求的身份驗證模式。
 
      2
    getCookies
      public Cookie[] getCookies();
      
返回一個數組,該數組包含這個請求中當前的全部cookie。若是這個請求中沒有cookie,返回一個空數組。
 
      3
    getDateHeader
      public long getDateHeader(String name);
      
返回指定的請求頭域的值,這個值被轉換成一個反映自1970-1-1日(GMT)以來的精確到毫秒的長整數。
 
      
  若是頭域不能轉換,拋出一個IllegalArgumentException。若是這個請求頭域不存在,這個方法返回-1  
      4
    getHeader
      public String getHeader(String name);
      
返回一個請求頭域的值。(譯者注:與上一個方法不一樣的是,該方法返回一個字符串)
 
      
  若是這個請求頭域不存在,這個方法返回-1  
      5
    getHeaderNames
      public Enumeration getHeaderNames();
      
該方法返回一個String對象的列表,該列表反映請求的全部頭域名。
 
      
  有的引擎可能不容許經過這種方法訪問頭域,在這種狀況下,這個方法返回一個空的列表。  
      6
    getIntHeader
      public int getIntHeader(String name);
      
返回指定的請求頭域的值,這個值被轉換成一個整數。
 
      
  若是頭域不能轉換,拋出一個IllegalArgumentException。若是這個請求頭域不存在,這個方法返回-1  
      7
    getMethod
      public String getMethod();
      
返回這個請求使用的HTTP方法(例如:GETPOSTPUT
 
      8
    getPathInfo
      public String getPathInfo();
      
這個方法返回在這個請求的URLServlet路徑以後的請求URL的額外的路徑信息。若是這個請求URL包括一個查詢字符串,在返回值內將不包括這個查詢字符串。這個路徑在返回以前必須通過URL解碼。若是在這個請求的URLServlet路徑以後沒有路徑信息。這個方法返回空值。
 
      9
    getPathTranslated
      public String getPathTranslated();
      
這個方法得到這個請求的URLServlet路徑以後的額外的路徑信息,並將它轉換成一個真實的路徑。在進行轉換前,這個請求的URL必須通過URL解碼。若是在這個URLServlet路徑以後沒有附加路徑信息。這個方法返回空值。
 
      10
    getQueryString
      public String getQueryString();
      
返回這個請求URL所包含的查詢字符串。一個查詢字串符在一個URL中由一個引出。若是沒有查詢字符串,這個方法返回空值。
 
      11
    getRemoteUser
      public String getRemoteUser
      
返回做了請求的用戶名,這個信息用來做HTTP用戶論證。
 
      
  若是在請求中沒有用戶名信息,這個方法返回空值。  
      12
    getRequestedSessionId
      public String getRequestedSessionId();
      
返回這個請求相應的session id。若是因爲某種緣由客戶端提供的session id是無效的,這個session id將與在當前session中的session id不一樣,與此同時,將創建一個新的session
 
      
  若是這個請求沒與一個session關聯,這個方法返回空值。  
      13
    getRequestURI
      public String getRequestURI();
      
HTTP請求的第一行返回請求的URL中定義被請求的資源的部分。若是有一個查詢字符串存在,這個查詢字符串將不包括在返回值當中。例如,一個請求經過/catalog/books?id=1這樣的URL路徑訪問,這個方法將返回/catalog/books。這個方法的返回值包括了Servlet路徑和路徑信息。
 
      
  若是這個URL路徑中的的一部分通過了URL編碼,這個方法的返回值在返回以前必須通過解碼。  
      14
    getServletPath
      public String getServletPath();
      
這個方法返回請求URL反映調用Servlet的部分。例如,一個Servlet被映射到/catalog/summer這個URL路徑,而一個請求使用了/catalog/summer/casual這樣的路徑。所謂的反映調用Servlet的部分就是指/catalog/summer
 
      
  若是這個Servlet不是經過路徑匹配來調用。這個方法將返回一個空值。  
      15
    getSession
      public HttpSession getSession();
      public HttpSession getSession(boolean create);
      
返回與這個請求關聯的當前的有效的session。若是調用這個方法時沒帶參數,那麼在沒有session與這個請求關聯的狀況下,將會新建一個session。若是調用這個方法時帶入了一個布爾型的參數,只有當這個參數爲真時,session纔會被創建。
 
      
  爲了確保session可以被徹底維持。Servlet開發者必須在響應被提交以前調用該方法。  
      
  若是帶入的參數爲假,並且沒有session與這個請求關聯。這個方法會返回空值。  
      16
    isRequestedSessionIdValid
      public boolean isRequestedSessionIdValid();
      
這個方法檢查與此請求關聯的session當前是否是有效。若是當前請求中使用的session無效,它將不能經過getSession方法返回。
 
      17
    isRequestedSessionIdFromCookie
      public boolean isRequestedSessionIdFromCookie();
      
若是這個請求的session id是經過客戶端的一個cookie提供的,該方法返回真,不然返回假。
 
      18
    isRequestedSessionIdFromURL
      public boolean isRequestedSessionIdFromURL();
      
若是這個請求的session id是經過客戶端的URL的一部分提供的,該方法返回真,不然返回假。請注意此方法與isRequestedSessionIdFromUrlURL的拼寫上不一樣。
 
      
  如下方法將被取消   \

      19
  isRequestedSessionIdFromUrl
      public boolean isRequestedSessionIdFromUrl();
      
該方法被isRequestedSessionIdFromURL代替。
 

      
  2、HttpServletResponse接口  
      
  定義   \

      public interface HttpServletResponse extends ServletResponse
      
描述一個返回到客戶端的HTTP迴應。這個接口容許Servlet程序員利用HTTP協議規定的頭信息。
 
      
  成員變量  
      public static final int SC_CONTINUE = 100;
      public static final int SC_SWITCHING_PROTOCOLS = 101;
      public static final int SC_OK = 200;
      public static final int SC_CREATED = 201;
      public static final int SC_ACCEPTED = 202;
      public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
      public static final int SC_NO_CONTENT = 204;
      public static final int SC_RESET_CONTENT = 205;
      public static final int SC_PARTIAL_CONTENT = 206;
      public static final int SC_MULTIPLE_CHOICES = 300;
      public static final int SC_MOVED_PERMANENTLY = 301;
      public static final int SC_MOVED_TEMPORARILY = 302;
      public static final int SC_SEE_OTHER = 303;
      public static final int SC_NOT_MODIFIED = 304;
      public static final int SC_USE_PROXY = 305;
      public static final int SC_BAD_REQUEST = 400;
      public static final int SC_UNAUTHORIZED = 401;
      public static final int SC_PAYMENT_REQUIRED = 402;
      public static final int SC_FORBIDDEN = 403;
      public static final int SC_NOT_FOUND = 404;
      public static final int SC_METHOD_NOT_ALLOWED = 405;
      public static final int SC_NOT_ACCEPTABLE = 406;
      public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
      public static final int SC_REQUEST_TIMEOUT = 408;
      public static final int SC_CONFLICT = 409;
      public static final int SC_GONE = 410;
      public static final int SC_LENGTH_REQUIRED = 411;
      public static final int SC_PRECONDITION_FAILED = 412;
      public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
      public static final int SC_REQUEST_URI_TOO_LONG = 414;
      public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
      public static final int SC_INTERNAL_SERVER_ERROR = 500;
      public static final int SC_NOT_IMPLEMENTED = 501;
      public static final int SC_BAD_GATEWAY = 502;
      public static final int SC_SERVICE_UNAVAILABLE = 503;
      public static final int SC_GATEWAY_TIMEOUT = 504;
      public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
      
  以上HTTP產狀態碼是由HTTP/1.1定義的。  
      
  方法  
      1
    addCookie
      public void addCookie(Cookie cookie);
      
在響應中增長一個指定的cookie。可屢次調用該方法以定義多個cookie。爲了設置適當的頭域,該方法應該在響應被提交以前調用。
 
      2
    containsHeader
      public boolean containsHeader(String name);
      
檢查是否設置了指定的響應頭。
 
      3
    encodeRedirectURL
      public String encodeRedirectURL(String url);
      
sendRedirect方法使用的指定URL進行編碼。若是不須要編碼,就直接返回這個URL。之因此提供這個附加的編碼方法,是由於在redirect的狀況下,決定是否對URL進行編碼的規則和通常狀況有所不一樣。所給的URL必須是一個絕對URL。相對URL不能被接收,會拋出一個IllegalArgumentException
 
      
  全部提供給sendRedirect方法的URL都應經過這個方法運行,這樣才能確保會話跟蹤可以在全部瀏覽器中正常運行。  
      4
    encodeURL
      public String encodeURL(String url);
      
對包含session IDURL進行編碼。若是不須要編碼,就直接返回這個URLServlet引擎必須提供URL編碼方法,由於在有些狀況下,咱們將不得不重寫URL,例如,在響應對應的請求中包含一個有效的session,可是這個session不能被非URL的(例如cookie)的手段來維持。
 
      
  全部提供給ServletURL都應經過這個方法運行,這樣才能確保會話跟蹤可以在全部瀏覽器中正常運行。  
      5
    sendError
      public void sendError(int statusCode) throws IOException;
      public void sendError(int statusCode, String message) throws
         IOException;
      
用給定的狀態碼發給客戶端一個錯誤響應。若是提供了一個message參數,這將做爲響應體的一部分被髮出,不然,服務器會返回錯誤代碼所對應的標準信息。
 
      
  調用這個方法後,響應當即被提交。在調用這個方法後,Servlet不會再有更多的輸出。  
      6
    sendRedirect
      public void sendRedirect(String location) throws IOException;
      
使用給定的路徑,給客戶端發出一個臨時轉向的響應(SC_MOVED_TEMPORARILY)。給定的路徑必須是絕對URL。相對URL將不能被接收,會拋出一個IllegalArgumentException
 
      
  這個方法必須在響應被提交以前調用。調用這個方法後,響應當即被提交。在調用這個方法後,Servlet不會再有更多的輸出。  
      7
    setDateHeader
      public void setDateHeader(String name, long date);
      
用一個給定的名稱和日期值設置響應頭,這裏的日期值應該是反映自1970-1-1日(GMT)以來的精確到毫秒的長整數。若是響應頭已經被設置,新的值將覆蓋當前的值。
 
      8
    setHeader
      public void setHeader(String name, String value);
      
用一個給定的名稱和域設置響應頭。若是響應頭已經被設置,新的值將覆蓋當前的值。
 
      9
    setIntHeader
      public void setIntHeader(String name, int value);
      
用一個給定的名稱和整形值設置響應頭。若是響應頭已經被設置,新的值將覆蓋當前的值。
 
      10
    setStatus
      public void setStatus(int statusCode);
      
這個方法設置了響應的狀態碼,若是狀態碼已經被設置,新的值將覆蓋當前的值。
 
      
  如下的幾個方法將被取消   \
      11
  encodeRedirectUrl
      public String encodeRedirectUrl(String url);
      
該方法被encodeRedirectURL取代。
 
      12
  encodeUrl
      public String encodeUrl(String url);
      
該方法被encodeURL取代。
 
      13
  setStatus
      public void setStatus(int statusCode, String message);
      
這個方法設置了響應的狀態碼,若是狀態碼已經被設置,新的值將覆蓋當前的值。若是提供了一個message,它也將會被做爲響應體的一部分被髮送。
 

      
  3、HttpSession接口  
      
  定義   \
      public interface HttpSession
      
這個接口被Servlet引擎用來實如今HTTP客戶端和HTTP會話二者的關聯。這種關聯可能在多外鏈接和請求中持續一段給定的時間。session用來在無狀態的HTTP協議下越過多個請求頁面來維持狀態和識別用戶。
 
      
  一個session能夠經過cookie或重寫URL來維持。  
      
  方法  
      1
    getCreationTime
      public long getCreationTime();
      
返回創建session的時間,這個時間表示爲自1970-1-1日(GMT)以來的毫秒數。
 
      2
  getId
      public String getId();
      
返回分配給這個session的標識符。一個HTTP session的標識符是一個由服務器來創建和維持的惟一的字符串。
 
      3
    getLastAccessedTime
      public long getLastAccessedTime();
      
返回客戶端最後一次發出與這個session有關的請求的時間,若是這個session是新創建的,返回-1。這個時間表示爲自1970-1-1日(GMT)以來的毫秒數。
 
      4
  getMaxInactiveInterval
      public int getMaxInactiveInterval();
      
返加一個秒數,這個秒數表示客戶端在不發出請求時,sessionServlet引擎維持的最長時間。在這個時間以後,Servlet引擎可能被Servlet引擎終止。若是這個session不會被終止,這個方法返回-1
 
      
  session無效後再調用這個方法會拋出一個IllegalStateException  
      5
    getValue
      public Object getValue(String name);
      
返回一個以給定的名字綁定到session上的對象。若是不存在這樣的綁定,返回空值。
 
      
  session無效後再調用這個方法會拋出一個IllegalStateException  
      6
    getValueNames
      public String[] getValueNames();
      
以一個數組返回綁定到session上的全部數據的名稱。
 
      
  session無效後再調用這個方法會拋出一個IllegalStateException  
      7
    invalidate
      public void invalidate();
      
這個方法會終止這個session。全部綁定在這個session上的數據都會被清除。並經過HttpSessionBindingListener接口的valueUnbound方法發出通告。
 
      8
    isNew
      public boolean isNew();
      
返回一個布爾值以判斷這個session是否是新的。若是一個session已經被服務器創建可是尚未收到相應的客戶端的請求,這個session將被認爲是新的。這意味着,這個客戶端尚未加入會話或沒有被會話公認。在他發出下一個請求時還不能返回適當的session認證信息。
 
      
  session無效後再調用這個方法會拋出一個IllegalStateException  
      9
    putValue
      public void putValue(String name, Object value);
      
以給定的名字,綁定給定的對象到session中。已存在的同名的綁定會被重置。這時會調用HttpSessionBindingListener接口的valueBound方法。
 
      
  session無效後再調用這個方法會拋出一個IllegalStateException  
      10
    removeValue
      public void removeValue(String name);
      
取消給定名字的對象在session上的綁定。若是未找到給定名字的綁定的對象,這個方法什麼出不作。這時會調用HttpSessionBindingListener接口的valueUnbound方法。
 
      
  session無效後再調用這個方法會拋出一個IllegalStateException  
      11
    setMaxInactiveInterval
      public int setMaxInactiveInterval(int interval);
      
設置一個秒數,這個秒數表示客戶端在不發出請求時,sessionServlet引擎維持的最長時間。
 
      
  如下這個方法將被取消   \
      12
  getSessionContext
      public HttpSessionContext getSessionContext();
      
返回session在其中得以保持的環境變量。這個方法和其餘全部HttpSessionContext的方法同樣被取消了。
 

      
  4、HttpSessionBindingListener接口  
      
  定義   \
      public interface HttpSessionBindingListener
      
這個對象被加入到HTTPsession中,執行這個接口會通告有沒有什麼對象被綁定到這個HTTP session中或被從這個HTTP session中取消綁定。
 
      
  方法  
      1
    valueBound
      public void valueBound(HttpSessionBindingEvent event);
      
當一個對象被綁定到session中,調用此方法。HttpSession.putValue方法被調用時,Servlet引擎應該調用此方法。
 
      2
    valueUnbound
      public void valueUnbound(HttpSessionBindingEvent event);
      
當一個對象被從session中取消綁定,調用此方法。HttpSession.removeValue方法被調用時,Servlet引擎應該調用此方法。
 

      
  5、HttpSessionContext接口  
      
  定義   \
      
此接口將被取消
  \
      public interface HttpSessionContext
      
這個對象是與一組HTTP session關聯的單一的實體。
 
      
  這個接口因爲安全的緣由被取消,它出如今目前的版本中僅僅是爲了兼容性的緣由。這個接口的方法將模擬之前的版本的定義返回相應的值。  
      
  方法  
      1
    getSession
      public HttpSession getSession(String sessionId);
      
當初用來返回與這個session id相關的session。如今返回空值。
 
      2
    getIds
      public Enumeration getIds();
      
當初用來返回這個環境下全部session id的列表。如今返回空的列表。
 

      
  6、Cookie   \
      
定義
  \
      public class Cookie implements Cloneable
      
這個類描述了一個cookie,有關cookie的定義你能夠參照Netscape Communications Corporation的說明,也能夠參照RFC 2109
 
      
  構造函數  
      public Cookie(String name, String value);
      
  用一個name-value對定義一個cookie。這個name必須能被HTTP/1.1所接受。  
      
  以字符$開頭的nameRFC 2109保留。  
      
  給定的name若是不能被HTTP/1.1所接受,該方法拋出一個IllegalArgumentException  
      
  方法  
      1
    getComment
      public String getComment();
      
返回描述這個cookie目的的說明,若是未定義這個說明,返回空值。
 
      2
    getDomain
      public String getDomain();
      
返回這個cookie能夠出現的區域,若是未定義區域,返回空值。
 
      3
    getMaxAge
      public int getMaxAge();
      
這個方法返回這個cookie指定的最長存活時期。若是未定義這個最長存活時期,該方法返回-1
 
      4
    getName
      public String getName();
      
該方法返回cookie名。
 
      5
    getPath
      public String getPath();
      
返回這個cookie有效的全部URL路徑的前綴,若是未定義,返回空值。
 
      6
    getSecure
      public boolean getSecure();
      
若是這個cookie只經過安全通道傳輸返回真,不然返回假。
 
      7
    getValue
      public String getValue();
      
該方法返回cookie的值。
 
      8
    getVersion
      public int getVersion();
      
返回cookie的版本。版本1RFC 2109解釋。版本0Netscape Communications Corporation的說明解釋。新構造的cookie默認使用版本0
 
      9
    setComment
      public void setComment(String purpose);
      
若是一個用戶將這個cookie提交給另外一個用戶,必須經過這個說明描述這個cookie的目的。版本0不支持這個屬性。
 
      10
    setDomain
      public void setDomain(String pattern);
      
這個方法設置cookie的有效域的屬性。這個屬性指定了cookie能夠出現的區域。一個有效域以一個點開頭(.foo.com),這意味着在指定的域名解析系統的區域中(多是www.foo.com但不是a.b.foo.com)的主機能夠看到這個cookie。默認狀況是,cookie只能返回保存它的主機。
 
      11
    setMaxAge
      public void setMaxAge(int expiry);
      
這個方法設定這個cookie的最長存活時期。在該存活時期以後,cookie會被終目。負數表示這個cookie不會生效,0將從客戶端刪除這個cookie
 
         12
    setPath
      public void setPath(String uri);
      
這個方法設置cookie的路徑屬性。客戶端只能向以這個給定的路徑String開頭的路徑返回cookie
 
      13
    setSecure
      public void setSecure(boolean flag);
      
指出這個cookie只能經過安全通道(例如HTTPS)發送。只有當產生這個cookie的服務器使用安全協議發送這個cookie值時才能這樣設置。
 
      14
    setValue
      public void setValue(String newValue);
      
設置這個cookie的值,對於二進制數據採用BASE64編碼。
 
      
  版本0不能使用空格、{}()=、,、「」/?@、:以及;。  
      15
    setVersion
      public void setVersion(int v);
      
設置cookie的版本號
 

      
  7、HttpServlet   \
      
定義
  \
      public class HttpServlet extends GenericServlet implements 
         Serializable
      
這是一個抽象類,用來簡化HTTP Servlet寫做的過程。它是GenericServlet類的擴充,提供了一個處理HTTP協議的框架。
 
      
  在這個類中的service方法支持例如GETPOST這樣的標準的HTTP方法。這一支持過程是經過分配他們到適當的方法(例如doGetdoPost)來實現的。  
      
  方法  
      1
    doDelete
      protected void doDelete(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP DELETE操做。這個操做容許客戶端請求從服務器上刪除URL。這一操做可能有負面影響,對此用戶就負起責任。
 
      
  這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。當你要處理DELETE請求時,你必須重載這一方法。  
      2
    doGet
      protected void doGet(HttpServletRequest request, 
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP GET操做。這個操做容許客戶端簡單地從一個HTTP服務器得到資源。對這個方法的重載將自動地支持HEAD方法。
 
      GET
  操做應該是安全並且沒有負面影響的。這個操做也應該能夠安全地重複。  
      
  這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。  
      3
    doHead
      protected void doHead(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP HEAD操做。默認的狀況是,這個操做會按照一個無條件的GET方法來執行,該操做不向客戶端返回任何數據,而僅僅是返回包含內容長度的頭信息。
 
      
  GET操做同樣,這個操做應該是安全並且沒有負面影響的。這個操做也應該能夠安全地重複。  
      
  這個方法的默認執行結果是自動處理HTTP HEAD操做,這個方法不須要被一個子類執行。  
      4
  doOptions
      protected void doOptions(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP OPTION操做。這個操做自動地決定支持哪種HTTP方法。例如,一個Servlet寫了一個HttpServlet的子類並重載了doGet方法,doOption會返回下面的頭:
 
      Allow: GET,HEAD,TRACE,OPTIONS
      
  你通常不須要重載這個方法。  
      5
    doPost
      protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP POST操做。這個操做包含請求體的數據,Servlet應該按照他行事。
 
      
  這個操做可能有負面影響。例如更新存儲的數據或在線購物。  
      
  這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。當你要處理POST操做時,你必須在HttpServlet的子類中重載這一方法。  
      6
    doPut
      protected void doPut(HttpServletRequest request, 
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP PUT操做。這個操做相似於經過FTP發送文件。
 
      
  這個操做可能有負面影響。例如更新存儲的數據或在線購物。  
      
  這一方法的默認執行結果是返回一個HTTP BAD_REQUEST錯誤。當你要處理PUT操做時,你必須在HttpServlet的子類中重載這一方法。  
      7
    doTrace
      protected void doTrace(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      
被這個類的service方法調用,用來處理一個HTTP TRACE操做。這個操做的默認執行結果是產生一個響應,這個響應包含一個反映trace請求中發送的全部頭域的信息。
 
      
  當你開發Servlet時,在多數狀況下你須要重載這個方法。  
      8
    getLastModified
      protected long getLastModified(HttpServletRequest request);
      
返回這個請求實體的最後修改時間。爲了支持GET操做,你必須重載這一方法,以精確地反映最後修改的時間。這將有助於瀏覽器和代理服務器減小裝載服務器和網絡資源,從而更加有效地工做。返回的數值是自1970-1-1日(GMT)以來的毫秒數。
 
默認的執行結果是返回一個負數,這標誌着最後修改時間未知,它也不能被一個有條件的GET操做使用。
 
      9
    service
      protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException;
      public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException;
      
這是一個ServletHTTP-specific方案,它分配請求到這個類的支持這個請求的其餘方法。
 
      
  當你開發Servlet時,在多數狀況下你沒必要重載這個方法。  

      
  8、HttpSessionBindingEvent   \
      
定義
  \
      public class HttpSessionBindingEvent extends EventObject
      
這個事件是在監聽到HttpSession發生綁定和取消綁定的狀況時連通HttpSessionBindingListener的。這多是一個session被終止或被認定無效的結果。
 
      
  事件源是HttpSession.putValueHttpSession.removeValue  
      
  構造函數   <
相關文章
相關標籤/搜索