1、第一步先写一个监听器类 package com.travelsky.asmall.web.util.wechat.sessionutil; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class SessionListener implements HttpSessionListener { private MySessionContext myc = MySessionContext.getInstance(); @Override public void sessionCreated(HttpSessionEvent httpSessionEvent) { HttpSession session = httpSessionEvent.getSession(); myc.addSession(session); } @Override public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { } }
2、在写一个自己的session工具类
package com.travelsky.asmall.web.util.wechat.sessionutil; import javax.servlet.http.HttpSession; import java.util.HashMap; public class MySessionContext { private static MySessionContext instance; private HashMap<String, HttpSession> sessionMap; private MySessionContext() { sessionMap = new HashMap<String,HttpSession>(); } public static MySessionContext getInstance() { if (instance == null) { instance = new MySessionContext(); } return instance; } public synchronized void addSession(HttpSession session) { if (session != null) { sessionMap.put(session.getId(), session); } } public synchronized void delSession(HttpSession session) { if (session != null) { sessionMap.remove(session.getId()); } } public synchronized HttpSession getSession(String sessionID) { if (sessionID == null) { return null; } return sessionMap.get(sessionID); } }
3、在web.xml中注册监听器
<listener> <listener-class>com.travelsky.asmall.web.util.wechat.sessionutil.SessionListener</listener-class> </listener>
4、MySessionContext mysession= new MySessionContext();
HttpSession session = mysession.getSession("sesssionId");
这样就可以获取session了,我当时碰到的问题是前后端分离跨域导致sessionid丢失,无法解决使用ga该方法。所有内容都是网上搜索别人自己改动写的,由于不知道dang当时引用的是那个人的,真的抱歉啊原创。