1.we.xml 添加:
<listener>
<listener-class>com.bjah.util.LoginSessionListener</listener-class>
</listener>
2.LoginSessionListener 类:
/*
* 创建日期 2009-12-10
*
*/
package com.bjah.util;
imp
imp
imp
imp
imp
imp
imp
imp
public class LoginSessionListener implements HttpSessionListener, HttpSessionAttributeListener {
public static void main(String[] args) {
}
public static Map userMap = new HashMap(); //创建了一个对象来保存session的
private MySessionContext myc=MySessionContext.getInstance(); //MySessionContext是实现session的读取和删除增加 单例模式
public void sessionCreated(HttpSessionEvent event)
{
myc.AddSession(event.getSession());
}
public void sessionDestroyed(HttpSessionEvent event)
{
HttpSession session = event.getSession();
myc.DelSession(session);
}
/* (非 Javadoc)
* @see javax.servlet.http.HttpSessionAttributeListener#attributeAdded(javax.servlet.http.HttpSessionBindingEvent)
*/
public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see javax.servlet.http.HttpSessionAttributeListener#attributeRemoved(javax.servlet.http.HttpSessionBindingEvent)
*/
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see javax.servlet.http.HttpSessionAttributeListener#attributeReplaced(javax.servlet.http.HttpSessionBindingEvent)
*/
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO 自动生成方法存根
}
}
3.创建一个单例的session管理类:MySessionContext
/*
* 创建日期 2009-12-10
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.bjah.util;
imp
imp
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class MySessionContext
{
private static MySessionContext instance;
private HashMap mymap;
private MySessionContext()
{
mymap = new HashMap();
}
public static MySessionContext getInstance()
{
if(instance==null)
{
instance = new MySessionContext();
}
return instance;
}
public synchronized void AddSession(HttpSession session)
{
if(session!=null)
{
mymap.put(session.getId(), session);
}
}
public synchronized void DelSession(HttpSession session)
{
if(session!=null)
{
mymap.remove(session.getId());
}
}
public synchronized HttpSession getSession(String session_id)
{
if(session_id==null)return null;
return (HttpSession)mymap.get(session_id);
}
}
4 调用单例类保存session
session.setAttribute("userID",userID);
session.setAttribute("orgID",orgID);
session.setAttribute("orgName",orgName);
String ssid =session.getId(); //获取session id
final MySessionContext myc=MySessionContext.getInstance();
myc.AddSession(session);
5. 获取根据id获取session
final MySessionContext myc=MySessionContext.getInstance();
HttpSession sessionEntity = myc.getSession(SessionID);
String orgId = sessionEntity .getAttribute("orgID").toString();