首页 > 代码库 > Java通过sessionId获取Session

Java通过sessionId获取Session

Servlet2.1之后不支持SessionContext里面getSession(String id)方法。但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一个SessionContext。MySessionContext.java:public class MySessionContext {    private static HashMap mymap = new HashMap();    public static synchronized void AddSession(HttpSession session) {        if (session != null) {            mymap.put(session.getId(), session);        }    }    public static synchronized void DelSession(HttpSession session) {        if (session != null) {            mymap.remove(session.getId());        }    }    public static synchronized HttpSession getSession(String session_id) {        if (session_id == null)        return null;        return (HttpSession) mymap.get(session_id);    }}MySessionListener.java:public class MySessionListener implements HttpSessionListener {    public void sessionCreated(HttpSessionEvent httpSessionEvent) {    MySessionContext.AddSession(httpSessionEvent.getSession());    }    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {        HttpSession session = httpSessionEvent.getSession();        MySessionContext.DelSession(session);    }}web.xml添加一个监听器:<listener><listener-class>listener.MySessionListener</listener-class></listener>根据sessionId获取Session对象:String sessionId = request.getParameter("sessionId");HttpSession session = MySessionContext.getSession(sessionId);

 

Java通过sessionId获取Session