2024年4月28日发(作者:)

Session监控

Session简介

Session即会话,是浏览器和服务器状态的标识,实现Session监控可以让服务器

记录系统Session信息,并对连接到服务器的会话进行操作。

Session监控

Session监控的实现,使用SessionListener可以监听Session的创建,销毁及

Session中属性的变动。由于要监听所有Session,所以采用ServletContext来存储

Session列表。当Session产生时候将Session对象添加到SessionList,当Session

销毁时将Session对象从SessionList中移除。

SessionListener 类

public class SessionListener implements

HttpSessionListener,HttpSessionAttributeListener{}

SessionListener类中方法

public void sessionCreated(HttpSessionEvent httpSessionEvent) {

//处理Session创建,向SessionList中添加Session

}

public void sessionDestroyed(HttpSessionEvent httpSessionEvent)

{

//处理Session销毁,将Session从SessionList中移除

}

public void attributeAdded(HttpSessionBindingEvent

httpsessionbindingevent) {

//监听Session中属性的添加

}

public void attributeRemoved(HttpSessionBindingEvent

httpsessionbindingevent) {

//监听Session中属性的移除

}

public void attributeReplaced(HttpSessionBindingEvent

httpsessionbindingevent) {

//监听Session中属性的改变

}

配置SessionListener

在中添加如下信息:

nListener

120

根据sessionid销毁Session

算法描述:

遍历SessionList找到id对应的Session对象,调用Session对象的

invalidate()方法销毁Session。

算法实现:

public String destroySession(@RequestParam("id") String

id,HttpServletRequest request) {

HttpSession session = sion();

ServletContext application = vletContext();

List sessionList = (List)

ribute("sessionList");

HttpSession cur_session = null;

for (HttpSession httpSession : sessionList) {

if(().equals(id)) {

cur_session = httpSession;

}

}

cur_date();

return "success";

}

根据登录名踢出用户

算法描述:

遍历SessionList找到与参数中登录名相同的Session,调用该Session的

removeAttribute()方法将该Session中的用户信息移除。

算法实现:

public String kickOutUser(@RequestParam("loginName") String

loginName,HttpServletRequest request) {

HttpSession session = sion();

ServletContext application = vletContext();

List sessionList = (List)

ribute("sessionList");

for (HttpSession httpSession : sessionList) {

User currentUser = (User)

ribute(_USER);

if(currentUser!=null

&&inName().equals(loginName)) {

Attribute(_USER);

}

}

return "success";

}