Scott Zone
似水流年,勤勉無價(jià)
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
posts - 27, comments - 14, trackbacks - 0
動(dòng)態(tài)WEB應(yīng)用中的用戶SESSION管理方案
要有這么一個(gè)監(jiān)聽器,當(dāng)加入session時(shí)就可以觸發(fā)一個(gè)加入session事件,在session過期時(shí)就可以觸發(fā)一個(gè)刪除事件,那么我們的把要處理的東西加入到這兩個(gè)事件中就可以做很多于SESSION相關(guān)連的事。如在線用戶的管理,單點(diǎn)登陸等等。
在J2EE中可以實(shí)現(xiàn)HttpSessionBindingListener接口,此接口有兩要實(shí)現(xiàn)的方法。
void valueBound(HttpSessionBindingEvent event) 當(dāng)實(shí)現(xiàn)此接口的監(jiān)聽類和session綁定時(shí)觸發(fā)此事件。
void valueUnbound(HttpSessionBindingEvent event) 當(dāng)session過期或?qū)崿F(xiàn)此接口的監(jiān)聽類卸裁時(shí)觸發(fā)此事件。
下面是一個(gè)示例解決方案:可以把登陸用戶的信息記錄在緩沖池中,當(dāng)SESSION過期時(shí),用戶信息自動(dòng)刪除。
一個(gè)用戶信息接口:
public
interface
LoginUserMessage
{}
一個(gè)用戶緩沖池:
public
class
LoginUserPool
{
private
Map map
=
new
HashMap();
private
static
LoginUserPool loginUserPool
=
new
LoginUserPool();
private
LoginUserPool()
{}
public
static
LoginUserPool getInstance()
{
return
loginUserPool;
}
public
void
addLoginUserMessage(String sessionId,LoginUserMessage loginUserMessage)
{
map.remove(sessionId);
map.put(sessionId,loginUserMessage);
}
public
LoginUserMessage removeLoginUserMessage(String sessionId)
{
return
(LoginUserMessage) map.remove(sessionId);
}
public
LoginUserMessage getLoginUserMessage(String sessionId)
{
return
(LoginUserMessage) map.get(sessionId);
}
public
Map getLoginUserMessages()
{
return
map;
}
public
boolean
isEmpty()
{
return
map.isEmpty();
}
}
一個(gè)HttpSessionBindingListener接口的監(jiān)聽類:
public
class
UserLoginListener
implements
HttpSessionBindingListener
{
private
final
Log logger
=
LogFactory.getLog(getClass());
private
String sessionId
=
null
;
private
LoginUserMessage loginUserMessage
=
null
;
private
LoginUserPool loginUserPool
=
LoginUserPool.getInstance();
public
LoginUserMessage getLoginUserMessage()
{
return
loginUserMessage;
}
public
void
setLoginUserMessage(LoginUserMessage loginUserMessage)
{
this
.loginUserMessage
=
loginUserMessage;
}
public
String getSessionId()
{
return
sessionId;
}
public
void
setSessionId(String sessionId)
{
this
.sessionId
=
sessionId;
}
/** */
/**
//* (non-Javadoc)
*
@see
javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent)
*/
public
void
valueBound(HttpSessionBindingEvent event)
{
//
TODO Auto-generated method stub
if
(
this
.getLoginUserMessage()
!=
null
)
{
loginUserPool.addLoginUserMessage(
this
.getSessionId(),
this
.getLoginUserMessage());
logger.info(
"
用戶信息加入緩存池成功
"
);
}
this
.setLoginUserMessage(
null
);
}
/** */
/**
//* (non-Javadoc)
*
@see
javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent)
*/
public
void
valueUnbound(HttpSessionBindingEvent event)
{
//
TODO Auto-generated method stub
if
(
!
loginUserPool.isEmpty())
{
loginUserPool.removeLoginUserMessage(sessionId);
logger.info(
"
用戶信息從緩存池中移除成功
"
);
}
}
}
這樣子的話,當(dāng)在應(yīng)用中把userLoginListener加入到session中時(shí),就會自動(dòng)把用戶信息加入到緩沖池中了。
如:
session.setAttribute("userLoginListener",userLoginListener);
(原創(chuàng),轉(zhuǎn)載請保留文章出處
http://m.tkk7.com/bnlovebn/archive/2007/07/04/128006.html
)
posted on 2007-07-12 17:11
Scott.Pan
閱讀(395)
評論(0)
編輯
收藏
所屬分類:
代碼收藏夾
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
insertAdjacentHTML方法示例
轉(zhuǎn)JS校驗(yàn)
封裝了Jakarta 文件上傳功能的一個(gè)類(轉(zhuǎn))
幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳
動(dòng)態(tài)WEB應(yīng)用中的用戶SESSION管理方案
JDBC之代碼復(fù)用(轉(zhuǎn))
目錄樹程序
Copyright ©2025 Scott.Pan Powered By:
博客園
模板提供:
滬江博客
<
2007年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
Database
IM例舉(1)
J2EE(2)
JBPM(1)
Liferay(7)
SSH(2)
Web開發(fā)
代碼收藏夾(7)
生活記事(6)
目錄服務(wù)(3)
隨筆檔案
2007年8月 (5)
2007年7月 (22)
搜索
最新評論
1.?re: Portlet學(xué)習(xí)分析筆記[未登錄]
來學(xué)習(xí)一下
--zz
2.?re: 幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳
最后一種不能用
--11
3.?re: insertAdjacentHTML方法示例[未登錄]
1
--1
4.?re: Portlet學(xué)習(xí)分析筆記
寫的很不錯(cuò)。學(xué)習(xí)了
--chailieyang
5.?re: insertAdjacentHTML方法示例
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--啊打發(fā)
閱讀排行榜
1.?insertAdjacentHTML方法示例(23446)
2.?經(jīng)典英語200句(4365)
3.?Portlet學(xué)習(xí)分析筆記(3621)
4.?SearchContainer的用法說明(2796)
5.?幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳(2772)
評論排行榜
1.?Portlet學(xué)習(xí)分析筆記(4)
2.?insertAdjacentHTML方法示例(2)
3.?幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳(1)
4.?經(jīng)典英語200句(1)
5.?Liferay項(xiàng)目中問題及解決方法列舉(1)
主站蜘蛛池模板:
亚洲第一极品精品无码久久
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
亚洲男人av香蕉爽爽爽爽
|
亚洲精品国产首次亮相
|
性做久久久久久免费观看
|
亚洲欧洲日产专区
|
一色屋成人免费精品网站
|
亚洲噜噜噜噜噜影院在线播放
|
亚洲成在人线aⅴ免费毛片
|
国产成人亚洲精品
|
午夜视频免费成人
|
国产亚洲精品2021自在线
|
亚洲精品97久久中文字幕无码
|
a毛片成人免费全部播放
|
亚洲精品无码永久中文字幕
|
久久久久国色av免费看
|
亚洲三级视频在线
|
妞干网在线免费观看
|
国产精品观看在线亚洲人成网
|
免费一级成人毛片
|
xxxxxx日本处大片免费看
|
欧洲亚洲国产清在高
|
国产成人精品免费视频大
|
亚洲第一成年网站视频
|
亚洲高清无码在线观看
|
一区二区三区福利视频免费观看
|
亚洲乱码日产精品BD在线观看
|
女人18毛片水真多免费播放
|
日韩在线视频线视频免费网站
|
久久综合九九亚洲一区
|
久久久久免费看黄A片APP
|
美女裸体无遮挡免费视频网站
|
亚洲精品无码鲁网中文电影
|
国产男女爽爽爽爽爽免费视频
|
边摸边吃奶边做爽免费视频网站
|
亚洲中文字幕无码一区
|
国产成人精品久久免费动漫
|
特色特黄a毛片高清免费观看
|
亚洲激情在线视频
|
日本人护士免费xxxx视频
|
国产一级淫片a免费播放口
|