<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    http://www.tkk7.com/Files/beansoft/servletAPI2.1中文版.txt.zip

     

    譯者前言:
          近來在整理有關(guān)Servlet資料時(shí)發(fā)現(xiàn),在網(wǎng)上竟然找不到一份中文的Java Servlet API的說明文檔,而在有一本有關(guān)JSP的書后面附的Java Servlet API說明竟然不全,而這份文檔的2.1a版在1998年的11月份就已定稿。所以我決定翻譯一份中文的文檔(其中一些與技術(shù)關(guān)系不大的部分已被略去),有興趣的讀者可以從http://java.sun.com/products/servlet/2.1/servletspec-2.1.zip下載原文閱讀。

          Java Servlet API說明文檔(2.1a版)
          1998年11月

    緒言
          這是一份關(guān)于2.1版Java Servlet API的說明文檔,作為對(duì)這本文檔的補(bǔ)充,你可以到http://java.sun.com/products/servlet/index.html下面下載Javadoc格式的文檔。

          誰需要讀這份文檔
          這份文檔描述了Java Servlet API的最新版本2.1版。所以,這本書對(duì)于Servlet的開發(fā)者及servlet引擎的開發(fā)者同樣適用。

          Java Servlet API的組成
          Java Servlet API由兩個(gè)軟件包組成:一個(gè)是對(duì)應(yīng)HTTP的軟件包,另一個(gè)是不對(duì)應(yīng)HTTP的通用的軟件包。這兩個(gè)軟件包的同時(shí)存在使得Java Servlet API能夠適應(yīng)將來的其他請(qǐng)求-響應(yīng)的協(xié)議。
          這份文檔以及剛才提及的Javadoc格式的文檔都描述了這兩個(gè)軟件包,Javadoc格式的文檔還描述了你應(yīng)該如何使用這兩個(gè)軟件包中的所有方法。

          有關(guān)規(guī)范
          你也許對(duì)下面的這些Internet規(guī)范感興趣,這些規(guī)范將直接影響到Servlet API的發(fā)展和執(zhí)行。你可以從http://info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的所有這些RFC規(guī)范。
          RFC 1738 統(tǒng)一資源定位器(URL)
          RFC 1808 相關(guān)統(tǒng)一資源定位器
          RFC 1945 超文本傳輸協(xié)議--HTTP/1.0
          RFC 2045 多用途Internet郵件擴(kuò)展(多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME))第一部分:Internet信息體格式
          RFC 2046 多用途Internet郵件擴(kuò)展(多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME))第二部分:媒體類型
          RFC 2047 多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME)(多用途Internet郵件擴(kuò)展)第三部分:信息標(biāo)題擴(kuò)展用于非ASCII文本
          RFC 2048 多用途Internet郵件擴(kuò)展(多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME))第四部分: 注冊(cè)步驟
          RFC 2049 多用途Internet郵件擴(kuò)展(多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME))第五部分:一致性標(biāo)準(zhǔn)和例子
          RFC 2068 超文本傳輸協(xié)議 -- HTTP/1.1
          RFC 2069 一個(gè)擴(kuò)展HTTP:摘要訪問鑒定
          RFC 2109 HTTP狀態(tài)管理機(jī)制
          RFC 2145 HTTP 版本號(hào)的使用和解釋
          RFC 2324 超文本Coffee Pot控制協(xié)議 (HTCPCP/1.0)
          萬維網(wǎng)協(xié)會(huì)(http://www.w3.org)管理著這些協(xié)議的規(guī)范和執(zhí)行。

    有關(guān)Java Servlets
          JavaTM servlets是一個(gè)不受平臺(tái)約束的Java小程序,它可以被用來通過多種方法擴(kuò)充一個(gè)Web服務(wù)器的功能。你可以把Servlet理解成Server上的applets,它被編譯成字節(jié)碼,這樣它就可以被動(dòng)態(tài)地載入并用效地?cái)U(kuò)展主機(jī)的處理能力。
          Servlet與applets不同的地方是,它不運(yùn)行在Web瀏覽器或其他圖形化的用戶界面上。Servlet通過servlet引擎運(yùn)行在Web服務(wù)器中,以執(zhí)行請(qǐng)求和響應(yīng),請(qǐng)求、響應(yīng)的典型范例是HTTP協(xié)議。
          一個(gè)客戶端程序,可以是一個(gè)Web瀏覽器,或者是非其他的可以連接上Internet的程序,它會(huì)訪問Web服務(wù)器并發(fā)出請(qǐng)求。這個(gè)請(qǐng)求被運(yùn)行在Web服務(wù)器上的Servlet引擎處理,并返回響應(yīng)到Servlet。Servlet通過HTTP將這個(gè)響應(yīng)轉(zhuǎn)發(fā)到客戶端。
    在功能上,Servlet與CGI、NSAPI有點(diǎn)類似,但是,與他們不同的是:Servlet具有平臺(tái)無關(guān)性。

          Java Servlet概論
          Servlet與其他普通的server擴(kuò)展機(jī)制有以下進(jìn)步:
          因?yàn)樗捎昧瞬煌倪M(jìn)程處理模式,所以它比CGI更快。
          它使用了許多Web服務(wù)器都支持的標(biāo)準(zhǔn)的API。
          它繼承了Java的所有優(yōu)勢,包括易升級(jí)以及平臺(tái)無關(guān)性。
          它可以調(diào)用Java所提供的大量的API的功能模塊。
          這份文檔說明了Java Servlet API的類和接口的方法。有關(guān)更多的信息,請(qǐng)參看下面的API說明。

          Servlet的生命周期
          一個(gè)Java servlet具有一個(gè)生命周期,這個(gè)生命周期定義了一個(gè)Servlet如何被載入并被初始化,如何接收請(qǐng)求并作出對(duì)請(qǐng)求的響應(yīng),如何被從服務(wù)中清除。Servlet的生命周期被javax.servlet.Servlet這個(gè)接口所定義。
          所有的Java Servlet都會(huì)直接地或間接地執(zhí)行javax.servlet.Servlet接口,這樣它才能在一個(gè)Servlet引擎中運(yùn)行。Servlet引擎是Web 服務(wù)器按照J(rèn)ava Servlet API定制的擴(kuò)展。Servlet引擎提供網(wǎng)絡(luò)服務(wù),能夠理解MIME請(qǐng)求,并提供一個(gè)運(yùn)行Servlet的容器。
          javax.servlet.Servlet接口定義了在Servlet的生命周期中特定時(shí)間以及特定順序被調(diào)用的方法。

          Servlet的解析和載入
          Servlet引擎解析并載入一個(gè)Servlet,這個(gè)過程可以發(fā)生在引擎啟動(dòng)時(shí),需要一個(gè)Servlet去響應(yīng)請(qǐng)求時(shí),以及在此之間的任何時(shí)候。
          Servlet引擎利用Java類載入工具載入一個(gè)Servlet,Servlet引擎可以從一個(gè)本地的文件系統(tǒng)、一個(gè)遠(yuǎn)程的文件系統(tǒng)以及網(wǎng)絡(luò)載入Servlet。

          Servlet的初始化
          Servlet引擎載入Servlet后,Servlet引擎必須對(duì)Servlet進(jìn)行初始化,在這一過程中,你可以讀取一些固定存儲(chǔ)的數(shù)據(jù)、初始化JDBC的連接以及建立與其他資源的連接。
          在初始化過程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。這樣,Servlet可以對(duì)自己進(jìn)行配置。
          init()方法獲得了一個(gè)Servlet配置對(duì)象(ServletConfig)。這個(gè)對(duì)象在Servlet引擎中執(zhí)行,并允許Servlet通過它獲處相關(guān)參數(shù)。這個(gè)對(duì)象使得Servlet能夠訪問ServletContext對(duì)象。

          Servlet處理請(qǐng)求
          Servlet被初始化之后,它已經(jīng)可以處理來自客戶端的請(qǐng)求,每一個(gè)來自客戶端的請(qǐng)求都被描述成一個(gè)ServletRequest對(duì)象,Servlet的響應(yīng)被描述成一個(gè)ServletResponse對(duì)象。
          當(dāng)客戶端發(fā)出請(qǐng)求時(shí),Servlet引擎?zhèn)鬟f給Servlet一個(gè)ServletRequest對(duì)象和一個(gè)ServletResponse對(duì)象,這兩個(gè)對(duì)象作為參數(shù)傳遞到service()方法中。
          Servlet也可以執(zhí)行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有權(quán)使用客戶端發(fā)出的請(qǐng)求。Servlet可以通過ServletInputStream對(duì)象讀取請(qǐng)求信息。
          ServletResponse接口允許Servlet建立響應(yīng)頭和狀態(tài)代碼。通過執(zhí)行這個(gè)接口,Servlet有權(quán)使用ServletOutputStream類來向客戶端返回?cái)?shù)據(jù)。

          多線程和映射
          在多線程的環(huán)境下,Servlet必須能處理許多同時(shí)發(fā)生的請(qǐng)求。例外的情況是這個(gè)Servlet執(zhí)行了SingleThreadModel接口,如果是那樣的話,Servlet只能同時(shí)處理一個(gè)請(qǐng)求。
          Servlet依照Servlet引擎的映射來響應(yīng)客戶端的請(qǐng)求。一個(gè)映射對(duì)包括一個(gè)Servlet實(shí)例以及一個(gè)Servlet返回?cái)?shù)據(jù)的URL,例如:HelloServlet with /hello/index.html。
          然而,一個(gè)映射可能是由一個(gè)URL和許多Servlet實(shí)例組成,例如:一個(gè)分布式的Servlet引擎可能運(yùn)行在不止一個(gè)的服務(wù)器中,這樣的話,每一個(gè)服務(wù)器中都可能有一個(gè)Servlet實(shí)例,以平衡進(jìn)程的載入。作為一個(gè)Servlet的開發(fā)者,你不能假定一個(gè)Servlet只有一個(gè)實(shí)例。

          Servlet的卸載
          Servlet引擎并不必需保證一個(gè)Servlet在任何時(shí)候或在服務(wù)開啟的任何時(shí)候都被載入。Servlet引擎可以自由的在任何時(shí)候使用或清除一個(gè)Servlet。因此,我們不能依賴一個(gè)類或?qū)嵗齺泶鎯?chǔ)重要的信息。
          當(dāng)Servlet引擎決定卸載一個(gè)Servlet時(shí)(例如,如果這個(gè)引擎被關(guān)閉或者需要讓資源),這個(gè)引擎必須允許Servlet釋放正在使用的資源并存儲(chǔ)有關(guān)資料。為了完成以上工作,引擎會(huì)調(diào)用Servlet的destroy()方法。
          在卸載一個(gè)Servlet之前,Servlet引擎必須等待所有的service()方法完成或超時(shí)結(jié)束(Servlet引擎會(huì)對(duì)超時(shí)作出定義)。當(dāng)一個(gè)Servlet被卸載時(shí),引擎將不能給Servlet發(fā)送任何請(qǐng)求。引擎必須釋放Servlet并完成無用存儲(chǔ)單元的收集

          Servlet映射技術(shù)
          作為一個(gè)Servlet引擎的開發(fā)者,你必須對(duì)于如何映射客戶端的請(qǐng)求到Servlet有大量的適應(yīng)性。這份說明文檔不規(guī)定映射如何發(fā)生。但是,你必須能夠自由地運(yùn)用下面的所有技術(shù):

          映射一個(gè)Servlet到一個(gè)URL
          例如,你可以指定一個(gè)特殊的Servlet它僅被來自/feedback/index.html的請(qǐng)求調(diào)用。

          映射一個(gè)Servlet到以一個(gè)指定的目錄名開始的所有URL
          例如,你可以映射一個(gè)Servlet到/catalog,這樣來自/catalog/、 /catalog/garden和/catalog/housewares/index.html的請(qǐng)求都會(huì)被映射到這個(gè)Servlet。但是來自/catalogtwo 或/catalog.html的請(qǐng)求沒被映射。

          映射一個(gè)Servlet到所有以一個(gè)特定的字段結(jié)尾的所有URL
          例如,你可以映射一個(gè)來自于所有以in.thtml結(jié)尾的請(qǐng)求到一個(gè)特定的Servlet。

          映射一個(gè)Servlet到一個(gè)特殊的URL /servlet/servlet_name。
          例如,如果你建立了一個(gè)名叫l(wèi)istattributes的Servlet,你可以通過使用/servlet/listattributes來訪問這個(gè)Servlet。

          通過類名調(diào)用Servlet
          例如,如果Servlet引擎接收了來自/servlet/com.foo.servlet.MailServlet的請(qǐng)求,Servlet引擎會(huì)載入這個(gè)com.foo.servlet.MailServlet類,建立實(shí)例,并通過這個(gè)Servlet來處理請(qǐng)求。

          Servlet環(huán)境
          ServletContext接口定義了一個(gè)Servlet環(huán)境對(duì)象,這個(gè)對(duì)象定義了一個(gè)在Servlet引擎上的Servlet的視圖。通過使用這個(gè)對(duì)象,Servlet可以記錄事件、得到資源并得到來自Servlet引擎的類(例如RequestDispatcher對(duì)象)。一個(gè)Servlet只能運(yùn)行在一個(gè)Servlet環(huán)境中,但是不同的Servlet可以在Servlet引擎上有不同的視圖。
          如果Servlet引擎支持虛擬主機(jī),每個(gè)虛擬主機(jī)有一個(gè)Servlet環(huán)境。一個(gè)Servlet環(huán)境不能在虛擬主機(jī)之間共享。
          Servlet引擎能夠允許一個(gè)Servlet環(huán)境有它自己的活動(dòng)范圍。
          例如,一個(gè)Servlet環(huán)境是屬于bank應(yīng)用的,它將被映射到/bank目錄下。在這種情況下,一個(gè)對(duì)getContext方法的調(diào)用會(huì)返回/bank的Servlet環(huán)境。

          HTTP會(huì)話
          HTTP是一個(gè)沒有狀態(tài)的協(xié)議。要建立一個(gè)有效的Web服務(wù)應(yīng)用,你必須能夠識(shí)別一個(gè)連續(xù)的來自遠(yuǎn)端的客戶機(jī)的唯一的請(qǐng)求。隨著時(shí)間的過去,發(fā)展了許多會(huì)話跟蹤的技術(shù),但是使用起來都比較麻煩。
          Java Servlet API提供了一個(gè)簡單的接口,通過這個(gè)接口,Servlet引擎可以有效地跟蹤用戶的會(huì)話。

          建立Session
          因?yàn)镠TTP是一個(gè)請(qǐng)求-響應(yīng)協(xié)議,一個(gè)會(huì)話在客戶機(jī)加入之前會(huì)被認(rèn)為是一個(gè)新的會(huì)話。加入的意思是返回會(huì)話跟蹤信息到服務(wù)器中,指出會(huì)話已被建立。在客戶端加入之前,我們不能判斷下一個(gè)客戶端請(qǐng)求是目前會(huì)話的一部分。
          在下面的情況下,Session會(huì)被認(rèn)為是新的Session。
          客戶端的Session在此之前還不知道
          客戶端選擇不加入Session,例如,如果客戶端拒絕接收來自服務(wù)器的cookie
    作為一個(gè)Servlet的開發(fā)者,你必須決定你的Web應(yīng)用是否處理客戶機(jī)不加入或不能加入Session。服務(wù)器會(huì)在Web服務(wù)器或Servlet規(guī)定的時(shí)間內(nèi)維持一個(gè)Session對(duì)象。當(dāng)Session終止時(shí),服務(wù)器會(huì)釋放Session對(duì)象以及所有綁定在Session上的對(duì)象。
    綁定對(duì)象到Session中
          如果有助于你處理應(yīng)用的數(shù)據(jù)需求,你也許需要綁定對(duì)象到Session中,你可以通過一個(gè)唯一的名字綁定任何的對(duì)象到Session中,這時(shí),你需要使用HttpSession對(duì)象。任何綁定到Session上的對(duì)象都可以被處理同一會(huì)話的Servlet調(diào)用。
          有些對(duì)象可能需要你知道什么時(shí)候會(huì)被放置到Session中或從Session中移開。你可以通過使用HttpSessionBindingListener接口獲得這些信息。當(dāng)你的應(yīng)用存儲(chǔ)數(shù)據(jù)到Session中,或從Session中清除數(shù)據(jù),Servlet都會(huì)通過HttpSessionBindingListener檢杳什么類被綁定或被取消綁定。這個(gè)接口的方法會(huì)通報(bào)被綁定或被取消綁定的對(duì)象。
          API對(duì)象的說明
          這一部分包含了對(duì)Java Servlet API的全部類和接口的詳細(xì)說明。這個(gè)說明與Javadoc API差不多,但是這份文檔提供了更多的信息。
    API包含了兩個(gè)軟件包,十二個(gè)接口和九個(gè)類。
    軟件包:javax.servlet
    所包含的接口:RequestDispatcher;Servlet;ServletConfig;ServletContext;ServletRequest;ServletResponse;SingleThreadModel。
    所包含的類:GenericServlet;ServletInputStream;ServletOutputStream;ServletException;UnavailableException。

          一、RequestDispatcher接口:
          定義:
          public interface RequestDispatcher;
          定義一個(gè)對(duì)象,從客戶端接收請(qǐng)求,然后將它發(fā)給服務(wù)器的可用資源(例如Servlet、CGI、HTML文件、JSP文件)。Servlet引擎創(chuàng)建request dispatcher對(duì)象,用于封裝由一個(gè)特定的URL定義的服務(wù)器資源。
          這個(gè)接口是專用于封裝Servlet的,但是一個(gè)Servlet引擎可以創(chuàng)建request dispatcher對(duì)象用于封裝任何類型的資源。
          request dispatcher對(duì)象是由Servlet引擎建立的,而不是由Servlet開發(fā)者建立的。
          方法
          1、forward
          public void forward(ServletRequest request, ServletReponse response)
                throws ServletException, IOException;
          被用來從這個(gè)Servlet向其它服務(wù)器資源傳遞請(qǐng)求。當(dāng)一個(gè)Servlet對(duì)響應(yīng)作了初步的處理,并要求其它的對(duì)象對(duì)此作出響應(yīng)時(shí),可以使用這個(gè)方法。
          當(dāng)request對(duì)象被傳遞到目標(biāo)對(duì)象時(shí),請(qǐng)求的URL路徑和其他路徑參數(shù)會(huì)被調(diào)整為反映目標(biāo)對(duì)象的目標(biāo)URL路徑。
          如果已經(jīng)通過響應(yīng)返回了一個(gè)ServletOutputStream對(duì)象或PrintWriter對(duì)象,這個(gè)方法將不能使用,否則,這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          2、include
          public void include(ServletRequest request, ServletResponse response)
                throws ServletException, IOException
          用來包括發(fā)送給其他服務(wù)器資源的響應(yīng)的內(nèi)容。本質(zhì)上來說,這個(gè)方法反映了服務(wù)器端的內(nèi)容。
          請(qǐng)求對(duì)象傳到目標(biāo)對(duì)象后會(huì)反映調(diào)用請(qǐng)求的請(qǐng)求URL路徑和路徑信息。這個(gè)響應(yīng)對(duì)象只能調(diào)用這個(gè)Servlet的ServletOutputStream對(duì)象和PrintWriter對(duì)象。
          一個(gè)調(diào)用include的Servlet不能設(shè)置頭域,如果這個(gè)Servlet調(diào)用了必須設(shè)置頭域的方法(例如cookie),這個(gè)方法將不能保證正常使用。作為一個(gè)Servlet開發(fā)者,你必須妥善地解決那些可能直接存儲(chǔ)頭域的方法。例如,即使你使用會(huì)話跟蹤,為了保證session的正常工作,你必須在一個(gè)調(diào)用include的Servlet之外開始你的session

          二、Servlet接口。
          定義
          public interface Servlet
          這個(gè)接口定義了一個(gè)Servlet:一個(gè)在Web服務(wù)器上繼承了這個(gè)功能的Java類。
          方法
          1、init
          public void init(ServletConfig config) throws ServletException;
          Servlet引擎會(huì)在Servlet實(shí)例化之后,置入服務(wù)之前精確地調(diào)用init方法。在調(diào)用service方法之前,init方法必須成功退出。
          如果init方法拋出一個(gè)ServletException,你不能將這個(gè)Servlet置入服務(wù)中,如果init方法在超時(shí)范圍內(nèi)沒完成,我們也可以假定這個(gè)Servlet是不具備功能的,也不能置入服務(wù)中。
          2、service
          public void service(ServletRequest request, ServletResponse response)
                throws ServletException, IOException;
          Servlet引擎調(diào)用這個(gè)方法以允許Servlet響應(yīng)請(qǐng)求。這個(gè)方法在Servlet未成功初始化之前無法調(diào)用。在Servlet被初始化之前,Servlet引擎能夠封鎖未決的請(qǐng)求。
          在一個(gè)Servlet對(duì)象被卸載后,直到一個(gè)新的Servelt被初始化,Servlet引擎不能調(diào)用這個(gè)方法
          3、destroy
          public void destroy();
          當(dāng)一個(gè)Servlet被從服務(wù)中去除時(shí),Servlet引擎調(diào)用這個(gè)方法。在這個(gè)對(duì)象的service方法所有線程未全部退出或者沒被引擎認(rèn)為發(fā)生超時(shí)操作時(shí),destroy方法不能被調(diào)用。
          4、getServletConfig
          public ServletConfig getServletConfig();
          返回一個(gè)ServletConfig對(duì)象,作為一個(gè)Servlet的開發(fā)者,你應(yīng)該通過init方法存儲(chǔ)ServletConfig對(duì)象以便這個(gè)方法能返回這個(gè)對(duì)象。為了你的便利,GenericServlet在執(zhí)行這個(gè)接口時(shí),已經(jīng)這樣做了。
          5、getServletInfo
          public String getServletInfo();
          允許Servlet向主機(jī)的Servlet運(yùn)行者提供有關(guān)它本身的信息。返回的字符串應(yīng)該是純文本格式而不應(yīng)有任何標(biāo)志(例如HTML,XML等)。

          三、ServletConfig接口
          定義
          public interface ServletConfig
          這個(gè)接口定義了一個(gè)對(duì)象,通過這個(gè)對(duì)象,Servlet引擎配置一個(gè)Servlet并且允許Servlet獲得一個(gè)有關(guān)它的ServletContext接口的說明。每一個(gè)ServletConfig對(duì)象對(duì)應(yīng)著一個(gè)唯一的Servlet。
          方法
          1、getInitParameter
          public String getInitParameter(String name);
          這個(gè)方法返回一個(gè)包含Servlet指定的初始化參數(shù)的String。如果這個(gè)參數(shù)不存在,返加空值。
          2、getInitParameterNames
          public Enumeration getInitParameterNames();
          這個(gè)方法返回一個(gè)列表String對(duì)象,該對(duì)象包括Servlet的所有初始化參數(shù)名。如果Servlet沒有初始化參數(shù),getInitParameterNames返回一個(gè)空的列表。
          3、getServletContext
          public ServletContext getServletContext();
          返回這個(gè)Servlet的ServletContext對(duì)象。

          四、ServletContext接口
          定義
          public interface ServletContext
          定義了一個(gè)Servlet的環(huán)境對(duì)象,通過這個(gè)對(duì)象,Servlet引擎向Servlet提供環(huán)境信息。
          一個(gè)Servlet的環(huán)境對(duì)象必須至少與它所駐留的主機(jī)是一一對(duì)應(yīng)的。在一個(gè)處理多個(gè)虛擬主機(jī)的Servlet引擎中(例如,使用了HTTP1.1的主機(jī)頭域),每一個(gè)虛擬主機(jī)必須被視為一個(gè)單獨(dú)的環(huán)境。此外,Servlet引擎還可以創(chuàng)建對(duì)應(yīng)于一組Servlet的環(huán)境對(duì)象。
          方法
          1、getAttribute
          public Object getAttribute(String name);
          返回Servlet環(huán)境對(duì)象中指定的屬性對(duì)象。如果該屬性對(duì)象不存在,返回空值。這個(gè)方法允許訪問有關(guān)這個(gè)Servlet引擎的在該接口的其他方法中尚未提供的附加信息。
          2、getAttributeNames
          public Enumeration getAttributeNames();
          返回一個(gè)Servlet環(huán)境對(duì)象中可用的屬性名的列表。
          3、getContext
          public ServletContext getContext(String uripath);
          返回一個(gè)Servlet環(huán)境對(duì)象,這個(gè)對(duì)象包括了特定URI路徑的Servlets和資源,如果該路徑不存在,則返回一個(gè)空值。URI路徑格式是/dir/dir/filename.ext。
          為了安全,如果通過這個(gè)方法訪問一個(gè)受限制的Servlet的環(huán)境對(duì)象,會(huì)返回一個(gè)空值。
          4、getMajorVersion
          public int getMajorVersion();
          返回Servlet引擎支持的Servlet API的主版本號(hào)。例如對(duì)于2.1版,這個(gè)方法會(huì)返回一個(gè)整數(shù)2。
          5、getMinorVersion
          public int getMinorVersion();
          返回Servlet引擎支持的Servlet API的次版本號(hào)。例如對(duì)于2.1版,這個(gè)方法會(huì)返回一個(gè)整數(shù)2。
          6、getMimeType
          public String getMimeType(String file);
          返回指定文件的MIME類型,如果這種MIME類型未知,則返回一個(gè)空值。MIME類型是由Servlet引擎的配置決定的。
          7、getRealPath
          public String getRealPath(String path);
          一個(gè)符合URL路徑格式的指定的虛擬路徑的格式是:/dir/dir/filename.ext。用這個(gè)方法,可以返回與一個(gè)符合該格式的虛擬路徑相對(duì)應(yīng)的真實(shí)路徑的String。這個(gè)真實(shí)路徑的格式應(yīng)該適合于運(yùn)行這個(gè)Servlet引擎的計(jì)算機(jī)(包括其相應(yīng)的路徑解析器)。
          不管是什么原因,如果這一從虛擬路徑轉(zhuǎn)換成實(shí)際路徑的過程不能執(zhí)行,該方法將會(huì)返回一個(gè)空值。
          8、getResource
          public URL getResource(String uripath);
          返回一個(gè)URL對(duì)象,該對(duì)象反映位于給定的URL地址(格式:/dir/dir/filename.ext)的Servlet環(huán)境對(duì)象已知的資源。無論URLStreamHandlers對(duì)于訪問給定的環(huán)境是不是必須的,Servlet引擎都必須執(zhí)行。如果給定的路徑的Servlet環(huán)境沒有已知的資源,該方法會(huì)返回一個(gè)空值。
          這個(gè)方法和java.lang.Class的getResource方法不完全相同。java.lang.Class的getResource方法通過裝載類來尋找資源。而這個(gè)方法允許服務(wù)器產(chǎn)生環(huán)境變量給任何資源的任何Servlet,而不必依賴于裝載類、特定區(qū)域等等。
          9、getResourceAsStream
          public InputStream getResourceAsStream(String uripath);
          返回一個(gè)InputStream對(duì)象,該對(duì)象引用指定的URL的Servlet環(huán)境對(duì)象的內(nèi)容。如果沒找到Servlet環(huán)境變量,就會(huì)返回空值,URL路徑應(yīng)該具有這種格式:/dir/dir/filename.ext。
          這個(gè)方法是一個(gè)通過getResource方法獲得URL對(duì)象的方便的途徑。請(qǐng)注意,當(dāng)你使用這個(gè)方法時(shí),meta-information(例如內(nèi)容長度、內(nèi)容類型)會(huì)丟失。
          10、getRequestDispatcher
          public RequestDispatcher getRequestDispatcher(String uripath);
          如果這個(gè)指定的路徑下能夠找到活動(dòng)的資源(例如一個(gè)Servlet,JSP頁面,CGI等等)就返回一個(gè)特定URL的RequestDispatcher對(duì)象,否則,就返回一個(gè)空值,Servlet引擎負(fù)責(zé)用一個(gè)request dispatcher對(duì)象封裝目標(biāo)路徑。這個(gè)request dispatcher對(duì)象可以用來完全請(qǐng)求的傳送。
          11、getServerInfo
          public String getServerInfo();
          返回一個(gè)String對(duì)象,該對(duì)象至少包括Servlet引擎的名字和版本號(hào)。
          12、log
          public void log(String msg);
          public void log(String msg, Throwable t);
          public void log(Exception exception, String msg); // 這種用法將被取消
          寫指定的信息到一個(gè)Servlet環(huán)境對(duì)象的log文件中。被寫入的log文件由Servlet引擎指定,但是通常這是一個(gè)事件log。當(dāng)這個(gè)方法被一個(gè)異常調(diào)用時(shí),log中將包括堆棧跟蹤。
          13、setAttribute
          public void setAttribute(String name, Object o);
          給予Servlet環(huán)境對(duì)象中你所指定的對(duì)象一個(gè)名稱。
          14、removeAttribute
          public void removeAttribute(String name);
          從指定的Servlet環(huán)境對(duì)象中刪除一個(gè)屬性。
          注:以下幾個(gè)方法將被取消
          15、getServlet
          public Servlet getServlet(String name) throws ServletException;
          最初用來返回一個(gè)指定名稱的Servlet,如果沒找到就返回一個(gè)空值。如果這個(gè)Servlet能夠返回,這就意味著它已經(jīng)被初始化,而且已經(jīng)可以接受service請(qǐng)求。這是一個(gè)危險(xiǎn)的方法。當(dāng)調(diào)用這個(gè)方法時(shí),可能并不知道Servlet的狀態(tài),這就可能導(dǎo)致有關(guān)服務(wù)器狀態(tài)的問題。而允許一個(gè)Servlet訪問其他Servlet的這個(gè)方法也同樣的危險(xiǎn)。
          現(xiàn)在這個(gè)方法返回一個(gè)空值,為了保持和以前版本的兼容性,現(xiàn)在這個(gè)方法還沒有被取消。在以后的API版本中,該方法將被取消。
          16、getServletNames
          public Enumeration getServletNames();
          最初用來返回一個(gè)String對(duì)象的列表,該列表表示了在這個(gè)Servlet環(huán)境下所有已知的Servlet對(duì)象名。這個(gè)列表總是包含這個(gè)Servlet自身。
    基于與上一個(gè)方法同樣的理由,這也是一個(gè)危險(xiǎn)的方法。
          現(xiàn)在這個(gè)方法返回一個(gè)空的列表。為了保持和以前版本的兼容性,現(xiàn)在這個(gè)方法還沒有被取消。在以后的API版本中,該方法將被取消。
          17、getServlets
          public Enumeration getServlets();
          最初用來返回在這個(gè)Servelet環(huán)境下所有已知的Servlet對(duì)象的列表。這個(gè)列表總是包含這個(gè)Servlet自身。
    基于與getServlet方法同樣的理由,這也是一個(gè)危險(xiǎn)的方法。
          現(xiàn)在這個(gè)方法返回一個(gè)空的列表。為了保持和以前版本的兼容性,現(xiàn)在這個(gè)方法還沒有被取消。在以后的API版本中,該方法將被取消。

          五、ServletRequest接口
          定義
          public interface ServletRequest
          定義一個(gè)Servlet引擎產(chǎn)生的對(duì)象,通過這個(gè)對(duì)象,Servlet可以獲得客戶端請(qǐng)求的數(shù)據(jù)。這個(gè)對(duì)象通過讀取請(qǐng)求體的數(shù)據(jù)提供包括參數(shù)的名稱、值和屬性以及輸入流的所有數(shù)據(jù)。
          方法
          1、getAttribute
          public Object getAttribute(String name);
          返回請(qǐng)求中指定屬性的值,如果這個(gè)屬性不存在,就返回一個(gè)空值。這個(gè)方法允許訪問一些不提供給這個(gè)接口中其他方法的請(qǐng)求信息以及其他Servlet放置在這個(gè)請(qǐng)求對(duì)象內(nèi)的數(shù)據(jù)。
          2、getAttributeNames
          public Enumeration getAttributeNames();
          返回包含在這個(gè)請(qǐng)求中的所有屬性名的列表。
          3、getCharacterEncoding
          public String getCharacterEncoding();
          返回請(qǐng)求中輸入內(nèi)容的字符編碼類型,如果沒有定義字符編碼類型就返回空值。
          4、getContentLength
          public int getContentLength();
          請(qǐng)求內(nèi)容的長度,如果長度未知就返回-1。
          5、getContentType
          public String getContentType();
          返回請(qǐng)求數(shù)據(jù)體的MIME類型,如果類型未知返回空值。
          6、getInputStream
          public ServletInputStream getInputStream() throws IOException;
          返回一個(gè)輸入流用來從請(qǐng)求體讀取二進(jìn)制數(shù)據(jù)。如果在此之前已經(jīng)通過getReader方法獲得了要讀取的結(jié)果,這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          7、getParameter
          public String getParameter(String name);
          以一個(gè)String返回指定的參數(shù)的值,如果這個(gè)參數(shù)不存在返回空值。例如,在一個(gè)HTTP Servlet中,這個(gè)方法會(huì)返回一個(gè)指定的查詢語句產(chǎn)生的參數(shù)的值或一個(gè)被提交的表單中的參數(shù)值。如果一個(gè)參數(shù)名對(duì)應(yīng)著幾個(gè)參數(shù)值,這個(gè)方法只能返回通過getParameterValues方法返回的數(shù)組中的第一個(gè)值。因此,如果這個(gè)參數(shù)有(或者可能有)多個(gè)值,你只能使用getParameterValues方法。
          8、getParameterNames
          public Enumeration getParameterNames();
          返回所有參數(shù)名的String對(duì)象列表,如果沒有輸入?yún)?shù),該方法返回一個(gè)空值。
          9、getParameterValues
          public String[] getParameterValues(String name);
          通過一個(gè)String對(duì)象的數(shù)組返回指定參數(shù)的值,如果這個(gè)參數(shù)不存在,該方法返回一個(gè)空值。
          10、getProtocol
          public String getProtocol();
          返回這個(gè)請(qǐng)求所用的協(xié)議,其形式是協(xié)議/主版本號(hào).次版本號(hào)。例如對(duì)于一個(gè)HTTP1.0的請(qǐng)求,該方法返回HTTP/1.0。
          11、getReader
          public BufferedReader getReader() throws IOException;
          這個(gè)方法返回一個(gè)buffered reader用來讀取請(qǐng)求體的實(shí)體,其編碼方式依照請(qǐng)求數(shù)據(jù)的編碼方式。如果這個(gè)請(qǐng)求的輸入流已經(jīng)被getInputStream調(diào)用獲得,這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          12、getRemoteAddr
          public String getRemoteAddr();
          返回發(fā)送請(qǐng)求者的IP地址。
          13、getRemoteHost
          public String getRemoteHost();
          返回發(fā)送請(qǐng)求者的主機(jī)名稱。如果引擎不能或者選擇不解析主機(jī)名(為了改善性能),這個(gè)方法會(huì)直接返回IP地址。
          14、getScheme
          public String getScheme();
          返回請(qǐng)求所使用的URL的模式。例如,對(duì)于一個(gè)HTTP請(qǐng)求,這個(gè)模式就是http。
          15、getServerName
          public String getServerName();
          返回接收請(qǐng)求的服務(wù)器的主機(jī)名。
          16、getServerPort
          public int getServerPort();
          返回接收請(qǐng)求的端口號(hào)。
          17、setAttribute
          public void setAttribute(String name, Object object);
          這個(gè)方法在請(qǐng)求中添加一個(gè)屬性,這個(gè)屬性可以被其他可以訪問這個(gè)請(qǐng)求對(duì)象的對(duì)象(例如一個(gè)嵌套的Servlet)使用。
          注:以下方法將被取消
          getRealPath
          public String getRealPath(String path);
          返回與虛擬路徑相對(duì)應(yīng)的真實(shí)路徑,如果因?yàn)槟撤N原因,這一過程不能進(jìn)行,該方法將返回一個(gè)空值。
          這個(gè)方法和ServletContext接口中的getRealPath方法重復(fù)。在2.1版中,ServletContext接口將闡明一個(gè)Servlet所能用的所有的路徑的映射。該方法執(zhí)行的結(jié)果將會(huì)與ServletContext中g(shù)etRealPath方法的結(jié)果完全一樣。

          六、ServletResponse接口
          定義
          public interface ServletResponse
          定義一個(gè)Servlet引擎產(chǎn)生的對(duì)象,通過這個(gè)對(duì)象,Servlet對(duì)客戶端的請(qǐng)求作出響應(yīng)。這個(gè)響應(yīng)應(yīng)該是一個(gè)MIME實(shí)體,可能是一個(gè)HTML頁、圖象數(shù)據(jù)或其他MIME的格式。
          方法
          1、getCharacterEncoding
          public String getCharacterEncoding();
          返回MIME實(shí)體的字符編碼。這個(gè)字符編碼可以是指定的類型,也可以是與請(qǐng)求頭域所反映的客戶端所能接受的字符編碼最匹配的類型。在HTTP協(xié)議中,這個(gè)信息被通過Accept-Charset傳送到Servlet引擎。
          有關(guān)字符編碼和MIME的更多信息請(qǐng)參看RFC 2047。
          2、getOutputStream
          public ServletOutputStream getOutputStream() throws IOException;
          返回一個(gè)記錄二進(jìn)制的響應(yīng)數(shù)據(jù)的輸出流。
          如果這個(gè)響應(yīng)對(duì)象已經(jīng)調(diào)用getWriter,將會(huì)拋出IllegalStateException。
          3、getWriter
          public PrintWriter getWriter throws IOException;
          這個(gè)方法返回一個(gè)PringWriter對(duì)象用來記錄格式化的響應(yīng)實(shí)體。如果要反映使用的字符編碼,必須修改響應(yīng)的MIME類型。在調(diào)用這個(gè)方法之前,必須設(shè)定響應(yīng)的content類型。
          如果沒有提供這樣的編碼類型,會(huì)拋出一個(gè)UnsupportedEncodingException,如果這個(gè)響應(yīng)對(duì)象已調(diào)用getOutputStream,會(huì)拋出一個(gè)getOutputStream。
          4、setContentLength
          public void setContentLength(int length);
          設(shè)置響應(yīng)的內(nèi)容的長度,這個(gè)方法會(huì)覆蓋以前對(duì)內(nèi)容長度的設(shè)定。
          為了保證成功地設(shè)定響應(yīng)頭的內(nèi)容長度,在響應(yīng)被提交到輸出流之前必須調(diào)用這個(gè)方法。
          5、setContentType
          public void setContentType(String type);
          這個(gè)方法用來設(shè)定響應(yīng)的content類型。這個(gè)類型以后可能會(huì)在另外的一些情況下被隱式地修改,這里所說的另外的情況可能當(dāng)服務(wù)器發(fā)現(xiàn)有必要的情況下對(duì)MIME的字符設(shè)置。
          為了保證成功地設(shè)定響應(yīng)頭的content類型,在響應(yīng)被提交到輸出流之前必須調(diào)用這個(gè)方法。

          七、SingleThreadModel接口
          定義
          public interface SingleThreadModel;
          這是一個(gè)空接口,它指定了系統(tǒng)如何處理對(duì)同一個(gè)Servlet的調(diào)用。如果一個(gè)Servlet被這個(gè)接口指定,那么在這個(gè)Servlet中的service方法中將不會(huì)有兩個(gè)線程被同時(shí)執(zhí)行。
          Servlet可以通過維持一個(gè)各自獨(dú)立的Servlet實(shí)例池,或者通過只讓Servlet的service中只有一個(gè)線程的方法來實(shí)現(xiàn)這個(gè)保證。

          八、GenericServlet類
          public abstract class GenericServlet implements Servlet,
                ServletConfig, Serializable;
          這個(gè)類的存在使得編寫Servlet更加方便。它提供了一個(gè)簡單的方案,這個(gè)方案用來執(zhí)行有關(guān)Servlet生命周期的方法以及在初始化時(shí)對(duì)ServletConfig對(duì)象和ServletContext對(duì)象進(jìn)行說明。
          方法
          1、destroy
          public void destroy();
          在這里destroy方法不做任何其他的工作。
          2、getInitParameter
          public String getInitParameter(String name);
          這是一個(gè)簡便的途徑,它將會(huì)調(diào)用ServletConfig對(duì)象的同名的方法。
          3、getInitParameterNames
          public Enumeration getInitParameterNames();
          這是一個(gè)簡便的途徑,它將會(huì)調(diào)用ServletConfig對(duì)象的同名的方法。
          4、getServletConfig
          public ServletConfig getServletConfig();
          返回一個(gè)通過這個(gè)類的init方法產(chǎn)生的ServletConfig對(duì)象的說明。
          5、getServletContext
          public ServletContext getServletContext();
          這是一個(gè)簡便的途徑,它將會(huì)調(diào)用ServletConfig對(duì)象的同名的方法。
          6、getServletInfo
          public String getServletInfo();
          返回一個(gè)反映Servlet版本的String。
          7、init
          public void init() throws ServletException;
          public void init(ServletConfig config) throws ServletException;
          init(ServletConfig config)方法是一個(gè)對(duì)這個(gè)Servlet的生命周期進(jìn)行初始化的簡便的途徑。
          init()方法是用來讓你對(duì)GenericServlet類進(jìn)行擴(kuò)充的,使用這個(gè)方法時(shí),你不需要存儲(chǔ)config對(duì)象,也不需要調(diào)用super.init(config)。
          init(ServletConfig config)方法會(huì)存儲(chǔ)config對(duì)象然后調(diào)用init()。如果你重載了這個(gè)方法,你必須調(diào)用super.init(config),這樣GenericServlet類的其他方法才能正常工作。
          8、log
          public void log(String msg);
          public void log(String msg, Throwable cause);
          通過Servlet content對(duì)象將Servlet的類名和給定的信息寫入log文件中。
          9、service
          public abstract void service(ServletRequest request, ServletResponse
                response) throws ServletException, IOException;
          這是一個(gè)抽象的方法,當(dāng)你擴(kuò)展這個(gè)類時(shí),為了執(zhí)行網(wǎng)絡(luò)請(qǐng)求,你必須執(zhí)行它。

          九、ServletInputStream類
          定義
          public abstract class ServletInputStream extends InputStream
          這個(gè)類定義了一個(gè)用來讀取客戶端的請(qǐng)求信息的輸入流。這是一個(gè)Servlet引擎提供的抽象類。一個(gè)Servlet通過使用ServletRequest接口獲得了對(duì)一個(gè)ServletInputStream對(duì)象的說明。
          這個(gè)類的子類必須提供一個(gè)從InputStream接口讀取有關(guān)信息的方法。
          方法
          1、readLine
          public int readLine(byte[] b, int off, int len) throws IOException;
          從輸入流的指定的偏移量開始將指定長度的字節(jié)讀入到指定的數(shù)組中。如果該行所有請(qǐng)求的內(nèi)容都已被讀取,這個(gè)讀取的過程將結(jié)束。如果是遇到了新的一行,新的一行的首個(gè)字符也將被讀入到數(shù)組中。

          十、ServletOutputStream類
          定義
          public abstract class ServletOutputStream extends OutputStream
          這是一個(gè)由Servlet引擎使用的抽象類。Servlet通過使用ServletResponse接口的使用獲得了對(duì)一個(gè)這種類型的對(duì)象的說明。利用這個(gè)輸出流可以將數(shù)據(jù)返回到客戶端。
          這個(gè)類的子類必須提供一個(gè)向OutputStream接口寫入有關(guān)信息的方法。
          在這個(gè)接口中,當(dāng)一個(gè)刷新或關(guān)閉的方法被調(diào)用時(shí)。所有數(shù)據(jù)緩沖區(qū)的信息將會(huì)被發(fā)送到客戶端,也就是說響應(yīng)被提交了。請(qǐng)注意,關(guān)閉這種類型的對(duì)象時(shí)不一定要關(guān)閉隱含的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;
          輸出變量到輸出流中,并增加一個(gè)回車換行符

          十一、ServletException類
          定義
          public class ServletException extends Exception
          當(dāng)Servlet遇到問題時(shí)拋出的一個(gè)異常。
          構(gòu)造函數(shù)
          public ServletException();
          public ServletException(String message);
          public ServletException(String message, Throwable cause);
          public ServletException(Throwable cause);
          構(gòu)造一個(gè)新的ServletException,如果這個(gè)構(gòu)造函數(shù)包括一個(gè)Throwable參數(shù),這個(gè)Throwable對(duì)象將被作為可能拋出這個(gè)異常的原因。
          方法
          1、getRootCause
          public Throwable getRootCause();
          如果配置了拋出這個(gè)異常的原因,這個(gè)方法將返回這個(gè)原因,否則返回一個(gè)空值。

          十二、UnavailableException類
          定義
          public class UnavailableException extends ServletException
          不論一個(gè)Servlet是永久地還是臨時(shí)地?zé)o效,都會(huì)拋出這個(gè)異常。Servlet會(huì)記錄這個(gè)異常以及Servlet引擎所要采取的相應(yīng)措施。
          臨時(shí)的無效是指Servlet在某一時(shí)間由于一個(gè)臨時(shí)的問題而不能處理請(qǐng)求。例如,在另一個(gè)不同的應(yīng)用層的服務(wù)(可能是數(shù)據(jù)庫)無法使用。這個(gè)問題可能會(huì)自行糾正或者需要采取其他的糾正措施。
          永久的無效是指除非管理員采取措施,這個(gè)Servlet將不能處理客戶端的請(qǐng)求。例如,這個(gè)Servlet配置信息丟失或Servlet的狀態(tài)被破壞。
          Servlet引擎可以安全地處理包括永久無效在內(nèi)的這兩種異常,但是對(duì)臨時(shí)無效的正常處理可以使得Servlet引擎更健壯。特別的,這時(shí)對(duì)Servlet的請(qǐng)求只是被阻止(或者是被延期)一段時(shí)間,這顯然要比在service自己重新啟動(dòng)前完全拒絕請(qǐng)求更為科學(xué)。
          構(gòu)造函數(shù)
          public UnavailableException(Servlet servlet, String message);
          public UnavailableException(int seconds, Servlet servlet,
                String message);
          構(gòu)造一個(gè)包含指定的描述信息的新的異常。如果這個(gè)構(gòu)造函數(shù)有一個(gè)關(guān)于秒數(shù)的參數(shù),這將給出Servlet發(fā)生臨時(shí)無效后,能夠重新處理請(qǐng)求的估計(jì)時(shí)間。如果不包含這個(gè)參數(shù),這意味著這個(gè)Servlet永久無效。
          方法
          1、getServlet
          public Servlet getServlet();
          返回報(bào)告無效的Servlet。這被Servlet引擎用來識(shí)別受到影響的Servlet。
          2、getUnavailableSeconds
          public int getUnavailableSeconds();
          返回Servlet預(yù)期的無效時(shí)間,如果這個(gè)Servlet是永久無效,返回-1。
          3、isPermanent
          public boolean isPermanent();
          如果這個(gè)Servlet永久無效,返回布爾值true,指示必須采取一些管理行動(dòng)以使得這個(gè)Servlet可用
          軟件包:javax.servlet.http
          所包含的接口:HttpServletRequest;HttpServletResponse;HttpSession;HttpSessionBindingListener;HttpSessionContext。
          所包含的類:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils。

          一、HttpServletRequest接口
          定義\
          public interface HttpServletRequest extends ServletRequest;
          用來處理一個(gè)對(duì)Servlet的HTTP格式的請(qǐng)求信息。
          方法
          1、getAuthType
          public String getAuthType();
          返回這個(gè)請(qǐng)求的身份驗(yàn)證模式。
          2、getCookies
          public Cookie[] getCookies();
          返回一個(gè)數(shù)組,該數(shù)組包含這個(gè)請(qǐng)求中當(dāng)前的所有cookie。如果這個(gè)請(qǐng)求中沒有cookie,返回一個(gè)空數(shù)組。
          3、getDateHeader
          public long getDateHeader(String name);
          返回指定的請(qǐng)求頭域的值,這個(gè)值被轉(zhuǎn)換成一個(gè)反映自1970-1-1日(GMT)以來的精確到毫秒的長整數(shù)。
          如果頭域不能轉(zhuǎn)換,拋出一個(gè)IllegalArgumentException。如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
          4、getHeader
          public String getHeader(String name);
          返回一個(gè)請(qǐng)求頭域的值。(譯者注:與上一個(gè)方法不同的是,該方法返回一個(gè)字符串)
          如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
          5、getHeaderNames
          public Enumeration getHeaderNames();
          該方法返回一個(gè)String對(duì)象的列表,該列表反映請(qǐng)求的所有頭域名。
          有的引擎可能不允許通過這種方法訪問頭域,在這種情況下,這個(gè)方法返回一個(gè)空的列表。
          6、getIntHeader
          public int getIntHeader(String name);
          返回指定的請(qǐng)求頭域的值,這個(gè)值被轉(zhuǎn)換成一個(gè)整數(shù)。
          如果頭域不能轉(zhuǎn)換,拋出一個(gè)IllegalArgumentException。如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
          7、getMethod
          public String getMethod();
          返回這個(gè)請(qǐng)求使用的HTTP方法(例如:GET、POST、PUT)
          8、getPathInfo
          public String getPathInfo();
          這個(gè)方法返回在這個(gè)請(qǐng)求的URL的Servlet路徑之后的請(qǐng)求URL的額外的路徑信息。如果這個(gè)請(qǐng)求URL包括一個(gè)查詢字符串,在返回值內(nèi)將不包括這個(gè)查詢字符串。這個(gè)路徑在返回之前必須經(jīng)過URL解碼。如果在這個(gè)請(qǐng)求的URL的Servlet路徑之后沒有路徑信息。這個(gè)方法返回空值。
          9、getPathTranslated
          public String getPathTranslated();
          這個(gè)方法獲得這個(gè)請(qǐng)求的URL的Servlet路徑之后的額外的路徑信息,并將它轉(zhuǎn)換成一個(gè)真實(shí)的路徑。在進(jìn)行轉(zhuǎn)換前,這個(gè)請(qǐng)求的URL必須經(jīng)過URL解碼。如果在這個(gè)URL的Servlet路徑之后沒有附加路徑信息。這個(gè)方法返回空值。
          10、getQueryString
          public String getQueryString();
          返回這個(gè)請(qǐng)求URL所包含的查詢字符串。一個(gè)查詢字串符在一個(gè)URL中由一個(gè)“?”引出。如果沒有查詢字符串,這個(gè)方法返回空值。
          11、getRemoteUser
          public String getRemoteUser
          返回作了請(qǐng)求的用戶名,這個(gè)信息用來作HTTP用戶論證。
          如果在請(qǐng)求中沒有用戶名信息,這個(gè)方法返回空值。
          12、getRequestedSessionId
          public String getRequestedSessionId();
          返回這個(gè)請(qǐng)求相應(yīng)的session id。如果由于某種原因客戶端提供的session id是無效的,這個(gè)session id將與在當(dāng)前session中的session id不同,與此同時(shí),將建立一個(gè)新的session。
          如果這個(gè)請(qǐng)求沒與一個(gè)session關(guān)聯(lián),這個(gè)方法返回空值。
          13、getRequestURI
          public String getRequestURI();
          從HTTP請(qǐng)求的第一行返回請(qǐng)求的URL中定義被請(qǐng)求的資源的部分。如果有一個(gè)查詢字符串存在,這個(gè)查詢字符串將不包括在返回值當(dāng)中。例如,一個(gè)請(qǐng)求通過/catalog/books?id=1這樣的URL路徑訪問,這個(gè)方法將返回/catalog/books。這個(gè)方法的返回值包括了Servlet路徑和路徑信息。
          如果這個(gè)URL路徑中的的一部分經(jīng)過了URL編碼,這個(gè)方法的返回值在返回之前必須經(jīng)過解碼。
          14、getServletPath
          public String getServletPath();
          這個(gè)方法返回請(qǐng)求URL反映調(diào)用Servlet的部分。例如,一個(gè)Servlet被映射到/catalog/summer這個(gè)URL路徑,而一個(gè)請(qǐng)求使用了/catalog/summer/casual這樣的路徑。所謂的反映調(diào)用Servlet的部分就是指/catalog/summer。
          如果這個(gè)Servlet不是通過路徑匹配來調(diào)用。這個(gè)方法將返回一個(gè)空值。
          15、getSession
          public HttpSession getSession();
          public HttpSession getSession(boolean create);
          返回與這個(gè)請(qǐng)求關(guān)聯(lián)的當(dāng)前的有效的session。如果調(diào)用這個(gè)方法時(shí)沒帶參數(shù),那么在沒有session與這個(gè)請(qǐng)求關(guān)聯(lián)的情況下,將會(huì)新建一個(gè)session。如果調(diào)用這個(gè)方法時(shí)帶入了一個(gè)布爾型的參數(shù),只有當(dāng)這個(gè)參數(shù)為真時(shí),session才會(huì)被建立。
          為了確保session能夠被完全維持。Servlet開發(fā)者必須在響應(yīng)被提交之前調(diào)用該方法。
          如果帶入的參數(shù)為假,而且沒有session與這個(gè)請(qǐng)求關(guān)聯(lián)。這個(gè)方法會(huì)返回空值。
          16、isRequestedSessionIdValid
          public boolean isRequestedSessionIdValid();
          這個(gè)方法檢查與此請(qǐng)求關(guān)聯(lián)的session當(dāng)前是不是有效。如果當(dāng)前請(qǐng)求中使用的session無效,它將不能通過getSession方法返回。
          17、isRequestedSessionIdFromCookie
          public boolean isRequestedSessionIdFromCookie();
          如果這個(gè)請(qǐng)求的session id是通過客戶端的一個(gè)cookie提供的,該方法返回真,否則返回假。
          18、isRequestedSessionIdFromURL
          public boolean isRequestedSessionIdFromURL();
          如果這個(gè)請(qǐng)求的session id是通過客戶端的URL的一部分提供的,該方法返回真,否則返回假。請(qǐng)注意此方法與isRequestedSessionIdFromUrl在URL的拼寫上不同。
          以下方法將被取消\

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

          二、HttpServletResponse接口
          定義\

          public interface HttpServletResponse extends ServletResponse
          描述一個(gè)返回到客戶端的HTTP回應(yīng)。這個(gè)接口允許Servlet程序員利用HTTP協(xié)議規(guī)定的頭信息。
          成員變量
          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產(chǎn)狀態(tài)碼是由HTTP/1.1定義的。
          方法
          1、addCookie
          public void addCookie(Cookie cookie);
          在響應(yīng)中增加一個(gè)指定的cookie。可多次調(diào)用該方法以定義多個(gè)cookie。為了設(shè)置適當(dāng)?shù)念^域,該方法應(yīng)該在響應(yīng)被提交之前調(diào)用。
          2、containsHeader
          public boolean containsHeader(String name);
          檢查是否設(shè)置了指定的響應(yīng)頭。
          3、encodeRedirectURL
          public String encodeRedirectURL(String url);
          對(duì)sendRedirect方法使用的指定URL進(jìn)行編碼。如果不需要編碼,就直接返回這個(gè)URL。之所以提供這個(gè)附加的編碼方法,是因?yàn)樵趓edirect的情況下,決定是否對(duì)URL進(jìn)行編碼的規(guī)則和一般情況有所不同。所給的URL必須是一個(gè)絕對(duì)URL。相對(duì)URL不能被接收,會(huì)拋出一個(gè)IllegalArgumentException。
          所有提供給sendRedirect方法的URL都應(yīng)通過這個(gè)方法運(yùn)行,這樣才能確保會(huì)話跟蹤能夠在所有瀏覽器中正常運(yùn)行。
          4、encodeURL
          public String encodeURL(String url);
          對(duì)包含session ID的URL進(jìn)行編碼。如果不需要編碼,就直接返回這個(gè)URL。Servlet引擎必須提供URL編碼方法,因?yàn)樵谟行┣闆r下,我們將不得不重寫URL,例如,在響應(yīng)對(duì)應(yīng)的請(qǐng)求中包含一個(gè)有效的session,但是這個(gè)session不能被非URL的(例如cookie)的手段來維持。
          所有提供給Servlet的URL都應(yīng)通過這個(gè)方法運(yùn)行,這樣才能確保會(huì)話跟蹤能夠在所有瀏覽器中正常運(yùn)行。
          5、sendError
          public void sendError(int statusCode) throws IOException;
          public void sendError(int statusCode, String message) throws
             IOException;
          用給定的狀態(tài)碼發(fā)給客戶端一個(gè)錯(cuò)誤響應(yīng)。如果提供了一個(gè)message參數(shù),這將作為響應(yīng)體的一部分被發(fā)出,否則,服務(wù)器會(huì)返回錯(cuò)誤代碼所對(duì)應(yīng)的標(biāo)準(zhǔn)信息。
          調(diào)用這個(gè)方法后,響應(yīng)立即被提交。在調(diào)用這個(gè)方法后,Servlet不會(huì)再有更多的輸出。
          6、sendRedirect
          public void sendRedirect(String location) throws IOException;
          使用給定的路徑,給客戶端發(fā)出一個(gè)臨時(shí)轉(zhuǎn)向的響應(yīng)(SC_MOVED_TEMPORARILY)。給定的路徑必須是絕對(duì)URL。相對(duì)URL將不能被接收,會(huì)拋出一個(gè)IllegalArgumentException。
          這個(gè)方法必須在響應(yīng)被提交之前調(diào)用。調(diào)用這個(gè)方法后,響應(yīng)立即被提交。在調(diào)用這個(gè)方法后,Servlet不會(huì)再有更多的輸出。
          7、setDateHeader
          public void setDateHeader(String name, long date);
          用一個(gè)給定的名稱和日期值設(shè)置響應(yīng)頭,這里的日期值應(yīng)該是反映自1970-1-1日(GMT)以來的精確到毫秒的長整數(shù)。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
          8、setHeader
          public void setHeader(String name, String value);
          用一個(gè)給定的名稱和域設(shè)置響應(yīng)頭。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
          9、setIntHeader
          public void setIntHeader(String name, int value);
          用一個(gè)給定的名稱和整形值設(shè)置響應(yīng)頭。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
          10、setStatus
          public void setStatus(int statusCode);
          這個(gè)方法設(shè)置了響應(yīng)的狀態(tài)碼,如果狀態(tài)碼已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
          以下的幾個(gè)方法將被取消\
          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);
          這個(gè)方法設(shè)置了響應(yīng)的狀態(tài)碼,如果狀態(tài)碼已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。如果提供了一個(gè)message,它也將會(huì)被作為響應(yīng)體的一部分被發(fā)送。

          三、HttpSession接口
          定義\
          public interface HttpSession
          這個(gè)接口被Servlet引擎用來實(shí)現(xiàn)在HTTP客戶端和HTTP會(huì)話兩者的關(guān)聯(lián)。這種關(guān)聯(lián)可能在多外連接和請(qǐng)求中持續(xù)一段給定的時(shí)間。session用來在無狀態(tài)的HTTP協(xié)議下越過多個(gè)請(qǐng)求頁面來維持狀態(tài)和識(shí)別用戶。
          一個(gè)session可以通過cookie或重寫URL來維持。
          方法
          1、getCreationTime
          public long getCreationTime();
          返回建立session的時(shí)間,這個(gè)時(shí)間表示為自1970-1-1日(GMT)以來的毫秒數(shù)。
          2、getId
          public String getId();
          返回分配給這個(gè)session的標(biāo)識(shí)符。一個(gè)HTTP session的標(biāo)識(shí)符是一個(gè)由服務(wù)器來建立和維持的唯一的字符串。
          3、getLastAccessedTime
          public long getLastAccessedTime();
          返回客戶端最后一次發(fā)出與這個(gè)session有關(guān)的請(qǐng)求的時(shí)間,如果這個(gè)session是新建立的,返回-1。這個(gè)時(shí)間表示為自1970-1-1日(GMT)以來的毫秒數(shù)。
          4、getMaxInactiveInterval
          public int getMaxInactiveInterval();
          返加一個(gè)秒數(shù),這個(gè)秒數(shù)表示客戶端在不發(fā)出請(qǐng)求時(shí),session被Servlet引擎維持的最長時(shí)間。在這個(gè)時(shí)間之后,Servlet引擎可能被Servlet引擎終止。如果這個(gè)session不會(huì)被終止,這個(gè)方法返回-1。
          當(dāng)session無效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          5、getValue
          public Object getValue(String name);
          返回一個(gè)以給定的名字綁定到session上的對(duì)象。如果不存在這樣的綁定,返回空值。
          當(dāng)session無效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          6、getValueNames
          public String[] getValueNames();
          以一個(gè)數(shù)組返回綁定到session上的所有數(shù)據(jù)的名稱。
          當(dāng)session無效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          7、invalidate
          public void invalidate();
          這個(gè)方法會(huì)終止這個(gè)session。所有綁定在這個(gè)session上的數(shù)據(jù)都會(huì)被清除。并通過HttpSessionBindingListener接口的valueUnbound方法發(fā)出通告。
          8、isNew
          public boolean isNew();
          返回一個(gè)布爾值以判斷這個(gè)session是不是新的。如果一個(gè)session已經(jīng)被服務(wù)器建立但是還沒有收到相應(yīng)的客戶端的請(qǐng)求,這個(gè)session將被認(rèn)為是新的。這意味著,這個(gè)客戶端還沒有加入會(huì)話或沒有被會(huì)話公認(rèn)。在他發(fā)出下一個(gè)請(qǐng)求時(shí)還不能返回適當(dāng)?shù)膕ession認(rèn)證信息。
          當(dāng)session無效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          9、putValue
          public void putValue(String name, Object value);
          以給定的名字,綁定給定的對(duì)象到session中。已存在的同名的綁定會(huì)被重置。這時(shí)會(huì)調(diào)用HttpSessionBindingListener接口的valueBound方法。
          當(dāng)session無效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          10、removeValue
          public void removeValue(String name);
          取消給定名字的對(duì)象在session上的綁定。如果未找到給定名字的綁定的對(duì)象,這個(gè)方法什么出不做。 這時(shí)會(huì)調(diào)用HttpSessionBindingListener接口的valueUnbound方法。
          當(dāng)session無效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
          11、setMaxInactiveInterval
          public int setMaxInactiveInterval(int interval);
          設(shè)置一個(gè)秒數(shù),這個(gè)秒數(shù)表示客戶端在不發(fā)出請(qǐng)求時(shí),session被Servlet引擎維持的最長時(shí)間。
          以下這個(gè)方法將被取消\
          12、getSessionContext
          public HttpSessionContext getSessionContext();
          返回session在其中得以保持的環(huán)境變量。這個(gè)方法和其他所有HttpSessionContext的方法一樣被取消了。

          四、HttpSessionBindingListener接口
          定義\
          public interface HttpSessionBindingListener
          這個(gè)對(duì)象被加入到HTTP的session中,執(zhí)行這個(gè)接口會(huì)通告有沒有什么對(duì)象被綁定到這個(gè)HTTP session中或被從這個(gè)HTTP session中取消綁定。
          方法
          1、valueBound
          public void valueBound(HttpSessionBindingEvent event);
          當(dāng)一個(gè)對(duì)象被綁定到session中,調(diào)用此方法。HttpSession.putValue方法被調(diào)用時(shí),Servlet引擎應(yīng)該調(diào)用此方法。
          2、valueUnbound
          public void valueUnbound(HttpSessionBindingEvent event);
          當(dāng)一個(gè)對(duì)象被從session中取消綁定,調(diào)用此方法。HttpSession.removeValue方法被調(diào)用時(shí),Servlet引擎應(yīng)該調(diào)用此方法。

          五、HttpSessionContext接口
          定義\
          此接口將被取消\
          public interface HttpSessionContext
          這個(gè)對(duì)象是與一組HTTP session關(guān)聯(lián)的單一的實(shí)體。
          這個(gè)接口由于安全的原因被取消,它出現(xiàn)在目前的版本中僅僅是為了兼容性的原因。這個(gè)接口的方法將模擬以前的版本的定義返回相應(yīng)的值。
          方法
          1、getSession
          public HttpSession getSession(String sessionId);
          當(dāng)初用來返回與這個(gè)session id相關(guān)的session。現(xiàn)在返回空值。
          2、getIds
          public Enumeration getIds();
          當(dāng)初用來返回這個(gè)環(huán)境下所有session id的列表。現(xiàn)在返回空的列表。

          六、Cookie類\
          定義\
          public class Cookie implements Cloneable
          這個(gè)類描述了一個(gè)cookie,有關(guān)cookie的定義你可以參照Netscape Communications Corporation的說明,也可以參照RFC 2109。
          構(gòu)造函數(shù)
          public Cookie(String name, String value);
          用一個(gè)name-value對(duì)定義一個(gè)cookie。這個(gè)name必須能被HTTP/1.1所接受。
          以字符$開頭的name被RFC 2109保留。
          給定的name如果不能被HTTP/1.1所接受,該方法拋出一個(gè)IllegalArgumentException。
          方法
          1、getComment
          public String getComment();
          返回描述這個(gè)cookie目的的說明,如果未定義這個(gè)說明,返回空值。
          2、getDomain
          public String getDomain();
          返回這個(gè)cookie可以出現(xiàn)的區(qū)域,如果未定義區(qū)域,返回空值。
          3、getMaxAge
          public int getMaxAge();
          這個(gè)方法返回這個(gè)cookie指定的最長存活時(shí)期。如果未定義這個(gè)最長存活時(shí)期,該方法返回-1。
          4、getName
          public String getName();
          該方法返回cookie名。
          5、getPath
          public String getPath();
          返回這個(gè)cookie有效的所有URL路徑的前綴,如果未定義,返回空值。
          6、getSecure
          public boolean getSecure();
          如果這個(gè)cookie只通過安全通道傳輸返回真,否則返回假。
          7、getValue
          public String getValue();
          該方法返回cookie的值。
          8、getVersion
          public int getVersion();
          返回cookie的版本。版本1由RFC 2109解釋。版本0由Netscape Communications Corporation的說明解釋。新構(gòu)造的cookie默認(rèn)使用版本0。
          9、setComment
          public void setComment(String purpose);
          如果一個(gè)用戶將這個(gè)cookie提交給另一個(gè)用戶,必須通過這個(gè)說明描述這個(gè)cookie的目的。版本0不支持這個(gè)屬性。
          10、setDomain
          public void setDomain(String pattern);
          這個(gè)方法設(shè)置cookie的有效域的屬性。這個(gè)屬性指定了cookie可以出現(xiàn)的區(qū)域。一個(gè)有效域以一個(gè)點(diǎn)開頭(.foo.com),這意味著在指定的域名解析系統(tǒng)的區(qū)域中(可能是www.foo.com但不是a.b.foo.com)的主機(jī)可以看到這個(gè)cookie。默認(rèn)情況是,cookie只能返回保存它的主機(jī)。
          11、setMaxAge
          public void setMaxAge(int expiry);
          這個(gè)方法設(shè)定這個(gè)cookie的最長存活時(shí)期。在該存活時(shí)期之后,cookie會(huì)被終目。負(fù)數(shù)表示這個(gè)cookie不會(huì)生效,0將從客戶端刪除這個(gè)cookie。
             12、setPath
          public void setPath(String uri);
          這個(gè)方法設(shè)置cookie的路徑屬性。客戶端只能向以這個(gè)給定的路徑String開頭的路徑返回cookie。
          13、setSecure
          public void setSecure(boolean flag);
          指出這個(gè)cookie只能通過安全通道(例如HTTPS)發(fā)送。只有當(dāng)產(chǎn)生這個(gè)cookie的服務(wù)器使用安全協(xié)議發(fā)送這個(gè)cookie值時(shí)才能這樣設(shè)置。
          14、setValue
          public void setValue(String newValue);
          設(shè)置這個(gè)cookie的值,對(duì)于二進(jìn)制數(shù)據(jù)采用BASE64編碼。
          版本0不能使用空格、{}、()、=、,、“”、/、?、@、:以及;。
          15、setVersion
          public void setVersion(int v);
          設(shè)置cookie的版本號(hào)

          七、HttpServlet類\
          定義\
          public class HttpServlet extends GenericServlet implements
             Serializable
          這是一個(gè)抽象類,用來簡化HTTP Servlet寫作的過程。它是GenericServlet類的擴(kuò)充,提供了一個(gè)處理HTTP協(xié)議的框架。
          在這個(gè)類中的service方法支持例如GET、POST這樣的標(biāo)準(zhǔn)的HTTP方法。這一支持過程是通過分配他們到適當(dāng)?shù)姆椒ǎɡ鏳oGet、doPost)來實(shí)現(xiàn)的。
          方法
          1、doDelete
          protected void doDelete(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          被這個(gè)類的service方法調(diào)用,用來處理一個(gè)HTTP DELETE操作。這個(gè)操作允許客戶端請(qǐng)求從服務(wù)器上刪除URL。這一操作可能有負(fù)面影響,對(duì)此用戶就負(fù)起責(zé)任。
          這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP BAD_REQUEST錯(cuò)誤。當(dāng)你要處理DELETE請(qǐng)求時(shí),你必須重載這一方法。
          2、doGet
          protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          被這個(gè)類的service方法調(diào)用,用來處理一個(gè)HTTP GET操作。這個(gè)操作允許客戶端簡單地從一個(gè)HTTP服務(wù)器“獲得”資源。對(duì)這個(gè)方法的重載將自動(dòng)地支持HEAD方法。
          GET操作應(yīng)該是安全而且沒有負(fù)面影響的。這個(gè)操作也應(yīng)該可以安全地重復(fù)。
          這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP BAD_REQUEST錯(cuò)誤。
          3、doHead
          protected void doHead(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          被這個(gè)類的service方法調(diào)用,用來處理一個(gè)HTTP HEAD操作。默認(rèn)的情況是,這個(gè)操作會(huì)按照一個(gè)無條件的GET方法來執(zhí)行,該操作不向客戶端返回任何數(shù)據(jù),而僅僅是返回包含內(nèi)容長度的頭信息。
          與GET操作一樣,這個(gè)操作應(yīng)該是安全而且沒有負(fù)面影響的。這個(gè)操作也應(yīng)該可以安全地重復(fù)。
          這個(gè)方法的默認(rèn)執(zhí)行結(jié)果是自動(dòng)處理HTTP HEAD操作,這個(gè)方法不需要被一個(gè)子類執(zhí)行。
          4、doOptions
          protected void doOptions(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          被這個(gè)類的service方法調(diào)用,用來處理一個(gè)HTTP OPTION操作。這個(gè)操作自動(dòng)地決定支持哪一種HTTP方法。例如,一個(gè)Servlet寫了一個(gè)HttpServlet的子類并重載了doGet方法,doOption會(huì)返回下面的頭:
          Allow: GET,HEAD,TRACE,OPTIONS
          你一般不需要重載這個(gè)方法。
          5、doPost
          protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          被這個(gè)類的service方法調(diào)用,用來處理一個(gè)HTTP POST操作。這個(gè)操作包含請(qǐng)求體的數(shù)據(jù),Servlet應(yīng)該按照他行事。
          這個(gè)操作可能有負(fù)面影響。例如更新存儲(chǔ)的數(shù)據(jù)或在線購物。
          這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP BAD_REQUEST錯(cuò)誤。當(dāng)你要處理POST操作時(shí),你必須在HttpServlet的子類中重載這一方法。
          6、doPut
          protected void doPut(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          被這個(gè)類的service方法調(diào)用,用來處理一個(gè)HTTP PUT操作。這個(gè)操作類似于通過FTP發(fā)送文件。
          這個(gè)操作可能有負(fù)面影響。例如更新存儲(chǔ)的數(shù)據(jù)或在線購物。
          這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP BAD_REQUEST錯(cuò)誤。當(dāng)你要處理PUT操作時(shí),你必須在HttpServlet的子類中重載這一方法。
          7、doTrace
          protected void doTrace(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          被這個(gè)類的service方法調(diào)用,用來處理一個(gè)HTTP TRACE操作。這個(gè)操作的默認(rèn)執(zhí)行結(jié)果是產(chǎn)生一個(gè)響應(yīng),這個(gè)響應(yīng)包含一個(gè)反映trace請(qǐng)求中發(fā)送的所有頭域的信息。
          當(dāng)你開發(fā)Servlet時(shí),在多數(shù)情況下你需要重載這個(gè)方法。
          8、getLastModified
          protected long getLastModified(HttpServletRequest request);
          返回這個(gè)請(qǐng)求實(shí)體的最后修改時(shí)間。為了支持GET操作,你必須重載這一方法,以精確地反映最后修改的時(shí)間。這將有助于瀏覽器和代理服務(wù)器減少裝載服務(wù)器和網(wǎng)絡(luò)資源,從而更加有效地工作。返回的數(shù)值是自1970-1-1日(GMT)以來的毫秒數(shù)。
    默認(rèn)的執(zhí)行結(jié)果是返回一個(gè)負(fù)數(shù),這標(biāo)志著最后修改時(shí)間未知,它也不能被一個(gè)有條件的GET操作使用。
          9、service
          protected void service(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException;
          public void service(ServletRequest request, ServletResponse response)
                throws ServletException, IOException;
          這是一個(gè)Servlet的HTTP-specific方案,它分配請(qǐng)求到這個(gè)類的支持這個(gè)請(qǐng)求的其他方法。
          當(dāng)你開發(fā)Servlet時(shí),在多數(shù)情況下你不必重載這個(gè)方法。

          八、HttpSessionBindingEvent類\
          定義\
          public class HttpSessionBindingEvent extends EventObject
          這個(gè)事件是在監(jiān)聽到HttpSession發(fā)生綁定和取消綁定的情況時(shí)連通HttpSessionBindingListener的。這可能是一個(gè)session被終止或被認(rèn)定無效的結(jié)果。
          事件源是HttpSession.putValue或HttpSession.removeValue。
          構(gòu)造函數(shù)
          public HttpSessionBindingEvent(HttpSession session, String name);
          通過引起這個(gè)事件的Session和發(fā)生綁定或取消綁定的對(duì)象名構(gòu)造一個(gè)新的HttpSessionBindingEvent。
          方法
          1、getName
          public String getName();
          返回發(fā)生綁定和取消綁定的對(duì)象的名字。
          2、getSession
          public HttpSession getSession();
          返回發(fā)生綁定和取消綁定的session的名字。

             九、HttpUtils類\
          定義\
          public class HttpUtils
          收集HTTP Servlet使用的靜態(tài)的有效的方法。
          方法
          1、getRequestURL
          public static StringBuffer getRequestURL(HttpServletRequest
                request);
          在服務(wù)器上重建客戶端用來建立請(qǐng)求的URL。這個(gè)方法反映了不同的協(xié)議(例如http和https)和端口,但不包含查詢字符串。
          這個(gè)方法返回一個(gè)StringBuffer而不是一個(gè)String,這樣URL可以被Servlet開發(fā)者有效地修改。
          2、parsePostData
          public static Hashtable parsePostData(int len,
                ServletInputstream in);
          解析一個(gè)包含MIME類型application/x-www-form-urlencoded的數(shù)據(jù)的流,并創(chuàng)建一個(gè)具有關(guān)鍵值-數(shù)據(jù)對(duì)的hash table。這里的關(guān)鍵值是字符串,數(shù)據(jù)是該字符串所對(duì)應(yīng)的值的列表。一個(gè)關(guān)鍵值可以在POST的數(shù)據(jù)中出現(xiàn)一次或多次。這個(gè)關(guān)鍵值每出現(xiàn)一次,它的相應(yīng)的值就被加入到hash table中的字符串所對(duì)應(yīng)的值的列表中。
          從POST數(shù)據(jù)讀出的數(shù)據(jù)將經(jīng)過URL解碼,+將被轉(zhuǎn)換為空格以十六進(jìn)制傳送的數(shù)據(jù)(例如%xx)將被轉(zhuǎn)換成字符。
          當(dāng)POST數(shù)據(jù)無效時(shí),該方法拋出一個(gè)IllegalArgumentException。
          3、parseQueryString
          public static Hashtable parseQueryString(String s);
          解析一個(gè)查詢字符串,并創(chuàng)建一個(gè)具有關(guān)鍵值-數(shù)據(jù)對(duì)的hash table。這里的數(shù)據(jù)是該字符串所對(duì)應(yīng)的值的列表。一個(gè)關(guān)鍵值可以出現(xiàn)一次或多次。這個(gè)關(guān)鍵值每出現(xiàn)一次,它的相應(yīng)的值就被加入到hash table中的字符串所對(duì)應(yīng)的值的列表中。
          從查詢字符串讀出的數(shù)據(jù)將經(jīng)過URL解碼,+將被轉(zhuǎn)換為空格以十六進(jìn)制傳送的數(shù)據(jù)(例如%xx)將被轉(zhuǎn)換成字符。
          當(dāng)查詢字符串無效時(shí),該方法拋出一個(gè)IllegalArgumentException。
          術(shù)語表
    bytecode
          字節(jié)碼:由Java編譯器和Java解釋程序生成的機(jī)器代碼。
    cookie
          由Web服務(wù)器建立的數(shù)據(jù),該數(shù)據(jù)存儲(chǔ)在用戶的計(jì)算機(jī)上,提供了一個(gè)Web站點(diǎn)跟蹤用戶的參數(shù)并存儲(chǔ)在用戶自己硬盤上的方法。
    HTTP
          超文本傳輸協(xié)議。一個(gè)請(qǐng)求響應(yīng)協(xié)議用來連接WWW服務(wù)器向客戶端瀏覽器傳輸HTML頁面。
    輸入流對(duì)象
             一個(gè)對(duì)象,由ServletInputStream類定義,被Servlet用來從客戶端讀取請(qǐng)求。
    映射
          由Servlet實(shí)例和Servlet返回?cái)?shù)據(jù)的URL組成的一對(duì),例如,HelloServlet和/hello/index.html。
    輸出流對(duì)象
             一個(gè)對(duì)象,由ServletOutputStream class類定義,被Servlet用來向客戶端返回?cái)?shù)據(jù)。
    request dispatcher object
          由RequestDispatcher接口定義的一個(gè)對(duì)象,用來從客戶端接收請(qǐng)求,并將其發(fā)送到Web服務(wù)器上可用的其他資源(例如Servlet、CGI、HTML文件或JSP文件)。
    sandboxed servlet
          在一個(gè)安全性約束下運(yùn)行的Servlet。
    servlet
             一個(gè)小的,具有平臺(tái)無關(guān)性的,沒有圖形用戶界面的Java程序。它可以在許多方面擴(kuò)充Web服務(wù)的功能。
    servlet configuration object
          ServletConfig接口定義的一個(gè)對(duì)象,用來配置一個(gè)Servlet。
    servlet context object
          ServletContext接口定義的一個(gè)對(duì)象。給予Servlet有關(guān)Servlet引擎的信息。
    servlet引擎
          由Web服務(wù)器提供商制作的一個(gè)環(huán)境,可以允許Servlet在具體的Web服務(wù)器上運(yùn)行。
    servlet請(qǐng)求對(duì)象
          由ServletRequest接口定義的一個(gè)對(duì)象,允許Servlet獲得用關(guān)客戶端請(qǐng)求的數(shù)據(jù)。
    servlet response object
          由ServletResponse接口定義的一個(gè)對(duì)象,允許Servlet作出響應(yīng)。
    servlet runner
             Java Servlet Developer’s Kit (JSDK)中的sun.servlet.http.HttpServer過程,它使得Servlet得以運(yùn)行。
    會(huì)話跟蹤
          在一個(gè)Web應(yīng)用程序中,識(shí)別一個(gè)從同一個(gè)客戶端發(fā)出的連續(xù)的唯一的請(qǐng)求的能力。
    SSL
          加密套接字協(xié)議層。一個(gè)安全協(xié)議,用來在Iternet上的客戶端瀏覽器和服務(wù)器交換密鑰和加密數(shù)據(jù)。
    URI
          統(tǒng)一資源標(biāo)識(shí)。定義一個(gè)Internet地址,它是一個(gè)URL的超集。
    URL
          統(tǒng)一資源路徑。這個(gè)地址定義了到達(dá)一個(gè)WWW上的文件的路線,通常由協(xié)議前綴、域名、目錄名和文件名組成

    posted on 2008-11-03 15:02 蘆葦 閱讀(536) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA其他
    主站蜘蛛池模板: 日韩版码免费福利视频| 国产精品免费高清在线观看| 日韩欧美一区二区三区免费观看| 亚洲AV无码乱码在线观看富二代| 国产成人高清精品免费观看| 亚洲第一页日韩专区| 一级毛片在线完整免费观看| 亚洲欧洲精品成人久久奇米网| 一级做a爱过程免费视| jlzzjlzz亚洲乱熟在线播放| 九九99热免费最新版| 亚洲国产精品嫩草影院在线观看| 99久久免费国产特黄| 亚洲欧洲国产精品香蕉网| a级毛片100部免费观看| 精品亚洲成AV人在线观看| 足恋玩丝袜脚视频免费网站| 国产成+人+综合+亚洲专| 日本一区免费电影| 色多多www视频在线观看免费| 中文字幕亚洲一区二区三区| 国产激情免费视频在线观看| 亚洲手机中文字幕| 国产精品无码素人福利免费| a一级毛片免费高清在线| 亚洲AV成人精品网站在线播放| 7723日本高清完整版免费| 亚洲国产精品无码久久久秋霞1| 无码专区一va亚洲v专区在线| 免费无码又爽又刺激网站直播 | 亚洲免费综合色在线视频| 免费一级毛片在线观看| 免费观看久久精彩视频| 亚洲娇小性xxxx| 亚洲免费日韩无码系列 | 一级做a爰片久久免费| 亚洲αv在线精品糸列| 无码人妻一区二区三区免费| 国产免费黄色无码视频| 亚洲免费视频网址| 国产精品亚洲二区在线观看 |