




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目標(biāo)-1-掌握會話跟蹤的相關(guān)技術(shù)理解Cookie的原理掌握Cookie的讀寫方法使用理解Session的原理理解Session的生命周期熟練掌握Session的方法使用掌握ServletContext的方法使用會話跟蹤技術(shù)會話跟蹤:HTTP是一種無狀態(tài)的協(xié)議,當(dāng)瀏覽器與服務(wù)器之間的請求、響應(yīng)結(jié)束后,服務(wù)器上不會保留任何客戶端的信息,因此會話必須靠編程實現(xiàn)?,F(xiàn)在的Web應(yīng)用,往往需要記錄特定客戶端一系列請求之間的聯(lián)系,以便于對客戶的狀態(tài)進(jìn)行追蹤。比如,在購物網(wǎng)站,服務(wù)器會為每個客戶配置一個購物車,購物車需要一直跟隨客戶,以便于客戶將商品放入購物車中,而且每個客戶之間的購物車也不會混淆。會話跟蹤技術(shù)的方案包括以下幾種:Cookie技術(shù)Session技術(shù)URL重寫技術(shù)隱藏表單域技術(shù)-2-由于隱藏表單域技術(shù)是將會話ID添加到隱藏域中,實現(xiàn)起來較為繁瑣,因此在實際應(yīng)用中不推薦使用該技術(shù)CookieCookie是服務(wù)器發(fā)給客戶端的一小段文本,保存在瀏覽器所在客戶端的內(nèi)存或磁盤上Cookie大大擴(kuò)展了基于Web的應(yīng)用功能Cookie是會話跟蹤的一種解決方案Cookie可用于網(wǎng)站內(nèi)容的用戶定制Cookie的安全機(jī)制Cookie不會以任何方式在客戶端被執(zhí)行瀏覽器會限制來自同一個網(wǎng)站的Cookie數(shù)目單個Cookie的長度是有限制的瀏覽器限制了最多可以接受的Cookie數(shù)目-3-Cookie的保存位置與操作系統(tǒng)和瀏覽器類型有關(guān)。WindowsXP系統(tǒng)下IE瀏覽器的Cookie保存在C:\DocumentsandSettings\當(dāng)前系統(tǒng)用戶名\LocalSettings\temporaryinternetfiles文件中的Cookies文件夾中使用CookieCookie的創(chuàng)建及使用
Cookie的構(gòu)造方法帶有兩個String類型的參數(shù),分別用于指定Cookie的屬性名稱和屬性值,語法如下:Cookie類的常用方法如下表:示例:2.1LoginServlet.java方法說明getMaxAge()/setMaxAge()讀取/設(shè)置Cookie的過期時間。如果使用setMaxAge()方法設(shè)置了一個負(fù)值,表示這個Cookie在用戶退出瀏覽器后馬上過期,如果setMaxAge()指定一個0值,表示刪除此CookiegetValue()/setValue()讀取/設(shè)置Cookie屬性值getComment()/setComment()讀取/設(shè)置注釋-4-CookieuserCookie=newCookie("uName",username);SessionSession技術(shù)Session是在JavaServletAPI中引入的一個非常重要的機(jī)制,用于跟蹤客戶端的狀態(tài),即在一段時間內(nèi),單個客戶端與Web服務(wù)器之間的一連串的交互過程稱為一個會話。HttpSession是JavaServletAPI中提供的對Session機(jī)制的實現(xiàn)規(guī)范。Servlet容器為每一個HttpSession對象分配一個唯一的標(biāo)識符,稱為SessionID,同時將SessionID發(fā)送到客戶端,由瀏覽器負(fù)責(zé)保存此SessionID。當(dāng)客戶端再發(fā)送請求時,瀏覽器會同時發(fā)送SessionID,Servlet容器可以從請求對象中讀取SessionID,根據(jù)SessionID的值找到相應(yīng)的HttpSession對象,如下圖所示:-5-通常服務(wù)器借助于Cookie把SessionID存儲在瀏覽器進(jìn)程中,在該瀏覽器進(jìn)程下一次訪問服務(wù)器時,服務(wù)器就可以從請求中的Cookie里獲取SessionID創(chuàng)建HttpSession創(chuàng)建HttpSession對象有以下兩種方式:getSession():返回當(dāng)前請求的會話,如果該會話對象不存在則創(chuàng)建一個新會話。getSession(booleancreate):返回當(dāng)前請求的會話。如果當(dāng)前請求不屬于任何會話,而且create參數(shù)為true,則創(chuàng)建一個會話,create參數(shù)為false則返回null。getSession()等價于getSession(true)-6-HttpSessionsession=request.getSession();//獲取當(dāng)前SessionHttpSessionsession=request.getSession(true);//獲取當(dāng)前SessionHttpSession的方法方法名描述publicvoidsetAttribute(Stringname,Objectvalue)將value對象以name名稱綁定到會話publicobjectgetAttribute(Stringname)獲取指定name的屬性值,如果屬性不存在則返回nullpublicvoidremoveAttribute(Stringname)從會話中刪除name屬性,如果不存在不會執(zhí)行,也不會拋處錯誤publicEnumerationgetAttributeNames()返回和會話有關(guān)的枚舉值publicvoidinvalidate()使會話失效,同時刪除屬性對象publicBooleanisNew()用于檢測當(dāng)前客戶是否為新的會話publiclonggetCreationTime()返回會話創(chuàng)建時間publiclonggetLastAccessedTime()返回在會話時間內(nèi)web容器接收到客戶最后發(fā)出的請求的時間publicintgetMaxInactiveInterval()返回在會話期間內(nèi)客戶請求的最長時間.秒publicvoidsetMasInactiveInterval(intseconds)允許客戶客戶請求的最長時間ServletContextgetServletContext()返回當(dāng)前會話的上下文環(huán)境,ServletContext對象可以使Servlet與web容器進(jìn)行通信publicStringgetId()返回會話期間的識別號-7-HttpSession生命周期-11、客戶端向服務(wù)器第一次發(fā)送請求的時候,request中并無SessionID。2、此時服務(wù)器會創(chuàng)建一個Session對象,并分配一個SessionID。Serssion對象保存在服務(wù)器端,此時為新建狀態(tài),調(diào)用session.isNew()返回true。3、當(dāng)服務(wù)器端處理完畢后,會將SessionID通過response對象傳回到客戶端,瀏覽器負(fù)責(zé)保存到當(dāng)前進(jìn)程中。4、當(dāng)客戶端再次發(fā)送請求時,會同時將SessionID發(fā)送給服務(wù)器。5、服務(wù)器根據(jù)傳遞過來的SessionID將這次請求(request)與保存在服務(wù)器端的Session對象聯(lián)系起來。此時Session已不處于新建狀態(tài),調(diào)用session.isNew()返回false。6、循環(huán)執(zhí)行過程3-5,直到Session超時或銷毀。-8-HttpSession生命周期-2Session的生命周期和訪問范圍如下圖:示例:2.2FirstServlet.java和SecondServlet.java-9-URL重寫URL重寫用戶由于某些原因禁止了瀏覽器的Cookie功能,Servlet規(guī)范中還引入了一種補(bǔ)充的會話管理機(jī)制,它允許不支持Cookie的瀏覽器也可以與Web服務(wù)器保持連續(xù)的會話。這種補(bǔ)充機(jī)制要求在需要加入同一會話的每個URL后附加一個特殊參數(shù),其值為會話標(biāo)識號(SessionID)將SessionID以參數(shù)形式附加在URL地址后的技術(shù)成為URL重寫HttpServletResponse接口中用于完成URL重寫的方法:encodeURL():用于對超鏈接或Form表單的action屬性中設(shè)置的URL進(jìn)行重寫encodeRedirectURL():用于對要傳遞給HttpServletResponse.sendRedirect()方法的URL進(jìn)行重寫-10-encodeURL()和encodeRedirectURL()方法根據(jù)請求消息中是否包含Cookie頭字段來決定是否進(jìn)行URL重寫
<ahref=s2;jsessionid=EE7406414267CAC832A2A08B2FCC1A7E>下一頁</a>由于Tomcat發(fā)送給瀏覽器的SessionID的Cookie名稱為jsessionid,因此,Tomcat服務(wù)器中的URL重寫就是在URL中附加了jsessionid參數(shù),其值為SessionID的值。ServletContext接口方法名描述publicobjectgetAttribute(Stringname)取得name的屬性值,如果屬性不存在則返回nullpublicEnumerationgetAttributes()取得包含在servletContext中的所有屬性值,如果屬性不存在則返回一個空的EnumerationpublicServletContextgetContext(Stringurlpath)返回一個與給定URL路徑相關(guān)的ServletContext對象publicEnumerationgetInitPrarmeterNames()返回所有servlet的初始化參數(shù)的名稱publicStringgetInitPrarmeter(Stringname)返回指定初始化參數(shù)的值publicintgetMajorVersion()返回servlet容器支持的ServletAPI的主要版本號publicStringgetMimeType(Stringfile)返回指定文件的MIME類型publicRequestDispatchergetNameDispatcher(Stringname)返回符合指定servlet名稱的RequestDispatcher對象publicStringgetRealPath(Stringpath)返回相應(yīng)于指定虛擬路徑的物理路徑publicRequestDispatchergetRequestDispatcher(Stringpath)返回一個與給定路徑相關(guān)的RequestDispatcher對象publicURLgetReSource(Stringpath)返回URL對象,該對象提供對指定資源的訪問publicInputStreamgetResourceAsStream(Stringpath)將一個輸入流返回到指定資源publicStringgetServerInfo()返回以名稱/格式包含servlet容器的名稱和版本publicvoidlog(Stingmsg)將指定的消息寫到servlet日至文件中publicvoidsetAttribute(Stringname,Objectvalue)將value對象以name名稱綁定到會話publicvoidremoveAttribute(Stringname)從會話中刪除name屬性,如果不存在不會執(zhí)行,也不會拋處錯誤-11-Servlet上下文是運行Servlet的邏輯容器。同一個上下文中的所有Servlet共享存于其中的信息和屬性ServletContext生命周期ServletContext的生命周期:新Servlet容器啟動的時候,服務(wù)器端會創(chuàng)建一個ServletContext對象;在容器運行期間ServletContext對象一直存在;當(dāng)容器停止時,ServletContext的生命周期結(jié)束。示例:2.3IndexServlet.java-12-初始化參數(shù)-1ServletContext中除了存取和Web應(yīng)用全局相關(guān)的屬性外,還可以通過getInitParameter()方法獲得設(shè)置在web.xml中的初始化參數(shù)示例:2.4web.xml-13-<web-app><!--初始化參數(shù)--> <context-param> <!--參數(shù)名--> <param-name>serverName</param-name> <!--參數(shù)值--> <param-value>localhost</param-value> </context-param> <context-param> <param-name>dbInstance</param-name> <param-value>nitpro</param-value> </context-param> <context-param> <param-name>userName</param-name> <param-value>system</param-value> </context-param> <context-param> <param-name>userPwd</param-name> <param-value>manager</param-value> </context-param><!--其他配置-->......</web-app>配置初始化參數(shù)初始化參數(shù)-2Servlet中通過ServletContext獲得初始化參數(shù)示例:2.4InitParamServlet.java
-14-使用getInitParameter()方法獲取在web.xml中配置的初始化參數(shù)//獲得ServletContext對象ServletContextctx=this.getServletContext();//獲得web.xml中設(shè)置的初始化參數(shù)StringserverName=ctx.getInitParameter("serverName");StringdbInstance=ctx.getInitParameter("dbInstance");StringuserName=ctx.getInitParameter("userName");Stringpassword=ctx.getInitParameter("userPwd");ServletConfig接口初始化參數(shù)和ServletConfigServlet容器初始化一個Servlet對象時,會為該Servlet對象分配一個ServletConfig對象。ServletConfig對象包含Servlet的初始化參數(shù)信息,它與ServletContext關(guān)聯(lián)。獲得初始化參數(shù)也可以通過使用ServletConf
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 切片豬肉售賣合同范本
- 外呼員工合同范本
- 混合性酸堿平衡失調(diào)護(hù)理查房
- 合伙經(jīng)營機(jī)械合同范本
- 安裝單包工合同范本
- 船運居間協(xié)議合同范本
- 木質(zhì)設(shè)備安裝合同范本
- 草皮出售合同范本
- 委托空調(diào)維修合同范本
- 焊接銑刀銷售合同范本
- 微量泵輸液泵使用技術(shù)
- epg信息管理制度
- 產(chǎn)品開發(fā)項目管理制度
- 液氧站安全管理制度
- 2025至2030年中國汽車空調(diào)過濾器行業(yè)市場現(xiàn)狀分析及前景戰(zhàn)略研判報告
- 【課件】《合并同類項》說課課件++2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊
- 2021年12月大學(xué)英語四級考試真題及答案(第1套)
- 【課件】新高三啟動主題班會:啟航高三逐夢未來
- 醫(yī)院殯葬領(lǐng)域管理制度
- 2025年軟考網(wǎng)絡(luò)管理員真題解析及答案
- 學(xué)校物業(yè)服務(wù)應(yīng)急事件處理預(yù)案
評論
0/150
提交評論