第九章使用會話追蹤_第1頁
第九章使用會話追蹤_第2頁
第九章使用會話追蹤_第3頁
第九章使用會話追蹤_第4頁
第九章使用會話追蹤_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論