版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于Java的Web編程技術(shù)第六章Servlet第一頁,共四十六頁。上章回顧了解代理事件模型在JavaBean中訪問數(shù)據(jù)庫第二頁,共四十六頁。我們的目標了解Servlet體系結(jié)構(gòu)掌握請求和響應(yīng)第三頁,共四十六頁。簡介-1Java編程中一個最激動人心的最新趨勢是服務(wù)器端Java應(yīng)用程序的興起。Java這種面向?qū)ο蟮耐ㄓ镁幊陶Z言最初旨在用于小型嵌入設(shè)備,而后被認為是一種用于以Applet形式開發(fā)客戶端Web內(nèi)容的語言,如今Java已是一種非常適合服務(wù)器端開發(fā)的語言,商家迅速認識到Java在服務(wù)器上的潛力。第四頁,共四十六頁。簡介-2Applet是以Java語言開發(fā)的程序,它運行在客戶端機器的瀏覽器上,這些Applet不連接到服務(wù)器。在很多情況下需要訪問服務(wù)器上的數(shù)據(jù),而這無法通過Applet實現(xiàn)。為了訪問數(shù)據(jù)和執(zhí)行服務(wù)器端的請求處理,必須使用另一個稱為Servlet的應(yīng)用程序。Servlet是以Java編程語言開發(fā)的服務(wù)器端程序,它運行在Web服務(wù)器中,由于Servlet在服務(wù)器內(nèi)運行,所以這些程序可用于擴展Web服務(wù)器的功能。第五頁,共四十六頁。簡介-3客戶端Servlet數(shù)據(jù)庫HTTP服務(wù)器Servlet體系結(jié)構(gòu)第六頁,共四十六頁。簡介-4使用Servlet的優(yōu)點是:Servlet是持久性的。Servlet只須由Web服務(wù)器加載一次即可維護請求之間的服務(wù)。相比之下,每次向Web服務(wù)器發(fā)出請求時,Web服務(wù)器都必須加載和執(zhí)行CGI腳本。Servlet運行速度快。由于只須加載一次,所以提供更佳的性能。由于是用Java編寫,所以Servlet可跨平臺。Servlet可擴展。Java的所有優(yōu)點都可以在Servlet中體現(xiàn)。Servlet很安全。訪問Servlet的唯一途徑是通過服務(wù)器。Servlet可以與各種客戶端一起使用。第七頁,共四十六頁。6.1Servlet體系結(jié)構(gòu)-1Servlet是服務(wù)器端程序,運行在Web服務(wù)器上對客戶端的請求做出響應(yīng)。Web服務(wù)器向Servlet發(fā)送請求,Servlet的輸出結(jié)果返回至Web服務(wù)器,然后Web服務(wù)器將結(jié)果返回至Web瀏覽器,最后Web瀏覽器在屏幕上顯示結(jié)果。該過程稱為“請求-響應(yīng)”模型。Web瀏覽器ServletWeb服務(wù)器HTTP請求HTTP響應(yīng)第八頁,共四十六頁。6.1Servlet體系結(jié)構(gòu)-2Servlet使用以下兩個包中的類和接口:javax.servletjavax.servlet.http包名以javax開頭而不是java,表示ServletAPI是一個標準擴展。javax.servlet包包含了可以支持通用、跨協(xié)議的Servlet的類。javax.servlet.http包中的類增加了特定于HTTP的功能。每個Servlet都必須實現(xiàn)javax.servlet.Servlet接口。大部分Servlet通過擴展以下其中一個特殊類來實現(xiàn)這一接口:javax.servlet.GenericServlet或javax.servlet.http.HttpServlet。第九頁,共四十六頁。6.1Servlet體系結(jié)構(gòu)-3跨協(xié)議Servlet應(yīng)該繼承GenericServlet。HTTPServlet應(yīng)繼承HttpServlet,而HttpServlet本身是GenericServlet的子類,但添加了特定于HTTP的功能。Servlet接口只聲明而不實現(xiàn)用于管理Servlet及其與客戶端通信的方法。第十頁,共四十六頁。6.1Servlet體系結(jié)構(gòu)-4ServletGenericServletHttpServlet自定義Servlet第十一頁,共四十六頁。6.1.1常用接口和類-javax.servlet包其中最常用的接口如下:ServletRequest此接口用于將請求信息傳送給Servlet。在收到請求時,Servlet引擎會將關(guān)鍵的請求信息封裝在實現(xiàn)ServletRequest接口的對象中,傳遞至Servlet的service()方法。ServletResponse此接口提供服務(wù)器對客戶端請求的響應(yīng)的對象表示。Servlet引擎會將實現(xiàn)ServletResponse接口的對象傳遞給Servlet的service()方法。接著Servlet就可以使用此對象對客戶端請求做出響應(yīng)。RequestDispatcher此接口定義一個用于接收客戶端的請求并將其發(fā)送至任何資源的對象。此接口還可用于封裝Servlet。RequestDispatcher對象用作資源的封裝器,通過路徑或名稱指定。資源可以是服務(wù)器上的Servlet、HTML文件或JSP文件。第十二頁,共四十六頁。6.1.1常用接口和類-javax.servlet包其中最常用的接口如下:Servlet這是每個Servlet都必須實現(xiàn)的接口,它定義必須由Servlet實現(xiàn)的方法。ServletConfig此接口定義Servlet配置對象。此對象由Servlet引擎用于將任何信息傳遞給Servlet,以便可初始化Servlet。ServletConfig接口的其他詳情將在本章后面討論。ServletContext此接口定義了一組方法,Servlet使用這些方法與Servlet引擎進行通信。SingleThreadModel此接口確保每次Servlet只能處理一個請求。第十三頁,共四十六頁。6.1.1常用接口和類-javax.servlet包其中最常用的類如下:GenericServlet這是大部分非HTTPServlet擴展的類。此類定義通知、跨協(xié)議的Servlet。ServletInputStream這是提供輸入流用于讀取來自客戶端請求的二進制數(shù)據(jù)的類。此類包括方法readLine(),以此有效實現(xiàn)每次讀取一行數(shù)據(jù)。ServletOutputStream此類的運行方式與ServletInputStream相同,但此類提供輸出流用于將二進制數(shù)據(jù)發(fā)送給客戶端。第十四頁,共四十六頁。6.1.1常用接口和類-javax.servlet包javax.servlet包還具有某些異常,它們是:ServletException此異常是常規(guī)異常,由Servlet在執(zhí)行過程中遇到困難時拋出。UnavailableException此異常定義的是由Servlet拋出以表示Servlet永久或臨時不可用的異常。第十五頁,共四十六頁。6.1.1常用接口和類-javax.servlet.http包javax.servlet.http包中可用的接口包括:HttpServletRequest此接口擴展ServletRequest接口并支持ServletResult接口的所有方法。HttpServletRequest定義用于描述HTTP請求的方法。實現(xiàn)HttpServletRequest接口的對象被傳遞給Servlet的service方法或任何do()方法。HttpServletResponse此接口擴展ServletResponse并支持ServletResponse接口的所有方法。HttpServletResponse接口提供服務(wù)器對客戶端請求的響應(yīng)的對象表示。Servlet可以使用實現(xiàn)Servlet引擎?zhèn)鬟f的HttpServletResponse接口的對象。此對象將被傳遞至Servlet的service()方法。HttpSession此接口提供一種方法,用于在對Web站點的請求或訪問超過一個頁面時標識用戶。HttpSessionBindingListener在對象綁定至會話上或解除會話綁定時,此接口將通知對象。第十六頁,共四十六頁。6.1.1常用接口和類-javax.servlet.http包javax.servlet.http包中常用的類包括:CookieCookie類可以創(chuàng)建Cookie,Cookie存儲了少量由Servlet發(fā)送至客戶端的信息??蛻舳丝稍谏院笠L問以前訪問過的網(wǎng)頁時使用已存儲的信息。HttpServletHttpServlet類是最常用于擴展Servlet的類,這是因為很多Servlet應(yīng)用程序都按HTTP協(xié)議運行。此類支持HTTP功能以及Servlet類的方法,它是個抽象類。它接收客戶端的請求,并向客戶端發(fā)送響應(yīng)。HttpSessionBindingEvent在對象綁定至會話上或解除會話綁定時,此類會將對象傳遞給實現(xiàn)HttpSessionBindingListener接口的會話。第十七頁,共四十六頁。6.1.2Servlet生命周期-1Servlet是普通Java類,在需要時被創(chuàng)建,在不用時被破壞。Servlet的創(chuàng)建和破壞均由Servlet容器自動處理,這是因為Servlet是在Servlet容器內(nèi)運行。Servlet容器可以在單個Java虛擬機中執(zhí)行所有Servlet。Servlet容器必須遵循下列生命周期:創(chuàng)建和初始化Servlet(加載)處理客戶端的服務(wù)調(diào)用破壞Servlet并對其進行垃圾收集這三個步驟對所有Servlet都通用。Servlet容器創(chuàng)建Servlet實例時使用的是init()方法,而在破壞實例時使用的是destroy()方法。第十八頁,共四十六頁。6.1.2Servlet生命周期-2服務(wù)器加載Servlet服務(wù)器創(chuàng)建Servlet類的實例調(diào)用Servlet實例的init()方法收到請求調(diào)用service()方法service()方法處理請求并將輸出結(jié)果返回客戶端Servlet等待下一個請求或由服務(wù)器卸載Servlet在服務(wù)器調(diào)用destroy()方法后被卸載第十九頁,共四十六頁。6.1.2Servlet生命周期-3初始化Servlet任何時候?qū)ervlet加載至服務(wù)器,服務(wù)器都會調(diào)用Servlet的init()方法。即使大部分Servlet在多線程服務(wù)器上運行,Servlet在初始化過程中也不會碰到并發(fā)問題。init()方法在Servlet處理第一個請求之前調(diào)用,此方法用于執(zhí)行Servlet初始化–創(chuàng)建或加載Servlet在處理請求時使用的對象。服務(wù)器調(diào)用Servlet的init()方法,向新Servlet提供任何有關(guān)其本身及其環(huán)境的信息。覆蓋init()方法是為了在Servlet中添加初始化的內(nèi)容,覆蓋init()方法時必須遵循下列規(guī)則:如果發(fā)生初始化錯誤,致使Servlet不能處理客戶端請求,則拋出UnavailableException請勿調(diào)用System.exit()方法ServletConfig對象向Servlet提供其初始化參數(shù)信息,這些參數(shù)與其他任何請求都不關(guān)聯(lián)。ServletConfig對象還有對ServletContext對象的引用,Servlet可以使用此對象調(diào)查其環(huán)境。第二十頁,共四十六頁。6.1.2Servlet生命周期-4處理客戶端的請求Servlet接受客戶端的調(diào)用時,它將收到兩個對象:ServletRequest,用于封裝客戶端至服務(wù)器的通信。ServletResponse,用于封裝Servlet返回至客戶端的通信。HttpServlet接受客戶端的調(diào)用時,與普通Servlet相似,它們是:HttpServletRequestHttpServletResponseHttpServlet能夠并發(fā)地為多個客戶端服務(wù)。在Servlet初始化之后,在調(diào)用init()方法時,Servlet容器收到的任何請求都將被轉(zhuǎn)發(fā)至Servlet的service()方法。根據(jù)正在接收的HTTP請求類型,HttpServlet類的service()方法可在細分為doGet()、doPost()、doDelete()、doOptions()、doPut()和doTrace()方法。其中,doGet()和doPost()是兩個常用于處理服務(wù)器的請求并生成響應(yīng)的方法。第二十一頁,共四十六頁。6.1.2Servlet生命周期-5破壞Servlet要卸載Servlet時,服務(wù)器將調(diào)用Servlet的destroy()方法。在destroy()方法中,Servlet應(yīng)該釋放任何已獲得的資源。destroy()方法還使Servlet有機會寫出其未保存的高速緩存信息或任何在下次調(diào)用init()時應(yīng)該讀取的持久性信息。第二十二頁,共四十六頁。6.2請求和響應(yīng)-1下面討論表示客戶端請求和Servlet響應(yīng)的對象。Servlet的兩個包都具有請求和響應(yīng)的接口和類。javax.servlet包具有ServletRequest和ServletResponse接口,javax.servlet.http包具有HttpServletRequest和HttpServletResponse接口。第二十三頁,共四十六頁。6.2請求和響應(yīng)-2HttpServlet類HttpServlet類擴展了GenericServlet,提供Servlet接口的HTTP協(xié)議的特定實現(xiàn)。如果Servlet必須遵循HTTP協(xié)議,則只能擴展HttpServlet類并覆蓋所需的方法。HttpServlet最常用的兩個接口是:HttpServletRequestHttpServletResponse第二十四頁,共四十六頁。6.2請求和響應(yīng)-3HttpServletRequestHttpServletRequest對象提供對HTTP頭數(shù)據(jù)的訪問,獲得客戶端作為請求一部分進行發(fā)送的參數(shù)。通過擴展HttpServlet類并覆蓋相應(yīng)方法可以處理HTTP請求,這些請求的方法包括doGet()和doPost()。客戶端數(shù)據(jù)可以通過下列方式訪問:getParameter()方法,用于返回指定參數(shù)的值getParameterValues()方法,在參數(shù)具有多個值時使用,此方法返回指定參數(shù)的值數(shù)組。如果所需數(shù)據(jù)是文本格式,則getReader()方法返回BufferedReader對象用于讀取數(shù)據(jù),如果所需數(shù)據(jù)是二進制格式,則getInputStream()方法返回ServletInputStream對象用于讀取數(shù)據(jù)。第二十五頁,共四十六頁。6.2請求和響應(yīng)-4HttpServletResponseHttpServletResponse對象提供兩個將數(shù)據(jù)返回給用戶的方法。getWriter()方法,返回Writer對象,用于將文本數(shù)據(jù)返回給用戶getOutputStream()方法,返回ServletOutputStream對象,用于返回二進制數(shù)據(jù)在發(fā)送響應(yīng)后關(guān)閉Writer或ServletOutputStream可讓服務(wù)器知道何時完成響應(yīng)。第二十六頁,共四十六頁。6.2請求和響應(yīng)-5HttpServlet類中的常用方法voidinit()在初始化Servlet時調(diào)用一次voiddestroy()在要破壞Servlet實例時調(diào)用一次voidservice(HttpServletRequestreq,HttpServletResponseresp)請勿覆蓋此方法doGet()、doPost()、doPut()、doDelete()、doOptions()、doTrace()這些方法根據(jù)收到的HTTP請求的類型來調(diào)用。必須覆蓋以便生成響應(yīng)。voidlog(Stringmsg)將消息寫入Servlet的日志文件longgetLastModified(HttpServletreq)返回Servlet的最后修改日期StringgetServletInfo()提供Servlet的一般信息字符串,例如作者、版本、版權(quán)等StringgetServletName()返回Servlet的名稱StringgetInitParameter(Stringname)返回給定初始化參數(shù)的值EnumerationgetInitParameterNames()返回一個包含了所有提供的初始化參數(shù)名稱的Enumeration對象第二十七頁,共四十六頁。6.3會話和環(huán)境-1HTTP沒有為服務(wù)器提供識別請求序列是否來自同一客戶端的方法,這就引起一個問題,因為許多Web應(yīng)用程序都是有狀態(tài)的。HTTP服務(wù)器不能通過連接機器的IP地址來標識客戶端,這是因為報告的IP地址可能是代理服務(wù)器的地址或者是有多個用戶的服務(wù)器的地址。此問題的解決方案是客戶端任何時候做出新請求都必須進行自我介紹。每個客戶端都必須提供一個唯一標識以便服務(wù)器可識別它,或者客戶端必須提供某些信息以便服務(wù)器可用于正確處理請求。第二十八頁,共四十六頁。6.3會話和環(huán)境-2用戶在站點上瀏覽時,會話跟蹤使Servlet和其他服務(wù)器端應(yīng)用程序可以跟蹤用戶。服務(wù)器端應(yīng)用程序可以使用此功能跟蹤客戶端在站點上的操作。Web服務(wù)器通過為站點上的每個用戶創(chuàng)建Session對象來維護用戶狀態(tài),這些Session對象存儲在服務(wù)器中,并在服務(wù)器中進行維護。在用戶向站點做出請求時,用戶就分配有一個新的Session對象和唯一的會話ID。此會話ID在后續(xù)的請求中會將用戶與Session對象進行匹配然后Session對象就作為請求的一部分被傳遞至處理請求的Servlet。Servlet可以在Session對象中添加信息或讀取其中的信息。會話對于由多個Servlet組成的應(yīng)用程序來說很方便。第二十九頁,共四十六頁。6.3會話和環(huán)境-3下面討論不同的會話跟蹤技術(shù)用戶認證隱藏表單字段URL重寫持久Cookie會話交換和持久第三十頁,共四十六頁。6.3.1用戶認證在Web服務(wù)器只允許那些使用用戶名和口令進行登錄的客戶端訪問某些資源時,就需要使用用戶認證。在客戶端登錄后,用戶名即通過getRemoteUser()提供給Servlet。用戶名可用于跟蹤客戶端會話。一旦用戶登錄,瀏覽器即記住用戶名,并在用戶查看站點的新頁面時返回用戶名和口令。Servlet可以通過用戶名標識用戶,并以此跟蹤用戶。使用用戶認證的優(yōu)點是:容易實現(xiàn)??勺尫?wù)器保護一組頁面,并使用getRemoteUser()標識每個客戶端。此技術(shù)即使在用戶從不同機器訪問站點時也有效。即使用戶離開站點或在返回站點前退出瀏覽器,此技術(shù)同樣有效。使用用戶認證的缺點是:要求每個用戶都注冊一個帳戶,然后在每次訪問站點時登錄。用戶在同一站點上不能同時維護多個會話。第三十一頁,共四十六頁。6.3.2隱藏表單字段隱藏表單字段是指添加到HTML表單中,但不在客戶端的瀏覽器中顯示的字段。在提交包含字段的表單時,字段將被發(fā)送至服務(wù)器。隱藏表單字段定義表單的常變量,但對于接收提交的表單的Servlet,隱藏字段和可見字段沒有區(qū)別。使用隱藏表單字段的優(yōu)點是其功能強大并支持匿名。所有常用瀏覽器都支持隱藏字段,而且它們可用于未登錄或注冊的客戶端。隱藏表單字段的缺點是只適用于動態(tài)生成的表單序列。在遇到靜態(tài)文檔、以電子郵件發(fā)送的文檔、設(shè)計為書簽的文檔和瀏覽器關(guān)閉時,該技術(shù)即束手無策。第三十二頁,共四十六頁。6.3.3URL重寫使用URL重寫技術(shù),用戶單擊的每個URL都可被動態(tài)修改或重寫,以包括附加信息。附加信息的形式可為附加路徑信息、添加的參數(shù)或某些特定于服務(wù)器的自定義URL修改。重寫URL的可用空間是有限的,因此附加信息通常只限于唯一的會話ID。每種重寫技術(shù)都有其優(yōu)點和缺點。附加路徑信息適用于所有服務(wù)器,并作為使用GET和POST方法的表單的目標,但是,如果Servlet必須使用附加路徑信息作為實際路徑信息時,它就不適用。添加的參數(shù)適用于所有服務(wù)器,但在作為使用POST方法的表單的目標時將失效,并可能引起參數(shù)命名沖突。特定于服務(wù)器的自定義修改在任何情況下都適用于支持此類修改的服務(wù)器。第三十三頁,共四十六頁。6.3.4持久CookieCookie是Web服務(wù)器發(fā)送至瀏覽器,以后可從該瀏覽器上讀回的少量信息。瀏覽器收到Cookie后,在每次訪問服務(wù)器上的頁面時都會將其發(fā)送回服務(wù)器。由于Cookie的值可以方便地標識客戶端,因此Cookie通常用于會話跟蹤。第三十四頁,共四十六頁。6.3.5會話交換和持久-1因為訪問一個站點的用戶可有許多個,所以就會有許多會話訪問同一站點。Internet站點必須支持許多有效會話,例如,大型站點可能同時有幾百甚至幾千個有效會話。由于每個會話都可以包含應(yīng)用程序Servlet放置的任意數(shù)據(jù)對象,所以整個系統(tǒng)的內(nèi)存要求就很高。內(nèi)存中可以存在的會話數(shù)受到會話跟蹤系統(tǒng)的限制。session.maxresidents屬性設(shè)置此限制,當同時進行的會話的數(shù)量超過session.maxresidents設(shè)置的限制時,會話跟蹤器會將最近最不常用的會話交換到磁盤。被交換的會話沒有丟失,它們可以重載入內(nèi)存。如果收到請求,會話將被重載。會話交換使得系統(tǒng)中的有效會話比內(nèi)存所能容納的會話要多。第三十五頁,共四十六頁。6.3.5會話交換和持久-2會話交換絕不會影響會話的無效性。如果會話的未使用時間超過正常失效時間,它就會無效,不管會話是在內(nèi)存還是在磁盤。session.invalidationinterval屬性設(shè)置會話無效時間。串行化用于將會話寫入磁盤和從磁盤讀取會話。所以,可以串行化并置于會話中的對象將被寫入磁盤,而不能串行化的對象將保留在內(nèi)存中(即使會話的一部分已被寫入磁盤),會話跟蹤操作不會受串行化的影響。因此,Servlet開發(fā)者只保存會話中的可串行化對象。實現(xiàn)java.io.Serializable或java.io.Externalizable接口的對象都可串行化。在啟用了會話持久功能時,會話跟蹤器將使用會話交換機制實現(xiàn)會話持久。服務(wù)器關(guān)閉時,內(nèi)存中的會話即被寫入session.swapdirectory屬性中指定的磁盤。一旦啟動服務(wù)器,寫入磁盤的會話就變得有效。這就使服務(wù)器在重啟時不會丟失任何現(xiàn)有會話。會話中的可串行化數(shù)據(jù)元素在關(guān)閉/重啟操作時可以繼續(xù)運行。第三十六頁,共四十六頁。6.4HttpSession接口-1HttpSession接口定義一個對象,用于在客戶端和服務(wù)器之間提供關(guān)聯(lián),此關(guān)聯(lián)在經(jīng)過多次連接后仍然持久。它還可以維護事務(wù)處理之間的狀態(tài)。ServletAPI提供HttpSession接口以實現(xiàn)存儲功能。Servlet引擎可以創(chuàng)建一個對象,用于實現(xiàn)此接口,自動創(chuàng)建唯一的密鑰和將此密鑰附加至響應(yīng)。Servlet引擎負責存儲會話、跟蹤會話持久時間以及根據(jù)Servlet需要檢索會話。Session對象必須具有生命周期,這樣引擎才能將其拋棄。第三十七頁,共四十六頁。6.4HttpSession接口-2為了創(chuàng)建HTTP客戶端和HTTP服務(wù)器之間的會話,Servlet引擎使用HttpSession接口。對于用戶的多個連接或頁面請求,會話可持久的時間比實際指定的更長。正常情況下,會話對應(yīng)一個建立至站點的連接并多次訪問站點的用戶。服務(wù)器通過使用Cookie或重寫URL來維護會話。Servlet可通過HttpSession接口來查看和操縱會話的相關(guān)信息,如會話標識符、創(chuàng)建時間和環(huán)境。此接口允許Servlet將對象綁定至會話,并允許Servlet訪問標準會話屬性,例如會話標識符或會話環(huán)境。HttpSession接口允許Servlet從會話獲得數(shù)據(jù)和修改此數(shù)據(jù),然后將其返回給會話。第三十八頁,共四十六頁。6.4HttpSession接口-3會話跟蹤器檢查對象是否實現(xiàn)HttpSessionBindingListener接口。任何時候應(yīng)用程序存儲對象或?qū)⑵鋸臅捴袆h除,如果對象實現(xiàn)HttpSessionBindingListener接口,則Servlet都會通知此對象它已被綁定至會話或已解除會話綁定。在下列任何一種情況下,服務(wù)器都會將會話視為新的會話:客戶端首次進入頁面或站點時會話還未啟動時客戶端選擇不參與會話時第三十九頁,共四十六頁。6.5ServletConfig接口ServletConfig接口定義Servlet配置對象,Servlet引擎使用此對象將信息傳遞給Servlet以初始化Servlet。它包含Servlet初始化參數(shù)的名稱/值對,還包含對ServletContext對象的引用。此接口定義了三個訪問此信息的方法。StringgetInitParameter(Stringname)返回包含了指定初始化參數(shù)值的字符串,如果參數(shù)不存在則返回nullEnumerationgetInitParameterNames()將Servlet初始化參數(shù)的名稱作為字符串對象的枚舉返回,如果Servlet沒有初始化參數(shù)則返回空枚舉ServletCntextgetServletContext()返回服務(wù)器傳遞至此Servlet的ServletContext對象第四十頁,共四十六頁。6.6ServletContext-1使用此接口的對象讓Servlet查找有關(guān)Servlet引擎及其環(huán)境的信息。從ServletConfig對象可以獲得ServletContext。ServletContext類中常用的方法如下:ObjectgetAttribute(Stringname)返回給定名稱的Servlet引擎屬性,若無則返回nullEnumerationgetAttributeNames()返回包含了此Servlet環(huán)境中可用屬性名稱的枚舉ServletContextgetContext(Stringuripath)返回對應(yīng)于服務(wù)器上指定URL的ServletContext對象intgetMajorVersion()返回此Web服務(wù)器支持的JavaServletAPI的主要版本第四十一頁,共四十六頁。6.6ServletContext-2StringgetMimeType(Stringfile)返回指定文件的MIME類型,如果MIME類型未知則返回nullintgetMinorVersion()返回此Web服務(wù)器支持的JavaServletAPI的次要版本StringgetRealPath(Stringpath)返回包含了對應(yīng)于虛擬路徑的實際路徑的字符串RequestDispatchergetRequestDispatcher(Stringurlpath)返回一個可用作位于指定路徑的資源的封裝器的RequestDispatcher對象URLgetResource(Stringpath)返回映射至指
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 25396.2-2025農(nóng)業(yè)機械拋出物試驗和驗收規(guī)范第2部分:甩刀式割草機
- GB/T 45830-2025聲學開放式辦公空間的聲學質(zhì)量
- GB/T 45906.6-2025變電站二次系統(tǒng)第6部分:站內(nèi)監(jiān)控系統(tǒng)
- 母親之軀試題及答案
- 機械制造基礎(chǔ)部分課后習題答案
- 支氣管擴張癥試題及答案
- 信豐縣輔警考試公安基礎(chǔ)知識考試真題庫及參考答案
- 加氫工藝?;纷鳂I(yè)證理論試題及答案
- 醫(yī)院管理知識試題附答案
- 醫(yī)院污水(醫(yī)療廢水)處理培訓試題及答案
- 2026年遼寧省盤錦市高職單招語文真題及參考答案
- 農(nóng)投集團安全生產(chǎn)制度
- 近五年貴州中考物理真題及答案2025
- 2026年南通科技職業(yè)學院高職單招職業(yè)適應(yīng)性測試備考試題含答案解析
- 2025年黑龍江省大慶市中考數(shù)學試卷
- 2025年廣西職業(yè)師范學院招聘真題
- 山東煙草2026年招聘(197人)考試備考試題及答案解析
- 中遠海運集團筆試題目2026
- 扦插育苗技術(shù)培訓課件
- 妝造店化妝品管理制度規(guī)范
- 婦產(chǎn)科臨床技能:新生兒神經(jīng)行為評估課件
評論
0/150
提交評論