![課件-cookie與主要內(nèi)容_第1頁](http://file4.renrendoc.com/view/3fa832fab71913d31173b24db159412f/3fa832fab71913d31173b24db159412f1.gif)
![課件-cookie與主要內(nèi)容_第2頁](http://file4.renrendoc.com/view/3fa832fab71913d31173b24db159412f/3fa832fab71913d31173b24db159412f2.gif)
![課件-cookie與主要內(nèi)容_第3頁](http://file4.renrendoc.com/view/3fa832fab71913d31173b24db159412f/3fa832fab71913d31173b24db159412f3.gif)
![課件-cookie與主要內(nèi)容_第4頁](http://file4.renrendoc.com/view/3fa832fab71913d31173b24db159412f/3fa832fab71913d31173b24db159412f4.gif)
![課件-cookie與主要內(nèi)容_第5頁](http://file4.renrendoc.com/view/3fa832fab71913d31173b24db159412f/3fa832fab71913d31173b24db159412f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
主要內(nèi)容:1.理解會話與會話狀態(tài)的管理2.
技術(shù)3.session技術(shù)4.
應(yīng)用
與session技術(shù)提出問題HTTP協(xié)議是一種無狀態(tài)的協(xié)議,WEB服務(wù)器本身不能識別出哪些請求是同一個瀏覽器發(fā)出的,瀏覽器的每一次請求都是完全孤立的即使HTTP1.1
支持持續(xù)連接,但當(dāng)用戶有一段時間沒有提交請求,連接也會關(guān)閉。網(wǎng)上商店的購物車功能如何實現(xiàn)?:加入購物車的商品在下次再查看時還在瀏覽記錄功能如何實現(xiàn)?:
你查看過的
都顯示在瀏覽記錄列表中作為web
服務(wù)器,必須能夠采用一種機(jī)制來唯一地標(biāo)識一個用戶,同時記錄該用戶的狀態(tài)提出問題HTTP協(xié)議是一種無狀態(tài)的協(xié)議,WEB服務(wù)器本身不能識別出哪些請求是同一個瀏覽器發(fā)出的,瀏覽器的每一次請求都是完全孤立的即使HTTP1.1
支持持續(xù)連接,但當(dāng)用戶有一段時間沒有提交請求,連接也會關(guān)閉。網(wǎng)上商店的購物車功能如何實現(xiàn)?:加入購物車的商品在下次再查看時還在瀏覽記錄功能如何實現(xiàn)?:
你查看過的
都顯示在瀏覽記錄列表中作為web
服務(wù)器,必須能夠采用一種機(jī)制來唯一地標(biāo)識一個用戶,同時記錄該用戶的狀態(tài)會話和會話狀態(tài)WEB應(yīng)用中的會話是指一個客戶端瀏覽器與WEB服務(wù)器之間連續(xù)發(fā)生的一系列請求和響應(yīng)過程。WEB應(yīng)用的會話狀態(tài)是指WEB服務(wù)器與瀏覽器在會話過
產(chǎn)生的狀態(tài)信息,借助會話狀態(tài),WEB服務(wù)器能夠把屬于同一會話中的一系列的請求和響應(yīng)過程關(guān)聯(lián)起來。session如何實現(xiàn)有狀態(tài)的會話WEB服務(wù)器端程序要能從大量的請求消息中區(qū)分出哪些請求消息屬于同一個會話,即能識別出來自同一個瀏覽器的
請求,這需要瀏覽器對其發(fā)出的每個請求消息都進(jìn)行標(biāo)識:屬于同一個會話中的請求消息都附帶同樣的標(biāo)識號,而屬于不同會話的請求消息總是附帶不同的標(biāo)識號,這個標(biāo)識號就稱之為會話ID(SessionID)。在Servlet
規(guī)范中,常用以下兩種機(jī)制完成會話(瀏覽器端的緩存技術(shù))Session(服務(wù)器端和瀏覽器端的緩存技術(shù))的應(yīng)用案例:最近瀏覽記錄session的應(yīng)用案例:購物車session的應(yīng)用案例:用戶的自動登陸機(jī)制??機(jī)制采用的是在客戶端保持HTTP
狀態(tài)信息的方案是在瀏覽器
WEB服務(wù)器的某個資源時,由WEB服務(wù)器在HTTP響應(yīng)消息頭中附帶傳送給瀏覽器的一個小文本文件。該WEB服務(wù)器時,一旦WEB瀏覽器保存了某個都會在HTTP請求頭中將這個,那么它在以后每次回傳給WEB服務(wù)器。底層的實現(xiàn)原理:
WEB服務(wù)器通過在HTTP響應(yīng)消息中增加Set-
響應(yīng)頭字段將請求頭字段將給瀏覽器,瀏覽器則通過在HTTP請求消息中增加回傳給WEB服務(wù)器。一個 只能標(biāo)識一種信息,它至少含有一個標(biāo)識該信息的名稱(NAME)和設(shè)置值(VALUE)。一個WEB站點可以給一個WEB瀏覽器發(fā)送多個 ,一個WEB瀏覽器也。,每個站點最多存放20個,每個可以 多個WEB站點提供的瀏覽器一般只允許存放300個的大小限制為4KB。的傳送過程示意圖不存在①第一次Server1的④寫入Server1的③第一次響應(yīng)Set- 2:
name=value②第一次請求WEBServer1WEBServer2瀏覽器Server1的Server2的區(qū)⑤后續(xù) 存在Server1的⑥后續(xù)請求:
name=value類信息,它Servlet
API中提供了一個javax.servlet.http.
類來封裝包含有生成 信息和提取 信息的各個屬性的方法。?(String
name,String
value)類的方法:構(gòu)造方法:publicgetName方法setValue與getValue方法setMaxAgesetPathHttpServletResponse接口中定義了一個add
方法,它用于在發(fā)送給瀏覽器的HTTP響應(yīng)消息中增加一個Set-
響應(yīng)頭字段。HttpServletRequest接口中定義了一個get
s方法,它用于從HTTP請求消息的 請求頭字段中 所有的 項。的回送1.創(chuàng)建
對象2.設(shè)置最大時效3.將 放入到HTTP響應(yīng)報頭如果創(chuàng)建了一個
,并將他發(fā)送到瀏覽器,默認(rèn)情況下它是一個會話級別的
;
在瀏覽器的內(nèi)存中,用戶退出瀏覽器之后被刪除。若希望瀏覽器將該
在磁盤上,則需要使用maxAge,并給出一個以秒為單位的時間。將最大時效設(shè)為0則是命令瀏覽器刪除該
。發(fā)送
需要使用HttpServletResponse的add
方法,將到一個
Set-
HTTP響應(yīng)報頭中。由于這個方法并不修改任何之前指定的Set-
報頭,而是創(chuàng)建新的報頭,因此將這個方法稱為是add
,而非set
。的1.調(diào)用request.gets()要獲取瀏覽器發(fā)送來的,需要調(diào)用HttpServletRequest的get
s方法,這個調(diào)用返回
對象的數(shù)組,對應(yīng)由HTTP請求中
報頭輸入的值。2.對數(shù)組進(jìn)行循環(huán),調(diào)用每個的getName方法,直到找到感的為止會話
和持久的區(qū)別如果不設(shè)置過期時間,則表示這個生命周期為瀏覽器會話期間,只要關(guān)閉瀏覽器窗口,就 了。這種生命期為瀏覽器會話期的 被稱為會話。會話一般不保存在硬盤上而是保存在內(nèi)存里。?如果設(shè)置了過期時間,瀏覽器就會把保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些依然有效直到超過設(shè)定的過期時間。在硬盤上的可以在不同的瀏覽器進(jìn)程間共享,比如兩個IE窗口。而對于保存在內(nèi)存的,不同的瀏覽器有不同的處理方式。之項目實戰(zhàn)(6)功能需求:顯示
瀏覽記錄1).
顯示 的瀏覽記錄(最多顯示4條,
最后瀏覽的 面)2).可以清空瀏覽記錄session在不同環(huán)境下的不同含義session,中文經(jīng)常翻譯為會話,其本來的含義是指有始有終的一系列動作/消息,對瀏覽來說是指:從打開瀏覽發(fā)送請求開始,到關(guān)閉瀏覽器窗口為止。session在Web開發(fā)環(huán)境下的語義又有了新的擴(kuò)展,它的含義是指一類用來在客戶端與服務(wù)器端之間保持狀態(tài)的解決方案。Session有時候也用來指這種解決方案的 結(jié)構(gòu),
也就是HttpSession接口對象Session機(jī)制session機(jī)制采用的是在服務(wù)器端保持
HTTP
狀態(tài)信息的方案。服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。當(dāng)程序需要為某個客戶端的請求創(chuàng)建一個session時,服務(wù)器首先檢查這
個客戶端的請求里是否包含了一個session標(biāo)識(即sessionId),如果已經(jīng)包
含一個sessionId則說明以前已經(jīng)為此客戶創(chuàng)建過session,服務(wù)器就按照
session
id把這個session檢索出來使用(如果檢索不到,可能會新建一個,這種情況可能出現(xiàn)在服務(wù)端已經(jīng)刪除了該用戶對應(yīng)的session對象,但用
戶人為地在請求的URL后面附加上一個JSESSION的參數(shù))。如果客戶請求不包含sessionId,
則為此客戶創(chuàng)建一個session
并且生成一個與此
session相關(guān)聯(lián)的sessionId,這個session
id將在本次響應(yīng)中返回給客戶
端保存。JESSESIONID=eriereidfd3243Session的交互過程不存①當(dāng)前會話第一次在JSESSIONID的④寫入Server1的③第一次響應(yīng)Set-
2:JSESSIONID=
x②第一次請求WEBServer1瀏覽器Server1的區(qū)⑤后續(xù)存在Server1的⑥后續(xù)請求:
JSESSIONID=
x獲取session時,會創(chuàng)建session對象(sessionid=
x)獲取session時不會新建,而是根據(jù)JSESSIONID的值
x找到對應(yīng)的session對象HttpSession接口中的方法getId方法getCreationTime方法getLastAccessedTime方法setMaxInactiveInterval方法getMaxInactiveInterval方法isNew方法*如果客戶端請求消息中返回了一個與Servlet程序當(dāng)前獲得的HttpSession對象的會話標(biāo)識號相同的會話標(biāo)識號,則認(rèn)為這個HttpSession對象不是新建的。invalidate方法getServletContext方法setAttribute方法getAttribute方法removeAttribute方法getAttributeNames方法Request.getSession();Session的創(chuàng)建與刪除一個常見的錯誤是以為session在有客戶端 時就被創(chuàng)建,然而事實是直到某server端程序(如Servlet)調(diào)用HttpServletRequest.getSession(true)
或者HttpServletRequest.getSession()這樣的語句時才會被創(chuàng)建。session在下列情況下被刪除:A.程序調(diào)用HttpSession.invalidate()B.距離上一次收到客戶端發(fā)送的session
id時間間隔超過了session的最大有效時間C.服務(wù)器進(jìn)程被停止注意:關(guān)閉瀏覽器只會使
在客戶端瀏覽器內(nèi)存中的session失效,不會使服務(wù)器端的session對象失效。兩個瀏覽器窗口 應(yīng)用程序會使用同一個session通常session
是不能跨窗口使用的(IE
8
版本以前),當(dāng)你新開了一個瀏覽器窗口進(jìn)入相同頁面時,系統(tǒng)會賦予你一個新的sessionid,這樣信息共享的目的就達(dá)不到了。此時可以先把session
id保存在persistent
中(通過設(shè)置
的最大有效時間),然后在新窗口中讀出來,就可以得到上一個窗口的sessionid了,這樣通過session和persistent
的結(jié)合就可以實現(xiàn)了跨窗口的會話
。保存session
id的幾種方式保存session
id的方式可以采用
,這樣在交互過瀏覽器可以自動的按照規(guī)則把這個標(biāo)識發(fā)送給服務(wù)器。由于可以
為的禁用,必須有其它的機(jī)制以便在
被禁用時仍然能夠把sessionid傳遞回服務(wù)器,經(jīng)常采用的一種技術(shù)叫做URL重寫,就是把sessionid附加在URL路徑的后面,附加的方式也有兩種,一種是作為URL路徑的附加信息,另一種是作為查詢字符串附加在URL后面。網(wǎng)絡(luò)在整個交互過始終保持狀態(tài),就必須在每個客戶端可能請求的路徑后面都包含這個session
id。Sessionsession通過SessionID來區(qū)分不同的客戶,session是以或URL重寫為基礎(chǔ)的,默認(rèn)使用
來實現(xiàn),系統(tǒng)會創(chuàng)造一個名為JSESSIONID的輸出
,這稱之為session
,以區(qū)別persistent s(也就是
通常所說的),session
是于瀏覽器內(nèi)存中的,并不是寫到硬盤上的,通??床坏絁SESSIONID,但是當(dāng)把瀏覽器的后,web服務(wù)器會采用URL重寫的方式傳遞Sessionid,這時地址欄看到session
針對某一次會話而言,會話結(jié)束session也就隨著 了,而persistent
只是存在于客戶端硬盤上的一段文本。關(guān)閉瀏覽器,只會是瀏覽器端內(nèi)存里的session
,但不會使保存在服務(wù)器端的session對象
,同樣也不會使已經(jīng)保存到硬盤上的持久化
。Session的超時管理WEB服務(wù)器無法判斷當(dāng)前的客戶端瀏覽器是否還會繼續(xù),也無法檢測客戶端瀏覽器是否關(guān)閉,所以,即使客戶已經(jīng)離開或關(guān)閉了瀏覽器,WEB服務(wù)器還要保留與之對應(yīng)的HttpSession對象。隨著時間的推移而不斷增加新的客戶端,WEB服務(wù)器內(nèi)存中將會因此積累起大量的不再被使用的HttpSession對象,并將最終導(dǎo)致服務(wù)器內(nèi)存耗盡。WEB服務(wù)器采用“超時限制”的辦法來判斷客戶端是否還在繼續(xù) ,如果某個客戶端在一定的時間之內(nèi)沒有發(fā)出后續(xù)請求,WEB服務(wù)器則認(rèn)為客戶端已經(jīng)停止了活動,結(jié)束與該客戶端的會話并將與之對應(yīng)的HttpSession對象變成 。如果客戶端瀏覽器超時后再次發(fā)出
請求,WEB服務(wù)器則認(rèn)為這是一個新的會話的開始,將為之創(chuàng)建新的HttpSession對象和分配新的會話標(biāo)識號。會話的超時間隔可以在web.xml文件中設(shè)置,其默認(rèn)值由Servlet容器定義。<session-config><session-timeout>30</session-timeout></session-config>利用URL重寫實現(xiàn)SessionServlet規(guī)范中引入了一種補充的會話管理機(jī)制,它允許不支持 的瀏覽器也可以與WEB服務(wù)器保持連續(xù)的會話。這種補充機(jī)制要求在響應(yīng)消息的實體內(nèi)容中必須包含下一次請求的超 ,并將會話標(biāo)識號作為超
的URL地址的一個特殊參數(shù)。將會話標(biāo)識號以參數(shù)形式附加在超
的URL地址后面的技術(shù)稱為URL重寫。如果在瀏覽器不支持 或者關(guān)閉了 功能的情況下,WEB服務(wù)器還要能夠與瀏覽器實現(xiàn)有狀態(tài)的會話,就必須對所有可能被客戶端 的請求路徑(包括超
、form表單的action屬性設(shè)置和重定向的URL)進(jìn)行URL重寫。HttpServletResponse接口中定義了兩個用于完成URL重寫方法:encodeURL方法encodeRedirectURL方法HttpSession
的生命周期什么時候創(chuàng)建
HttpSession
對象是否瀏覽器 服務(wù)端的任何一個
JSP
或
Servlet,服務(wù)器都會立即創(chuàng)建一個
HttpSession
對象呢?不一定。若當(dāng)前的
JSP(或
Servlet)
是客戶端 的當(dāng)前
WEB
應(yīng)用的第一個資源,且
JSP
的
page
指定的session
屬性值為
false,
則服務(wù)器就不會為
JSP
創(chuàng)建一個
HttpSession對象;若當(dāng)前
JSP
不是客戶端 的當(dāng)前
WEB
應(yīng)用的第一個資源,且其他頁面已經(jīng)創(chuàng)建一個
HttpSession
對象,則當(dāng)前
JSP
頁面會返回一個會話的
HttpSession
對象,而不會創(chuàng)建一個新的
HttpSession‘
對象session=“false“到底表示什么意思?當(dāng)前JSP
頁面禁用session
隱含變量!但可以使用其他的顯式的
HttpSession
對象對于
Serlvet
而言:若
Serlvet
是客戶端
的第一個
WEB
應(yīng)用的資源,則只有調(diào)用了
request.getSession()或request.getSession(true)才會創(chuàng)建
HttpSession
對象什么時候銷毀
HttpSession
對象:JSESSIOINID=Sessionrequest.getSession()id
=
request.get
(“JSESSIOINID”)session
=
sessionMap.get(id);if(session==null)
{session
=
new
HttpSessionImpl(newId)c
=
new
(“JSESSIONID,
newId);response.add
(c);}return
sessionid1=session1id2=session2Session的結(jié)構(gòu)id,
Map<String,Object>attributes表單的重復(fù)提交?在沒有刷新表單頁面的情況下多次提交了請求1.快速點擊提交按鈕(服務(wù)器處理慢)2.請求處理完成后(轉(zhuǎn)發(fā)),再次點擊瀏覽器的”刷新”按鈕3.點擊瀏覽器的回退按鈕,不刷新表單頁面,再次點擊提交按鈕問題:1.給服務(wù)器添加了不必要的壓力2.有可能出現(xiàn)錯誤操作解決方法一:JS
客戶端避免表單重復(fù)提交不足:只能解決第一種情況的問題解決方法二:使用請求的重定向不足:只能解決第二種情況的問題解決方法三:使用Session現(xiàn)實事例:
一位乘客在
火車站買了一張去
的火車票(直接刷的那種),他刷票進(jìn)站坐火車去了
,
回來后過了幾天,
他又需要去這次他不想再買票,
直接拿上次的票去進(jìn)站口刷,
檢票機(jī)提示“此火車票已使用過了”,
不能能進(jìn)站.牛人A火車票務(wù)系統(tǒng)在窗口請求買張火車票生成一個隨機(jī)唯一的id,作為票號,并保存(db)印一新的票,票上有id(123)及相關(guān)信息,給乘客得到一張火車票火車票id=123拿著火車票去刷票進(jìn)站在系統(tǒng)中看是否存在此id的記錄?有,刪除保存的id記錄,并通過,沒有,此票已使用過了,不能通過下次再拿著上次的票去刷票進(jìn)站利用Session防止表單重復(fù)提交包含有FORM表單的頁面必須通過一個服務(wù)器程序動態(tài)產(chǎn)生,服務(wù)器程序為每次產(chǎn)生的頁面中的FORM表單都分配一個唯一的隨機(jī)標(biāo)識號,并在FORM表單的一個隱藏字段中設(shè)置這個標(biāo)識號,同時在當(dāng)前用戶的Session域中保存這個標(biāo)識號。當(dāng)用戶提交FORM表單時,負(fù)責(zé)接收這一請求的服務(wù)器程序比較FORM表單隱藏字段中的標(biāo)識號與 在當(dāng)前用戶的Session域中的標(biāo)識號是否相同,如果的標(biāo)識號。相同則處理表單數(shù)據(jù),處理完后清除當(dāng)前用戶的Session域中在下列情況下,服務(wù)器
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無錫江蘇無錫市惠山區(qū)人民法院招聘編外人員3人筆試歷年參考題庫附帶答案詳解
- 2025至2031年中國鋁制滑輪行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國蜂膠粉行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國移動通訊運維分析集中管理平臺行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國巧克力涂層糖行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國多功能聯(lián)合訓(xùn)練器行業(yè)投資前景及策略咨詢研究報告
- 2025年發(fā)泡專用酚醛樹脂項目可行性研究報告
- 2025至2031年中國2U電子節(jié)能燈行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年高效去污粉項目投資價值分析報告
- 2025至2030年中國錐密封焊接式管接頭數(shù)據(jù)監(jiān)測研究報告
- GB/T 16475-1996變形鋁及鋁合金狀態(tài)代號
- GB 4706.20-2004家用和類似用途電器的安全滾筒式干衣機(jī)的特殊要求
- 無紙化會議系統(tǒng)解決方案
- 佛教空性與緣起課件
- 上海鐵路局勞動安全“八防”考試題庫(含答案)
- 《愿望的實現(xiàn)》教學(xué)設(shè)計
- 效率提升和品質(zhì)改善方案
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 義務(wù)教育學(xué)科作業(yè)設(shè)計與管理指南
- 《汽車發(fā)展史》PPT課件(PPT 75頁)
- 常暗之廂(7規(guī)則-簡體修正)
評論
0/150
提交評論