




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)習(xí)內(nèi)容:理解對(duì)象和JSP內(nèi)置對(duì)象的概念掌握J(rèn)SP的內(nèi)置對(duì)象的用法理解JSP的四種屬性范圍掌握J(rèn)SP屬性范圍和JSP內(nèi)置對(duì)象的范圍能靈活應(yīng)用JSP的內(nèi)置對(duì)象來(lái)開(kāi)發(fā)程序第5單元 JSP內(nèi)置對(duì)象1JSP內(nèi)置對(duì)象概述JSP內(nèi)置對(duì)象:不需聲明即可在JSP網(wǎng)頁(yè)中使用的對(duì)象。內(nèi)置(又稱(chēng)隱含)對(duì)象是特定Java類(lèi)的實(shí)例, 它們由JSP引擎在運(yùn)行時(shí)根據(jù)情況自動(dòng)創(chuàng)建并管理,在JSP頁(yè)面中可以直接使用。能實(shí)現(xiàn)很多功能, 如: 從客戶端獲得數(shù)據(jù)、向客戶端發(fā)回?cái)?shù)據(jù)、控制傳輸數(shù)據(jù)的有效域和異常處理等。對(duì)象的名稱(chēng)是JSP的保留字, 使用內(nèi)置對(duì)象可簡(jiǎn)化應(yīng)用開(kāi)發(fā)。隱含對(duì)象功能:不必使用表達(dá)式, 直接使用out對(duì)象向客戶端輸出
2、信息。如: 不必直接傳送參數(shù),可以借助請(qǐng)求對(duì)象取得客戶端輸入?yún)?shù)值。如:完成頁(yè)面的重定向。如: 在錯(cuò)誤頁(yè)面中顯示出錯(cuò)信息。 等等 29種隱含對(duì)象3JSP內(nèi)置對(duì)象的由來(lái)轉(zhuǎn)譯為Servlet編寫(xiě)jsp頁(yè)面可使用隱含對(duì)象留意: 它們?cè)赺jspService()方法中定義,故只能在腳本和表達(dá)式中使用4頁(yè)面對(duì)象: pagepage對(duì)象代表當(dāng)前JSP頁(yè)面, 即代表轉(zhuǎn)譯后的ServletJSP容器將JSP頁(yè)面轉(zhuǎn)譯成Servlet后, 將指針this賦給了page對(duì)象一般在JSP頁(yè)面中很少使用該對(duì)象運(yùn)用 page 對(duì)象可以訪問(wèn) Servlet 類(lèi)的所有變量和方法。5頁(yè)面上下文對(duì)象pageContext作用:
3、獲取任何范圍的參數(shù)該對(duì)象是javax.servlet.jsp.PageContext抽象類(lèi)的子類(lèi)的實(shí)例;它提供對(duì)頁(yè)面中所有其他內(nèi)置對(duì)象及其屬性的訪問(wèn)。通過(guò)pageContext對(duì)象可獲取JSP頁(yè)面的out, request, response, session, application等對(duì)象, 也可重新定向客戶的請(qǐng)求等。向普通Java程序傳遞該對(duì)象可以使其處理JSP中的其它對(duì)象。6pageContext的主要方法其它獲取內(nèi)置對(duì)象的方法:Object getPage(): 取得頁(yè)面的Page對(duì)象, 同內(nèi)置對(duì)象pageServletRequest getRequest():取得頁(yè)面請(qǐng)求對(duì)象(同內(nèi)置
4、request)ServletResponse getResponse():取得頁(yè)面響應(yīng)對(duì)象(同response)ServletContext getServletContext(): 取得頁(yè)面的ServletContext對(duì)象, 同內(nèi)置對(duì)象application;Exception getException():取得頁(yè)面內(nèi)置異常(同exception)對(duì)象頁(yè)面轉(zhuǎn)發(fā)和包含:void forward(String url) 作用類(lèi)似動(dòng)作指令, 用于將頁(yè)面轉(zhuǎn)發(fā)到指定的URL。void include(String url, boolean flush) 作用類(lèi)似動(dòng)作指令用于包含其它資源。當(dāng)flus
5、h為true時(shí), 自動(dòng)刷新緩沖區(qū)(將緩沖區(qū)內(nèi)容自動(dòng)輸出), 若為false且被包含資源輸出的內(nèi)容超過(guò)緩沖區(qū)容量將拋出緩沖區(qū)滿異常。(說(shuō)明見(jiàn)示例)7屬性設(shè)置和獲取:void setAttribute(String name,Object value, int scope):用于設(shè)置屬性; 其中name為屬性名, value為指定屬性值, 參數(shù)scope指定屬性作用范圍, 缺省為當(dāng)前頁(yè)面空間, 即page作用域(下同)。Object getAttribute(String name, int scope)用于讀取屬性值, 其中:name為屬性名, scope屬性存儲(chǔ)范圍。Enumeration g
6、etAttributeNamesInScope(int scope )取得所有scope范圍的屬性名稱(chēng)組成的列舉表void removeAttribute(String name, int scope)用于刪除屬性, 其中:name為屬性名, 參數(shù)scope指定屬性存儲(chǔ)范圍。查找屬性:Object findAttribute(String name)用于按作用范圍(從小到大的順序)搜索屬性: 頁(yè)面范圍、請(qǐng)求范圍、會(huì)話范圍和應(yīng)用范圍,參數(shù)name指定屬性名。int getAttributeScope(String name)用于獲取屬性的作用范圍, 參數(shù)name指定屬性名。屬性設(shè)置和獲取8屬性設(shè)
7、置和獲取示例9屬性(Attribute)的范圍在JSP頁(yè)面中屬性都有相應(yīng)的作用范圍(類(lèi)似作用域)屬性的范圍決定了屬性的作用域、生存期等重要特性。屬性的四種范圍:Page范圍(PageContext.PAGE_SCOPE):頁(yè)面范圍的屬性僅在當(dāng)前JSP頁(yè)面上下文中有效;若數(shù)據(jù)僅在當(dāng)前頁(yè)面中使用,可將數(shù)據(jù)設(shè)置在Page范圍。Request范圍(PageContext.REQUEST_SCOPE)請(qǐng)求范圍的屬性僅在HTTP請(qǐng)求服務(wù)期間才有效;當(dāng)數(shù)據(jù)在多個(gè)頁(yè)面使用, 可將數(shù)據(jù)設(shè)置在Request范圍。Session范圍(PageContext.SESSION_SCOPE)會(huì)話范圍的屬性在session
8、期間有效;若數(shù)據(jù)在多個(gè)請(qǐng)求中使用, 可將數(shù)據(jù)設(shè)置在Session范圍。Application范圍(PageContext.APPLICATION_SCOPE)應(yīng)用范圍的屬性在整個(gè)Web應(yīng)用程序運(yùn)行期間均有效;若數(shù)據(jù)在多個(gè)Session中使用用到, 可將數(shù)據(jù)設(shè)置在該范圍。若數(shù)據(jù)需要在會(huì)話中使用, 應(yīng)考慮使用實(shí)體Bean或消息。10屬性在指定范圍內(nèi)的存取方法11使用JSP屬性的一般注意事項(xiàng)設(shè)置屬性:setAttribute(屬性名,屬性值)其中: 屬性名為字符串類(lèi)型; 屬性值為Object類(lèi)型。對(duì)于基本類(lèi)型要進(jìn)行包裝類(lèi)轉(zhuǎn)換。如: 整數(shù)1, 則轉(zhuǎn)換為new Integer(1)獲得屬性:getAtt
9、ribute(String name)該方法返回的是java.lang.Object類(lèi)型的對(duì)象,應(yīng)根據(jù)屬性值的類(lèi)型進(jìn)行類(lèi)型轉(zhuǎn)換。如: 要取得String 類(lèi)型的Name屬性時(shí):String userName = (String)pageContext.getAttribute(“userName”);如: age為int類(lèi)型時(shí):int age = (Integer)session.getAttribute(age);存入不同范圍內(nèi)的屬性在功能上區(qū)別很大在使用屬性存儲(chǔ)數(shù)據(jù)前, 應(yīng)先根據(jù)屬性的功能要求, 確定準(zhǔn)備將屬性存儲(chǔ)在Request、Session 、Application或PageCont
10、ext的哪個(gè)之中, 以便將相應(yīng)數(shù)據(jù)存入選定對(duì)象之中。12屬性范圍示例13小結(jié):JSP隱式對(duì)象一般分為輸入/輸出對(duì)象、作用域通信對(duì)象 、Servlet 對(duì)象和錯(cuò)誤對(duì)象四類(lèi)。page對(duì)象代表JSP被轉(zhuǎn)譯后的Servlet。pageContext提供了系統(tǒng)運(yùn)行期間各種信息內(nèi)容的存取操作功能,它能夠存取其他隱含對(duì)象。JSP有四種屬性作用范圍:page范圍的屬性僅在當(dāng)前頁(yè)面中可見(jiàn)不能多頁(yè)共享Request范圍的屬性僅限于一個(gè)請(qǐng)求, 可跨越多個(gè)JSP頁(yè)面, 涉及多個(gè)Web組件;Session范圍的屬性作用于一個(gè)會(huì)話, 一個(gè)會(huì)話可包含多個(gè)請(qǐng)求。Application范圍的屬性作用范圍最大, 停留時(shí)間最久,在
11、服務(wù)器開(kāi)始執(zhí)行服務(wù),到服務(wù)器關(guān)閉為止。14二、請(qǐng)求與響應(yīng)對(duì)象15out 對(duì)象out對(duì)象:以字符流形式向客戶端輸出數(shù)據(jù); 僅作用于pageout對(duì)象可以向客戶端輸出各種數(shù)據(jù)類(lèi)型的內(nèi)容, 通過(guò)out能直接向客戶端寫(xiě)一個(gè)由程序動(dòng)態(tài)生成HTML文檔。out是抽象類(lèi)javax.servlet.jsp.JspWriter的實(shí)例, 常用方法:16out對(duì)象可采用緩沖區(qū)輸出out對(duì)象管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)out對(duì)象內(nèi)含java.io.Writer進(jìn)行輸出, 并實(shí)現(xiàn)了緩沖區(qū),并緩沖區(qū)默認(rèn)為8KB; 用page指令的buffer屬性調(diào)整out對(duì)象緩存的大小, 甚至允許關(guān)閉緩存。即: close()方法可以刷
12、新緩沖區(qū), 關(guān)閉輸出流。但編寫(xiě)JSP頁(yè)面時(shí), 不要顯示地調(diào)用該方法, 在JSP容器生成的代碼中會(huì)自動(dòng)包含對(duì)它的調(diào)用。17請(qǐng)求對(duì)象reques請(qǐng)求對(duì)象reques封裝了來(lái)自客戶端的請(qǐng)求信息當(dāng)客戶端請(qǐng)求一個(gè)JSP網(wǎng)頁(yè)時(shí),JSP引擎會(huì)將客戶端的發(fā)來(lái)的HTTP請(qǐng)求信息包裝在內(nèi)置的request對(duì)象中。例如: 在form表單中填寫(xiě)的信息等它是javax.servlet.HttpServletRequest接口的實(shí)例對(duì)象在JSP中, 若需要請(qǐng)求信息的細(xì)節(jié), 都可通過(guò)request對(duì)象獲得:請(qǐng)求的標(biāo)題頭(Header),如:瀏覽器的版本、語(yǔ)言和編碼方式等信息。請(qǐng)求的方式(GET、POST、PUT等),參數(shù)名
13、稱(chēng)、參數(shù)值和客戶端的主機(jī)名稱(chēng)、cookies、及其它與請(qǐng)求相關(guān)的參數(shù)值等等。HttpServletRequest接口中重要的方法有4個(gè):getParameter() :讀取請(qǐng)求參數(shù)getParameterNames():獲取指定范圍內(nèi)的請(qǐng)求參數(shù)名的集合;getParameterValues():讀取指定參數(shù)的所有值;getHeader():讀取指定字段名的請(qǐng)求頭信息。此外該接口還包含大量的方法, 概括起來(lái)分為四類(lèi)。18請(qǐng)求對(duì)象requesHttpServletRequest接口提供的方法可分為四類(lèi):取得請(qǐng)求HTTP 頭的方法;儲(chǔ)存和取得屬性方法;取得請(qǐng)求參數(shù)的方法;其他取得請(qǐng)求的URL、IP和
14、session等的方法。如:getRequestURL()、getRemoteAddr()、getSession()等取得請(qǐng)求HTTP 頭的方法:19獲取請(qǐng)求頭字段示例20其他的方法21請(qǐng)求的其它方法示例22與屬性、請(qǐng)求參數(shù)相關(guān)的方法儲(chǔ)存和取得屬性方法:取得請(qǐng)求參數(shù)的方法:23獲得客戶端提交的信息對(duì)中文要進(jìn)行專(zhuān)門(mén)處理對(duì)中文要進(jìn)行專(zhuān)門(mén)處理24與輸出響應(yīng)相關(guān)的常用方法25中文信息處理JSP頁(yè)面的漢字問(wèn)題主要指兩方面:JSP頁(yè)面中的漢字問(wèn)題和表單提交的漢字問(wèn)題。對(duì)于JSP頁(yè)面的漢字問(wèn)題:在需要顯示漢字的JSP中用page指令告訴客戶端采用漢字編碼:。在無(wú)特別指示下, 瀏覽器無(wú)法正確顯示漢字。表單提交
15、的漢字問(wèn)題:在互過(guò)程中,雖然客戶端和服務(wù)器都采用GB2312對(duì)漢字編碼, 而HTTP傳輸用ISO_8859_1編碼, 故即要在服務(wù)器端用指令:指示客戶端漢字的顯示編碼,也要在服務(wù)器端對(duì)接收到客戶端數(shù)據(jù)進(jìn)行GB2312編碼轉(zhuǎn)換處理。26中文信息處理示例27獲取表單中的各種數(shù)據(jù)(用戶注冊(cè))28響應(yīng)對(duì)象responseJSP引擎將對(duì)客戶端的響應(yīng)封裝成一個(gè)response對(duì)象, 在該對(duì)象中包含了發(fā)送給客戶端的有關(guān)信息。留意: 由于信息的組織方式比較底層, 在僅要向客戶端發(fā)送文字時(shí)直接使用out對(duì)象即可。response是實(shí)現(xiàn)javax.servlet.HttpServletResponse接口的類(lèi)實(shí)例
16、, 它規(guī)定了很多方法, 且具有頁(yè)面作用范圍。使用response對(duì)象可以動(dòng)態(tài)創(chuàng)建Web頁(yè)面,改變HTTP標(biāo)頭, 還可自動(dòng)將客戶端重定向到一個(gè)指定的頁(yè)面中。向客戶端寫(xiě)入Cookies時(shí), response對(duì)象也是一種很好的工具。設(shè)定響應(yīng)狀態(tài)碼的方法:29response的狀態(tài)行示例當(dāng)服務(wù)器響應(yīng)客戶端請(qǐng)求時(shí), 發(fā)送的首行稱(chēng)為狀態(tài)行。1xx主要是試驗(yàn)性質(zhì)的;2xx表示請(qǐng)求成功;3xx表示在請(qǐng)求在滿足之前應(yīng)進(jìn)一步采取的行動(dòng);4xx表示服務(wù)器無(wú)法滿足要求;5xx服務(wù)器出現(xiàn)錯(cuò)誤。30設(shè)置響應(yīng)頭信息的方法客戶端頁(yè)面自動(dòng)刷新:在response對(duì)象中添加頭字段refresh, 使客戶端顯示該頁(yè)面時(shí), 每5秒刷
17、新一次。31重定向URL的方法重定向URL與請(qǐng)求轉(zhuǎn)發(fā)運(yùn)行原理不同!1231232動(dòng)態(tài)設(shè)置MIME類(lèi)型MIME(多用途網(wǎng)際郵件擴(kuò)充協(xié)議)類(lèi)型page指令只能為contentType指定一個(gè)值,若想動(dòng)態(tài)地改變?cè)搶傩缘闹狄愿鞣N不同方式做出響應(yīng),就要使用response對(duì)象的setContentType()方法改變contentType的值。若改變?cè)搶傩灾? 服務(wù)器將按新的MIME類(lèi)型做出響應(yīng) contentType屬性和MIME的對(duì)應(yīng)關(guān)系如左表:33再談?wù)埱笞饔梅秶?qǐng)求對(duì)象的作用范圍:從JSP容器收到客戶端發(fā)出一個(gè)請(qǐng)求開(kāi)始, 服務(wù)器就創(chuàng)建一個(gè)請(qǐng)求對(duì)象(請(qǐng)求作用域開(kāi)始); 直到服務(wù)器對(duì)客戶端發(fā)回響應(yīng)終
18、止。請(qǐng)求開(kāi)始:在瀏覽器地址欄、點(diǎn)擊超鏈、提交表單在同一個(gè)請(qǐng)求作用域內(nèi)request對(duì)象是惟一的、其中的屬性、請(qǐng)求參數(shù)(包括由表單提交的), 在request的生存期中都有效。request對(duì)象對(duì)不同用戶、不同次的請(qǐng)求,JSP容器都會(huì)創(chuàng)建都會(huì)創(chuàng)建不相同請(qǐng)求對(duì)象。請(qǐng)求作用的延續(xù):request對(duì)象(包括該范圍的屬性、參數(shù))的生命周期除了該JSP頁(yè)面外,若該網(wǎng)頁(yè)中使用到或操作指令,則其生命周期延伸至被include進(jìn)來(lái)的頁(yè)面或forward出去的網(wǎng)頁(yè)。即這幾個(gè)頁(yè)面共享對(duì)服務(wù)器的一個(gè)請(qǐng)求。當(dāng)接收到用戶發(fā)出新的請(qǐng)求時(shí),該請(qǐng)求隨之失效,存放其中的屬性也同時(shí)失效。34請(qǐng)求作用范圍測(cè)試35小結(jié):request
19、對(duì)象和response對(duì)象的結(jié)合可以使JSP更好地實(shí)現(xiàn)客戶端與服務(wù)器的信息交互。用戶在客戶端瀏覽器中發(fā)出的請(qǐng)求信息被保存在request對(duì)象中并發(fā)送給Web服務(wù)器;JSP引擎根據(jù)JSP頁(yè)面的指示處理request對(duì)象;或根據(jù)實(shí)際需要將request對(duì)象轉(zhuǎn)發(fā)給由JSP頁(yè)面指定的其他服務(wù)器端組件;如Servlet組件、JavaBean組件或EJB組件等。處理結(jié)果則以response對(duì)象的方式返回給JSP引擎,JSP引擎和Web服務(wù)器根據(jù)response對(duì)象最終生成JSP頁(yè)面,返回給客戶端瀏覽器,這也是用戶最終看到的內(nèi)容。36三: 會(huì)話、應(yīng)用對(duì)象與會(huì)話跟蹤37會(huì)話什么是會(huì)話:在一段時(shí)間內(nèi),單一客戶C
20、lient與服務(wù)器Server間的交互過(guò)程;服務(wù)器利用會(huì)話機(jī)制能標(biāo)識(shí)出來(lái)自同一個(gè)客戶的一系列請(qǐng)求。為什么需要會(huì)話機(jī)制:會(huì)話機(jī)制能保存每個(gè)用戶的狀態(tài), 以對(duì)各用戶給予正確響應(yīng)。HTTP是無(wú)狀態(tài)協(xié)議, 單一客戶端向服務(wù)器發(fā)出的每次請(qǐng)求, 都會(huì)建立單獨(dú)的連接, 并在請(qǐng)求得到響應(yīng)后, 斷開(kāi)與服務(wù)啟動(dòng)連接, 服務(wù)器不能自動(dòng)維護(hù)客戶的上下文信息。服務(wù)器為單個(gè)用戶的多個(gè)請(qǐng)求創(chuàng)建同一個(gè)session對(duì)象session生命周期: 在首次向服務(wù)器發(fā)出請(qǐng)求時(shí)建立, 到會(huì)話結(jié)束(關(guān)閉瀏覽器)或session到期(Tomcat默認(rèn)30分鐘)時(shí)銷(xiāo)毀。會(huì)話對(duì)象保存了單一客戶一次會(huì)話過(guò)程的所有信息,可用來(lái)追蹤每個(gè)用戶的狀態(tài),
21、以保持服務(wù)器和客戶端間的銜接。session中的ID標(biāo)識(shí)是唯一的, 用來(lái)標(biāo)識(shí)客戶的一次會(huì)話過(guò)程, 當(dāng)同一瀏覽器訪問(wèn)同一個(gè)web應(yīng)用時(shí), 該標(biāo)識(shí)的值不變。38session對(duì)象該對(duì)象是實(shí)現(xiàn)javax.servlet.HttpSession接口類(lèi)的實(shí)例會(huì)話對(duì)象可通過(guò)Servlet或在JSP轉(zhuǎn)譯的Servlet等方法獲取。在jsp腳本中, 默認(rèn)狀態(tài)下session對(duì)象是可直接使用可用的;JSP頁(yè)面可使用如下指令明確指出禁用Session功能:內(nèi)置對(duì)象對(duì)通信的控制:request封裝客戶端的服務(wù)請(qǐng)求;response封裝對(duì)客戶端的響應(yīng);session維持請(qǐng)求/響應(yīng)過(guò)程中客戶端的狀態(tài)信息。39會(huì)話對(duì)象s
22、essionsession對(duì)象也可以通過(guò)request對(duì)象獲?。篻etSession(boolean arg): 若arg=true且會(huì)話對(duì)象未創(chuàng)立, 則創(chuàng)建并返回;若arg=false且會(huì)話對(duì)象未創(chuàng)立, 不創(chuàng)建session對(duì)象。getSession(): 若session未創(chuàng)建則創(chuàng)建該對(duì)象, 返回session對(duì)象。40session生命周期示例41session對(duì)象的生存時(shí)間(不關(guān)閉Cookie)一般下列情況會(huì)使會(huì)話結(jié)束:因網(wǎng)絡(luò)故障套接字刪除、關(guān)閉瀏覽器、服務(wù)器重起、會(huì)話超時(shí)和主動(dòng)撤銷(xiāo)會(huì)話。42在會(huì)話對(duì)象中保存數(shù)據(jù)(登錄示例)43application對(duì)象每個(gè)web應(yīng)用程序都有一個(gè)app
23、lication對(duì)象負(fù)責(zé)提供該應(yīng)用程序在JSP容器中運(yùn)行時(shí)的一些全局信息。JSP容器自動(dòng)為每個(gè)web應(yīng)用程序創(chuàng)建一個(gè)application對(duì)象,且在服務(wù)器關(guān)閉前, 該對(duì)象一直存在, 并被該程序所有用戶共享。application對(duì)象允許同一應(yīng)用程序系統(tǒng)的所有JSP頁(yè)面, 及同一應(yīng)用程序中的任何Web 組件, 在該對(duì)象中保存公共共享信息。appliaction對(duì)象與session對(duì)象的區(qū)別:session對(duì)象和用戶客戶端有關(guān),不同客戶端的session是不同的對(duì)象, 而appliaction對(duì)象對(duì)所有的客戶端都是相同的一個(gè)對(duì)象。application對(duì)象是javax.servlet.Servle
24、tContext接口的實(shí)例44application對(duì)象的常用方法45application范圍的使用application范圍的作用域:服務(wù)器一開(kāi)始執(zhí)行服務(wù),到服務(wù)器關(guān)閉為止。application范圍的作用域最大、存在時(shí)間最久, 使用時(shí)要特別注意, 否則可能會(huì)造成服務(wù)器負(fù)載越來(lái)越重的情況。多次刷新后關(guān)閉所有瀏覽器,重新訪問(wèn)后關(guān)閉Tomcat,重新訪問(wèn)該程序后46config對(duì)象在編譯JSP頁(yè)面過(guò)程中用該對(duì)象存儲(chǔ)Servlet的創(chuàng)建信息config對(duì)象實(shí)現(xiàn)javax.servlet.ServletConfig接口; 重要方法如下:例:config對(duì)象讀取web.xml中Servlet配置參數(shù)
25、和page對(duì)象一樣很少使用。47exception對(duì)象exception對(duì)象代表JSP文件運(yùn)行時(shí)所產(chǎn)生的異常對(duì)象。exception 對(duì)象是 java.lang.Throwable類(lèi)的實(shí)例。若在JSP頁(yè)面中出現(xiàn)沒(méi)有捕捉到的異常信息, 則系統(tǒng)將自動(dòng)生成exception對(duì)象,并把該對(duì)象傳送到page指令元素中設(shè)定的錯(cuò)誤處理頁(yè)面中, 再在錯(cuò)誤頁(yè)面中處理相應(yīng)的exception對(duì)象。因此, 該對(duì)象不能在一般JSP頁(yè)面中直接使用, 只能在指定的錯(cuò)誤處理頁(yè)面中使用,否則編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤。48用戶請(qǐng)求時(shí)錯(cuò)誤產(chǎn)生原因:用戶請(qǐng)求處理時(shí)錯(cuò)誤的發(fā)生,往往不是語(yǔ)法錯(cuò)誤,而可能是邏輯上的錯(cuò)誤。例如:一個(gè)計(jì)算除法的程序
26、,當(dāng)用戶輸入的分母為零時(shí)程序會(huì)發(fā)生錯(cuò)誤并拋出異常(Exception),這時(shí)應(yīng)當(dāng)交由異常處理機(jī)制(Exception Handling)做適當(dāng)?shù)奶幚?。兩個(gè)可選方案:由于JSP經(jīng)轉(zhuǎn)譯會(huì)形成一個(gè)Servlet Java源文件, 故可在JSP頁(yè)內(nèi)使用try-catch捕獲JSP中可能出現(xiàn)的異常。由于JSP頁(yè)除包含HTML標(biāo)簽,還包含各種腳本元素,在JSP中用try-catch結(jié)構(gòu)會(huì)使頁(yè)面更加混亂。這種方案并不理想。采用JSP提供的更加簡(jiǎn)潔有效的異常處理機(jī)制。分為兩步:1)編寫(xiě)一個(gè)專(zhuān)用的JSP錯(cuò)誤處理頁(yè)面2)在可能發(fā)生錯(cuò)誤的JSP頁(yè)面中指定專(zhuān)用的異常處理JSP頁(yè)49會(huì)話跟蹤會(huì)話跟蹤: 在服務(wù)器端和客戶
27、端之間保持唯一的會(huì)話ID簡(jiǎn)單說(shuō),就是從上一個(gè)請(qǐng)求所傳送的數(shù)據(jù)能夠維持狀態(tài)到下一個(gè)請(qǐng)求,并且辨認(rèn)出是相同的Client端所發(fā)送出的。在Servlet規(guī)范中支持以下3種會(huì)話跟蹤機(jī)制:SSL(安全套接字層)會(huì)話: 在客戶與服務(wù)器端之間保持加密連接cookie: 使用cookie存儲(chǔ)服務(wù)器分配給客戶端的會(huì)話ID URL重寫(xiě): 在每個(gè)URL的尾部添加一些額外數(shù)據(jù)(如: 會(huì)話ID)供由于種種原因無(wú)法使用Cookie的用戶。懇求 1懇求 2 懇求 n服務(wù)器將唯一的會(huì)話ID分配給客戶端以跟蹤用戶50SSL會(huì)話SSL是一種在Internet上保證發(fā)送信息安全的通用協(xié)議,它基于公鑰加密進(jìn)行工作。SSL建立在所有的
28、socket通信之上,所有的數(shù)據(jù)被發(fā)送到網(wǎng)絡(luò)上之前都會(huì)被它加密,并在這些數(shù)據(jù)安全到達(dá)目的地之后對(duì)它們解密。SSL可以讓采用SSL的服務(wù)器認(rèn)證采用SSL的客戶端, 并在客戶端和服務(wù)器端之間保持一種加密連接。SSL會(huì)話在建立了加密連接的過(guò)程中, 客戶和服務(wù)器都會(huì)產(chǎn)生會(huì)話密鑰, 它是一種用于加密和解密消息的對(duì)稱(chēng)密鑰。Web瀏覽器一般都支持HTTP和HTTPS(以SSL為基礎(chǔ)的HTTP)基于HTTPS協(xié)議的服務(wù)器可用這個(gè)客戶的對(duì)稱(chēng)密鑰建立會(huì)話。51Cookie(小甜餅)Cookie概念Cookie由Netscape公司發(fā)明, 是一種由服務(wù)器發(fā)送到客戶端的片段信息, 存儲(chǔ)在客戶端瀏覽器內(nèi)存或硬盤(pán)中。當(dāng)用戶訪問(wèn)某Web服務(wù)器時(shí), Web服務(wù)器可要求瀏覽器查找并返回先前發(fā)送的Cookie信息。Cookie的用途:Cookie使Web服務(wù)器統(tǒng)計(jì)某個(gè)訪問(wèn)者的訪問(wèn)次數(shù)、最后訪問(wèn)時(shí)間和訪問(wèn)者進(jìn)入Web服務(wù)器的路徑。在Cookie有效期內(nèi),能使用戶在不登錄的情況下進(jìn)入曾經(jīng)瀏覽過(guò)的網(wǎng)頁(yè)。Cookie能幫助網(wǎng)站根據(jù)用戶信息實(shí)現(xiàn)個(gè)性化服務(wù)。52Set-Cookie響應(yīng)報(bào)頭的格式其中:Name
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 業(yè)務(wù)委托外包服務(wù)協(xié)議合同書(shū)
- 企業(yè)員工健康體檢服務(wù)協(xié)議
- 企業(yè)環(huán)保技術(shù)應(yīng)用推廣合作協(xié)議
- 續(xù)簽合同意向協(xié)議書(shū)
- 綜合辦公效率提升統(tǒng)計(jì)表
- 小學(xué)生愛(ài)國(guó)情懷教育故事解讀
- 健康咨詢與服務(wù)推廣協(xié)議
- 甲醛檢測(cè)儀知識(shí)培訓(xùn)課件
- 電子商務(wù)網(wǎng)絡(luò)安全管理與應(yīng)用試題及答案
- 2024-2025學(xué)年高二英語(yǔ)人教版選擇性必修第三冊(cè)教學(xué)課件 UNIT 3 Assessing Your Progress
- 女性更年期科普-健康科普課件
- 全過(guò)程工程咨詢管理服務(wù)方案投標(biāo)方案(技術(shù)方案)
- 2024年中考物理實(shí)驗(yàn)(全國(guó)版):探究光的反射定律(解析版)
- 四川省遂寧市2023-2024學(xué)年高二下學(xué)期期末考試地理試題
- 2024年5月時(shí)政熱點(diǎn)題庫(kù)及答案(一)
- 提高糖尿病患者自我注射胰島素的規(guī)范率(內(nèi)分泌科QCC成果匯報(bào))
- 電子產(chǎn)品工藝文件模板-2024
- DL∕T 2577-2022 軸流轉(zhuǎn)漿式水輪發(fā)電機(jī)組檢修規(guī)程
- 《鐵路職業(yè)道德》課件-5. 1職業(yè)行為規(guī)范內(nèi)涵
- (2024年)建筑工程施工工藝
- 婦幼健康科普知識(shí)宣傳活動(dòng)
評(píng)論
0/150
提交評(píng)論