Java通过sessionId获取Session

转载 2013年05月10日 16:04:28

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

根据sessionid获取session的被Servlet2.1抛弃getsession方法的解决方案

最近一个项目中用到了getsession根据sessionid来获取session,但是怎么获取都为空,请教N多人,才发现在servlet的api中有如下:            HttpSessio...
  • unesco3187
  • unesco3187
  • 2015年10月14日 13:48
  • 1504

spring boot实现session 同步共享及 根据sessionid 获取相应的session

spring boot实现session 同步共享及 根据sessionid 获取相应的session
  • qq_33545491
  • qq_33545491
  • 2017年11月17日 13:41
  • 512

会话Session处理

介绍: Session,又被称为会话。是指有始有终的一系列动作/消息。 用户请求访问某个网站域名时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象,存放在服务端,此对...
  • zcl111
  • zcl111
  • 2016年06月01日 17:51
  • 972

PHP通过session id 实现session共享和登录验证-android开发非常重要

其实这个应该不算是疑难问题,就是php中用 sessionid得到session的值,因为的确很简单,只是可能大家平时用不到所以没有注意到罢了。   先说说,这个机制的用途吧,到现在为止战地知道这...
  • u013718071
  • u013718071
  • 2015年07月03日 15:47
  • 1175

uploadify上传导致session丢失解决方案

uploadify上传用的是一个flash插件。 flash中有个bug就是自身创建一个session,这样就导致与web本身的session不一致 导致问题 在进行 权限控制 登录的用户会存...
  • shaomiaojava
  • shaomiaojava
  • 2015年10月29日 16:00
  • 666

就最近一段时间,就遇到了两次session id 一直变化的,所以做个总结。

sessionid一直变化,1跨域 2session冲突
  • rendeyishi
  • rendeyishi
  • 2016年12月27日 13:37
  • 4616

Android用WebView获取sessionid保持登录状态

我们需要和web服务器保持登录状态。所以我们需要记录sessionid;我们将网页用webview加载之后,用CookieManager 来获取本地的cookies 。然后设置到webview里面去。...
  • qq_27561483
  • qq_27561483
  • 2016年11月11日 12:02
  • 5292

我的shiro之旅: 六 自定义shiro的sessionId

shiro有自己的sesison概念,shiro的session并不是java ee的session。通常,我们看到shiro的sessionId格式类似c6395bbc-425d-43b3-a444...
  • LHacker
  • LHacker
  • 2013年09月27日 14:18
  • 10591

CodeIgniter框架源码笔记(10)——SESSION类之用户接口CI_SESSION

初始化 Session 类:this−>load−>library(‘session′);初始化之后,就可以使用this->load->library(‘session’); 初始化之后,就可以使...
  • soonfly
  • soonfly
  • 2016年08月19日 08:21
  • 2030

跨域访问sessionid不一致问题

在开发过程中遇到这么一个问题,让我花了一个下午的大好时光才解决。但是解决玩之后,发现那么的容易。就是查找资料的时候很费劲。这里把问题记录一下。问题的产生 流程是这样的,要做一个用户登录的接口。在登录页...
  • u011521890
  • u011521890
  • 2017年07月02日 19:09
  • 2807
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java通过sessionId获取Session
举报原因:
原因补充:

(最多只允许输入30个字)