Java根據sessionId獲取Session物件
阿新 • • 發佈:2019-01-09
1. 建立一個自己的SessionContext:
程式程式碼:
package cn.org.jshuwei.session.core; import javax.servlet.http.HttpSession; import java.util.HashMap; 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); } }
2.新建一個Session監聽
程式程式碼
package cn.org.jshuwei.session.core; import javax.servlet.http.HttpSessionListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; public class SessionListener implements HttpSessionListener { public static Map userMap = new HashMap(); private MySessionContext myc=MySessionContext.getInstance(); public void sessionCreated(HttpSessionEvent httpSessionEvent) { myc.AddSession(httpSessionEvent.getSession()); } public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { HttpSession session = httpSessionEvent.getSession(); myc.DelSession(session); } }
3.在web.xml中配置
程式程式碼
<listener>
<listener-class>cn.org.jshuwei.session.core.SessionListener</listener-class>
</listener>
4.使用
程式程式碼
MySessionContext myc= MySessionContext.getInstance();
HttpSession sess = myc.getSession(sessionId);