版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第九章使用會話追蹤
2011年5月30日
本節(jié)課的內(nèi)容:
⑥什么是客戶會話
⑥會話的工作機制
⑥維護(hù)會話的幾種方式
⑥跟蹤客戶會話
?,使用H11pSession對象維護(hù)會話信息
⑥監(jiān)視會話對象
2011年5月30日2
工、什么是會話
典型的在線商店的情況:
用戶剛剛在一個頁面中挑選到一種商品,添加到購物車
中,在下一個商品頁面中又挑選到一種添加到購物車中。
注意到這兩次選擇是在不同的HTTP連接中發(fā)生的。而用
戶希望兩次挑選的商品在同一個購物車中一起交付,而不是
每選一件商品都要交付一次。這就需要一種機制來唯一的標(biāo)
識用戶,以便跟蹤客戶在站點中的行為。
會話:
這種在多次HTTP連接間維護(hù)用戶與同一用戶發(fā)出的不同
請求之間關(guān)聯(lián)的情況稱為維護(hù)一個會話(session)。
2011年5月30日3
2、會話的特征
合會話能夠把用戶與同一用戶發(fā)出的不同請求之間關(guān)聯(lián)
起來。不同用戶的會話應(yīng)當(dāng)是相互獨立的。
合會話一旦建立就應(yīng)當(dāng)一直存在,直到用戶空閑時間超
過了某一個時間界限,容器才應(yīng)當(dāng)釋放該會話資源。
⑥在會話的存活期間,用戶可能給服務(wù)器發(fā)送了很多請
求,該用戶的這些請求信息都可以存儲在會話中。
2011年5月30日4
3、會話的工作機制
網(wǎng)上購物商店的購物車
商店當(dāng)用戶選擇“YES”確認(rèn)購買時,服務(wù)
的
、器會將會話對象中的商品信息保存到
購
用戶輸入個人信用信息登物數(shù)據(jù)庫中,并聯(lián)系網(wǎng)上銀行和郵局向
錄到網(wǎng)上商店用戶發(fā)貨。
用戶瀏覽產(chǎn)品頁,察看商品
介紹,并點產(chǎn)“力口人”珀就在服務(wù)器,該商品的相關(guān)信息
商品信息在一次HTI保存在用戶的會話對象中
傳遞到服務(wù)器
f7<issword:
心h版川程序
q當(dāng)用戶離開網(wǎng)上商店前,被
詢問是否購買。
2011年5月30日5
⑥在上述的網(wǎng)上商店中,用戶的會話信息保存在服務(wù)器端,用
戶與服務(wù)器之間必須提供一種機制,標(biāo)識某一用戶與他在服務(wù)
器端用戶狀態(tài)之間的對應(yīng)關(guān)系。這種機制必須保證:
■允許用戶在不同頁面(如:S一工vl一t)間瀏覽而不會丟失
“購物車”
-必須避免不同用戶的“購物車”混淆。用戶不會允許自
己為別的用戶付款。
今不幸的是通常情況下W一b服務(wù)器不會自動跟蹤用戶操作軌跡。
捕獲并存儲用戶軌跡是W一b應(yīng)用開發(fā)人員的工作。
2011年5月30日6
4、維護(hù)會話的方式…?URL重寫
>客戶第一次訪問網(wǎng)站時,將會話信息添加到由服務(wù)器發(fā)出
的每一個響應(yīng)的URL中。
爹當(dāng)用戶再次訪問網(wǎng)站時,URL中會把這個會話信息作為用
戶請求參數(shù)返回服務(wù)器端,服務(wù)器根據(jù)返回的會話信息來標(biāo)
識該客戶,維護(hù)整個會話的信息持續(xù)性。
卷常見的URL重寫格式
為了保持URL的簡潔,通常這個嵌在URL中的會話信息
是一個由服務(wù)器器成的代表客戶的唯一性的工D號,在URL的
表現(xiàn)形式上,它通常是作為URL查詢參數(shù)的形式出現(xiàn)的,如:
http://.../ch09/huihua.jsp?sessionid=678
2011年5月30日7
#Session.jsp
#Tom.jsp
#■Jerry.jsp
2011年5月30日8
今URL重寫技術(shù)的優(yōu)點:
■用戶是匿名的;
-在Web服務(wù)器實現(xiàn)上得到普遍的支持;
卷URL重寫技術(shù)的缺點:
■由于會話信息作為查詢參數(shù)在URL上是可見的,因
此會話存在一定的安全隱患;
■需要對所有動態(tài)生成的URL進(jìn)行重寫,代碼比較繁
瑣;
■只能用于動態(tài)產(chǎn)生的文檔如Servlet和JSP頁面,而
不能用于HTML文檔;
■重寫的URL不能長期有效
2011年5月30日9
5、隱藏窗體技術(shù)
⑥隱藏窗體技術(shù)原理
HTML表單允許把一些字段信息隱藏起來,而在瀏覽器上不
被顯示出來。例如:
<INPUTTYPE="H1DDEN"Name's一ssion"Value
⑥使用隱藏窗體技術(shù)實現(xiàn)會話管理
這種方式的工作機制為:在用戶第一次請求時,服務(wù)器在
為客戶準(zhǔn)備的頁面上添加一個或多個隱藏表單,把一些要隱藏的
信息如標(biāo)識該客戶的工D號存儲在那里。當(dāng)客戶提交該表單時,
這些信息會作為查詢參數(shù)返回服務(wù)器,服務(wù)器可以利坦、
HttpS一rvl一tR一qu一st對象的g一'tParam一t一r()方法讀取出來c
這樣就達(dá)到了在服務(wù)器端維護(hù)會話信息持續(xù)的作用。
2011年5月30日10
⑥可以這樣認(rèn)為,同重寫URL技術(shù)相比,
隱藏窗體技術(shù)在表單參數(shù)中傳遞會話信息,
而重寫URL技術(shù)是在GET參數(shù)中傳遞會話
信息。除了這點,二者并無根本區(qū)別。
2011年5月30日11
卷上面我們分別說明了如何使用URL重寫、cooki一和
隱藏表單這三種方式來跟蹤用戶會話。不管采用何種方
式,都應(yīng)實現(xiàn)以下步驟:
1、服務(wù)器必須為每個會話產(chǎn)生一個唯一的工D號
2、在服務(wù)器和客戶瀏覽器之間傳遞這個工D號以維持會
話
3、服務(wù)器端根據(jù)工D號維護(hù)相關(guān)客戶的會話信息
2011年5月30日12
6、使用內(nèi)建的Session對象
#'Servlet2.3規(guī)范定義了^^HttpSession^
口,允許S一rvl一t容器針對每一個用戶建立一個
HTTP會話(即HttpS一ssion對象),每個HTTP會
話將會自動派減予一個唯一的會話編號(session
ID),而無需程序員編程實現(xiàn)。
*HttpS一ssion對象提供了和S一rvl一tCont一xt對
象相似的一組會話屬性的方法,這樣就可以很容易
地在服務(wù)器端存放用戶會話狀態(tài)。
2011年5月30日13
2011年5月30日14
會話與請求的關(guān)系
會話和請求之間的關(guān)系
會話維護(hù)的就是同一用戶的一組請求序列之間的關(guān)聯(lián)性。
mJI.、士-4^-fr-t人、-r.>口?、,AlY在一定A的J關(guān)系。換言之,
這些請求屬于一個會話,因為它們是同一個用戶發(fā)茬金港號哈
往同一個服務(wù)器應(yīng)用程序(HeUoworld)的,即使冷浦沙/:義叱白田
它們是發(fā)往不同的Servlet的。當(dāng)用戶在Helloworld9判斷該請求所屬的
下不同的Servlet間瀏覽時,服務(wù)器可以用會話對象,
跟蹤與用戶有關(guān)的狀態(tài)。r
http://www.MyW/HelloworLServlet
Id/Servlet2
這些請求屬于另一個會話,代表不同的用戶。
hI/Servlet3
這時請求可以與上面的請求同時發(fā)生而不會被
Servlet混淆。Servlet
/HeUoworld
Web應(yīng)用
http://www.MyW/Helloworld7Servlet2'
http://www.MyW/Helloworld/Servlet3
http://www.MyW/HelloworlA/Servletl
http://www.MyW/HelloworldAServlet4
2011年5月30日客戶端215
會話與請求的關(guān)系
獲取與請求關(guān)聯(lián)的會話對象
Ht■tpS一rvl一■tR一qu一st對象提供了g一tS一ssion方法,
通過這個方法,S一rvl一t就可以獲得與當(dāng)前請?zhí)╆P(guān)聯(lián)的會話對象的
引用。該方法為重載的方法,有兩個版本:
■publicHttpSessiongetSession();
案故與當(dāng)朝德求相去聯(lián)的含話,如果當(dāng)前請求還沒有一個相關(guān)聯(lián)
的會話,就創(chuàng)建一個并返回。
■publicHttpSessiongetSession(boolbCreate);
扳回與當(dāng)前請求相關(guān)聯(lián)的會t面寸象。如果沒有,且參數(shù)cr一at一的
值為tru一,貝。創(chuàng)建異地向一個新的會話。如果cr一at一的值為
false,且請求沒有相關(guān)聯(lián)的會話對象,將返回null。
可以利用這點判斷用戶最直為第一次邁問朝點二如果一、、、
g一tS一ssion(false)返回null,則表不用尸是第一次訪問站點,
如果返回非null則表示用戶不是第一次訪問站點。
2011年5月30日16
會話與請求的關(guān)系
獲取與請求關(guān)聯(lián)的會話對彳總是返回一個會話。但是我們不知道該會
、-r*DiVLr-kt,JL/_、--LD-1—
獲得會話ID并保存到字符串中。該串將類似于:
.32FE24119D28C30866C9EF4BEA40EF4E
判斷會話是新建的還是舊的。
if(s.isNew()){
out.printin("<p>新的會話工D="+sid+”</p>");
}
else{
out.printin("<p>歡迎回
來,<br>User:”+sid+”</p>");
}
2011年5月30日17
會話與請求的關(guān)系
會話工D
?s一rvl一t容器在創(chuàng)建每一個新的HTTP會話對象時,都會賦予一
個新的工D號。
⑥s一工vl一t容器保證它在W一b應(yīng)用范圍內(nèi)是唯一的。
⑥會話工D是實際包含在Http請求/響應(yīng)報文中的會話數(shù)據(jù)。
?這個工D號可以通過HttpS一ssion對象的g一t工d()獲得。例如:
HttpS一ssicms一ssion=raqu一st.g一tS一ssion();
Strings一ssion工d=s一ssion.g一t工d();
2011年5月30日18
會話與請求的關(guān)系
HttpS一ssion工作原理
1.當(dāng)用戶第一次發(fā)出請求時,S一工vl一t容器會建立一個HttpSassion
對象,并自動分配一■個W一b應(yīng)用范圍內(nèi)唯一的Sassion工D與之對應(yīng)。
這個Session工D也會隨著HTTP響應(yīng)內(nèi)容傳遞給用戶端瀏覽器。傳遞
的方式默認(rèn)情況下為cooki一,如果用戶端瀏覽器關(guān)閉了cookie功能,
就會使用URL重寫技術(shù)傳遞給用戶瀏覽器。
2.在用戶發(fā)出的后續(xù)請求中,請求信息中會包含S一工v一It容器傳遞給它
的SessionIDoS一rvl一t容器就會根據(jù)傳回的S一ssion工D將原來
建立的HttpS一ssion對象將請求與HttpS一工vl一tR一qu一st對象關(guān)聯(lián)
起來。所以,對于同一個用戶,調(diào)用g一tS一ssion()方法返[1]的將是
同一個HttpS一ssion對象。
2011年5月30日19
HttpSession對象的屬性
與ServletContexI^^象類似,我們可以給HttpSession
對象綁定屬性。
■S一工vl一tCont一xt對象的屬性的作用域是W一b應(yīng)用程序,
在這個應(yīng)用程序下的所有S一zl一t都共享這些屬性;
-綁定到HttpSessicm對象上的屬性只在一次會話周期內(nèi)有
效,且只有在屬于該會話的HttpR一quest對象中才可以訪
問這些屬性。換句話說,會話屬件就是特定用戶的專用數(shù)據(jù),
同時訪問W一b應(yīng)用的其他用戶無法訪問這些屬性。
2011年5月30日20
HttpSession接口方法一訪問屬性
HttpSession接口使用以下方法管理綁定到會話的屬
性
voids一tAttribut一(Stringnam一,Obj一ctvalue)
Objectg一tAttribut一(Stringnam一)
void工一mov一Att工ibute(Stringnam一)
?除伽的蹄頡叫楸槌u附麒的噬掘頻碘豳鼬蒯輜周一
的堪聊雎制朝哪?例僦葡皴崎儂蹴蜘說ne雇的可姒肥邰播
闔楂時族弼曲對袈蜃豳對魔殿甜象將由vlaue指定的對象置換掉。
HttpSessionsession=request.getSession(true);
幽鎮(zhèn)§幽)n(true);
Nttp^^km1s€S8senHrgqti^tti^tfte^hxii0iiMt)^);
session.setAttribute(naccountn,acct);
2011年5月38^sion.setAttribute(naccount6t,newInteger(lOO));21
HttpSession接口方法一訪問屬性
用false參數(shù)獲取現(xiàn)有會話對象。若沒有,則創(chuàng)建一
個新的會話,并將visitCount對象綁定到該會話名
publicvoiddoGet(HttpServletRe為“visitCount”的屬性。
HttpServletResponseresponse)注意綁定到會話屬性的對象類型只能為Object類型。
即可以是null、int、double、boolean以外的類型。
注意在本例中newInteger(visitCount))的用法
intvLsitCount;
HttpSessionsession=request.getSession(false);
if(session==null){若存在會話,則從該會話提取名為“visitCount”
vLsitCount=l;的綁定對象。更新其值后,重新綁定到會話。
session=request.getSessi
session.setAttribute("y,new
Integer(visitCount));
}else{
visitCount=((Integer)session.getAttribute("visitCount")).intVal
ue();
visitCount++;
session.setAttribute(HvisitCount",new
22
HttpSession接口方法一終止會話
如果要終止某個HTTP會話,可以使用下面的幾種方式
publicvoidinvalidat一()方法
publicvoids一tMax工nactiv一工nt一rval(intinterval)
方法
在web.xm1中配置會話的生存時間
般嗣逮因嗨徽也颯謝帥像㈱翔教I加峨璇的逾神飾6綁姥國性,
寮金函蒯n-gfl咖gakStaiSExesfitiiHt鼎1翁ut例期;素指定,單位為分鐘:
HttpSessionse^sion=request.getSession(true);
^猷惻0n(true);
T<sessiaii-tim£ouf>yO</session-timeouf>
sessionanvanaafeQ;
碣湍瓢跪纜躁金比,沿本W(wǎng)eb應(yīng)用程序的間隔超過了10分鐘,容器
初倒.賴含嫡鬼碰氤出劭底懶嫩赧1EI置的曬第璇坤食麻游
2011年5月3曲篦攜提責(zé)問閥陶超迤的弱會解§將肺擻會時之中。23
對于網(wǎng)上商店這樣的應(yīng)用,可能希望對“商店”中當(dāng)前
的客人總數(shù)進(jìn)行監(jiān)控。根據(jù)前面所學(xué)內(nèi)容,我們知道應(yīng)該利用會話
來實現(xiàn)該功能。
在本節(jié)中,我們將學(xué)習(xí)利用HttpS一ssionList一n一r偵
聽器,輕松實現(xiàn)一個計數(shù)器,以跟蹤并向用戶顯示本網(wǎng)站的在線人
數(shù)。
監(jiān)視會話對象
2011年5月30日24
鐐施陵慚對象
4加稻
會話偵聽器是用來監(jiān)聽會話事件的監(jiān)聽器類。同其他Web偵聽
監(jiān)器類似,會話偵聽器由用戶編寫并注冊到web應(yīng)用中。當(dāng)容器檢測
視到某個會話有事件發(fā)生時,容器將激活監(jiān)聽器對象并激發(fā)對應(yīng)的事
件方法。
會主要有兩類會話偵聽器:
話
對⑥會話生命周期偵聽器
象同S一rv一tCont一xtList一n一r類似,這類偵聽器主要負(fù)責(zé)會話生
命周期事件的監(jiān)聽,如會話的生成、結(jié)束、激活等。在S一rv工一t規(guī)
范中,可以通過實現(xiàn)接口HttpSessionListener和
HttpSessionActivationListener來實現(xiàn)偵聽。
參會話屬性偵聽器、…
同S一rv一tCont一xtAt?tribut一List一n一r類似,這類偵聽器負(fù)責(zé)
處理綁定到會話的屬性的更改事件,如綁定、刪除、修改等。這類
偵聽器應(yīng)實現(xiàn)HttpSessionAttributeListener或
HttpSessionBindingListener接口。
2011年5月30日25
、會話生命周期事件
4加稻
會話的生命周期是由S一rvl一t容器管理的。在會話生
監(jiān)
年周容官合有今于當(dāng)去器方現(xiàn)某個杳話的次態(tài)發(fā)生變溫時(如生成、鼠
視我們需要做的是實現(xiàn)監(jiān)弓化、激活、銷毀),容器會將一個SessionEvent對象
會作為參數(shù)調(diào)用注冊的監(jiān)聽器。
話
HttpSessionEvent
對生成會話HttpSessionListener
象
可以添加:替換、
刪除型話精華HttpSessionActivationEvent
鈍化會話)-----------------------------1HttpSessionActivationListener
HttpSessionActivationEvent
激活會話HttpSessionActvationListener
可以添力、替換、
.除"話屬)
HttpSessionEvent
r銷毀會話)
HttpSessionListener
2011年5月一、---------->
HttpSessionListener偵聽器
4
OS
監(jiān)
視對于本節(jié)要完成的任務(wù),我們利用會話的生命周期事件來實現(xiàn)當(dāng)前
會在線人數(shù)的統(tǒng)計工作。
話當(dāng)一個用戶登錄網(wǎng)站時,容器將創(chuàng)建一個會話,這時可以將在線人
對數(shù)計數(shù)器加1;當(dāng)田口超時、洋鐺時一裒瞿"為;玄仝在牛的一在線
當(dāng)容器生成一個新會話時會通知HttpSessionListener偵聽器
象人數(shù)計數(shù)器減
調(diào)用本方法。容器向該方法傳遞的參數(shù)是HttpSessionEvent
當(dāng)容器創(chuàng)建或
對當(dāng)某個會話超時或者調(diào)用了invalidate。方法都會引起會話的
偵聽器。Httj偵銷毀。在會話銷毀之前,容器會通知HttpSessionListener
在這兩個方法pi偵聽器并調(diào)用本方法。
同樣,容器向該方法傳遞的參數(shù)是HttpSessionEvent對象,
偵聽器可通過其getSessionO方法引用發(fā)生事件的會話對象。
publicvoids一一ssionEsee!
publicvoids一ssicmD一stroy一d(HttpS一ssimt
sc一)
2011年5月30日
HttpSessionListener偵聽器
4
OS
監(jiān)
視注意事項:
會
話1.當(dāng)實現(xiàn)HttpSessionListener偵聽器時,必須同附
對s一ssionCr一at一、s一ssionD一st工oy一d的實現(xiàn)。當(dāng)僅僅需要
象偵聽一個事件時,另一個事件方法可用空方法體,但必須實現(xiàn);
2.通過從參數(shù)得到的HttpS一ssionEv一nt引用,在
s一ssionCr一at一方法和s一ssionD一stroy一d方法內(nèi)可以獲得
發(fā)生事件的會話的引用。除此之外,HttpSessionEvent
參數(shù)并不提供其他信息;
3.與S一rvl一tCont一xtList一n一r類似,這兩個方法可能會遇到
多線程同步問題。
2011年5月30日28
publicclassOnlineCounterListenerimplementsServletContextListener,HttpSessionListener{
publicvoidcontext工nitialized(S一rvl一tCont一xtEv一ntsee)
(
S一工vl一tContext
cont一xt=sc一.g一tS一rvl一tConTaxT;
工nt一garcountc當(dāng)容器每次進(jìn)入一個新的會話時,從該會話檢索出所
context.s一tAt'屬的Web應(yīng)用上下文,然后將其"counter”屬性的值
}加1。注意"counter”屬性是一個整型的、在整個Web
入】.44nd應(yīng)用運行期間維護(hù)的量。
publicvoidcontextDestroi一、=-一一一一一一一一
S一rvl一tCont一xt
conLexL=t>ce.geLServle);
context.r一mev一一r”);
當(dāng)容器每次刪除一個會話時,說明有用戶正在離開當(dāng)
publicvoidsessionCreatec前Web應(yīng)用。從會話檢索出所屬Web應(yīng)用上下文,然
HttpSassions一ssion=s(后將其“counter”屬性的值減1,重新存入Web應(yīng)用上
下文。
S一rvl一tCont一xtcont一x-▼▼V<J/.LA/|J~|~/、p'11J,\JA411J''JJL_t
工nt一gar9S^rvletContext屬性,這樣就能保證計數(shù)器
counter=(Integer)context.對象能夠讓所有的用戶訪問。
count一r=n一wInteger(count一工.cntValu一()+1);
cont一xt.s一tAtt工ibut一("count一r”,counter);
publicvoidsessionDestroyed(HttpS一ssionEv一ntse){
HttpSassions一ssion=s一.g一tS一ssion();
S一工vl一tCont一xtcont一xt=sassion.g一tS一工vl一tCont一xt();
count一工=(工nt一ger)cont一xt.g一tAttribute("counter");
HttpSessionListener偵聽器
4om箱
°本例中的幾個問題說明:
監(jiān)i.四個方法的作用必須分清楚:、
contextInitial!zed負(fù)責(zé)在Web上下文中建立"counter”屬性并設(shè)置初值;
視sessionCreated負(fù)責(zé)在新會話出現(xiàn)時將“counter”屬性值增、加
sessionDestroyed負(fù)責(zé)在會話結(jié)束時將"counter”屬性值減少
會contextDestroyed負(fù)責(zé)在Web應(yīng)用結(jié)束前釋放上下文屬性所苫資源。
話
2.編寫好事件偵聽器后,還要注冊到Web.xml中才會生效。其中:
對〈session-config〉
<session-timeout>l</session-timeout>---
象會話失效時間長度
</session-config>
<listener><listener-class>
com.mycompany.servlet.OnlineCounterListener事件類的
全名
〈/listener-class〉</listener>
3.在Web應(yīng)用中的某個Servlet中,可以隨時查詢計數(shù)
context=this.getServletContext();
request.getSession(true);//若還未進(jìn)入會i舌貝(J倉U建—1^。
out.printin("<p>Online:n+context.getAttribute("counter")+
n</p>");
out.printin(</body></html>n);
2011年5月赳用《9$就$1。1111注01^「只能監(jiān)聽整個對象的生命周期,無法監(jiān)聽會話屬理M添加、
朋||K仝書才?4^萬1.U勺不用1支止匕d三自.才市由Hh■HnGaQQ-icn△十上rTHiihaT.iQhanar
二會話屬性偵聽器
4加稻
當(dāng)容器發(fā)現(xiàn)向某個會話的屬性發(fā)生變化時,將向
、、.nrtBv1r-nJ」.▼一.*.?
監(jiān)
問偵聽費是滿足以下條件的Java類:合對屬性的
視
添?實現(xiàn)HttpSessionAttributeListener或HttpSessionBindingListener接口
會,注冊到了Web.XML卜的<listener><listener-class>節(jié)中
在偵聽器中的事件方法
話取發(fā)生事件的會話和屬事件發(fā)生時,一個HttpSessionBindingEvent對
一般情況下,我們通過象作為消息參數(shù)發(fā)送到偵聽器。偵聽器可以:
對
器而不是HttpSessionBii通過該參數(shù)獲得會話、屬性名等信息。
象生成或被治;:巾
HttpSessionBindingEvent
添加屬性
HttpSessionBindingEvent
替換屬性)------------------------------■HttpSessionAttributeListener
一.“=>…\HttpSessionBindingEvent
刪除屬性1________________________I
2011年5月30E鈍化或隼毀會話
HttpSessionAttributeListener偵聽器
領(lǐng)
監(jiān)
HttpSessionAttributeListener4fe口共定義了三個方法:
普
話■publicvoid
attributeAdded(HttpSessionBindingEventse)
對
當(dāng)使用HttpSession對象的setAttribute()方法添力口——
象個新的會話屬性時,容器會調(diào)用偵聽器的這個方法。
■publicvoid
attributeRemoved(HttpSessionBindingEventse)
當(dāng)通過HttpS一ssion對象的removeAttribute()方法刪
除一個會話屬性時,容器會調(diào)用偵聽器的這個方法。
■publicvoid
2011年5月30日attributeReplaced(HttpSessionBindingEventse)
HnTTIIC11*4^:不___■1____/%F豐*.
HttpSessionAttributeListener偵聽器
4
OS
監(jiān)
視HttpSessionBindingEvent^象
會
話
對當(dāng)會話屬性發(fā)生變更時,通知_
象HttpS一ssionAttribut一List一n一工偵聽器的事件為
HttpS一ssionBindingEv一nt對象。
HttpS一ssionBindingEv一nt類繼承自HttpS一ssionEv一nt類,
除了繼承的g一tS一ssion()方法,
HttpS一ssionBindingEv一nt類還定義了兩個方法:
■StringgetName()
返回綁定到會話對象或解除綁定的屬性的名稱。
■ObjectgetValue()
返回添加、替換或要刪除的會話屬性。
2011年5月30日33
publicclassSessionAttributeHandlerimplementsHttpSessionAttributeListener{
publicvoidattributeAdded(HttpSessionBinclingEventse){
HttpSessionsession=se.getSession();
ServletContextcontext=session.getServletContext();
context.log("Anattributenamed"+se.getName()+“!!
+s一.g一tValu一()+“add一d");
}
當(dāng)向會話中綁定新屬性時,容器調(diào)用該方法。參數(shù)se
publicvoidattributeRemoved(1說明了發(fā)生事件的會話對象以及新添加的屬性。
HttpSessionsession=se.g(在本例中,我們從se獲取會話,然后獲取Web上下文
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 影樓策劃方案
- 愚人節(jié)主題方案(范文15篇)
- 青春砥礪心共筑美好夢
- 夏季安全教育家長會
- 手術(shù)室靜脈血栓的預(yù)防及護(hù)理
- 幼兒音樂活動方案(15篇)
- 家長會經(jīng)典講話稿(15篇)
- 初級會計實務(wù)-歷年初級會計職稱考試真題節(jié)選
- 智研咨詢-中國社區(qū)團(tuán)購行業(yè)市場調(diào)查、產(chǎn)業(yè)鏈全景、需求規(guī)模預(yù)測報告(2024版)
- 基于改進(jìn)模型參考自適應(yīng)的直線感應(yīng)電機模型預(yù)測推力控制研究
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語試題
- 七年級下冊英語單詞表(人教版)-418個
- 交警安全進(jìn)校園課件
- 潤滑油過濾培訓(xùn)
- 浙江省紹興市2023-2024學(xué)年高一上學(xué)期期末考試物理試題(含答案)
- 《住院患者身體約束的護(hù)理》團(tuán)體標(biāo)準(zhǔn)解讀課件
- 唐山市重點中學(xué)2024-2025學(xué)年全國高考大聯(lián)考信息卷:數(shù)學(xué)試題試卷(3)含解析
- 未成年上班知情協(xié)議書
- 2023-2024學(xué)年高中政治統(tǒng)編版選擇性必修二7-1 立足職場有法寶 課件(34張)
- 恩施州巴東縣核桃樹煤礦有限公司核桃樹煤礦礦產(chǎn)資源開發(fā)利用與生態(tài)復(fù)綠方案
- 部編版語文一年級下冊全冊大單元整體作業(yè)設(shè)計
評論
0/150
提交評論