1.Java通过sessionid获取session对象

之前在实现uploadify文件上传时,遇到火狐浏览器不兼容的问题,在网上找了些资料,自己动手把他解决了,其中有一个就是session的重新发起。特此记录。

因为Servlet2.1之后不支持SessionContext里面getSession(String id)方法。

所以我们可以通过HttpSessionListener监听器和全局静态map自己实现一个SessionContext。

 1 public class MySessionContext {
 2     private static HashMap mymap = new HashMap();
 3     public static synchronized void AddSession(HttpSession session) {
 4         if (session != null) {
 5             mymap.put(session.getId(), session);
 6         }
 7     }
 8     public static synchronized void DelSession(HttpSession session) {
 9         if (session != null) {
10             mymap.remove(session.getId());
11         }
12     }
13     public static synchronized HttpSession getSession(String session_id) {
14         if (session_id == null)
15         return null;
16         return (HttpSession) mymap.get(session_id);
17     }
18 }

监听器: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>

接下来你就可以在Action中根据sessionId获取Session对象了:

String sessionId = request.getParameter("sessionId");传递的sessionid
HttpSession session = MySessionContext.getSession(sessionId);

 在火狐浏览器uploadify文件上传就会用到这个东西,当然这是我个人的处理方式,可能还有更牛逼的方法;

 

posted on 2015-04-29 17:09 是妖_大黑暗边 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/demon-kingdom/p/4466504.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值