• 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);

  • 相关阅读:
    你不知道的JS
    Git学习攻略
    InteliJ Idea 编写项目常见的问题及解决方案
    上海租房攻略
    JS数组攻略
    Web开发必备的Chrome插件
    BFC和清除浮动
    Angular最新教程-第十一节 路由四 (嵌套路由)
    Angular最新教程-第十节 路由三(路由器钩子函数、路由守卫)
    Angular最新教程-第九节 路由二(路由策略、base标签、路由参数)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317866.html
Copyright © 2020-2023  润新知