zoukankan      html  css  js  c++  java
  • 关闭浏览器后再次访问session 保证是同一个sessionid

    我们知道在正常情况下,发送http请求时,消息头中会自动携带cookie信息这其中就会包括SESSIONID信息,所以只要我们没有关闭浏览器,消息头中都会自动携带这个信息,以供服务器访问相应的session。 
    但是如果我把浏览器关闭了呢?这样的话,我该如何再次访问相应的session呢?

    我们可以这样做,来实现这个需求(结合cookie)

    //在servletA中设置cookie
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            HttpSession session = request.getSession();
            session.setAttribute("name", "张三");
            out.println("创建一个session并放入姓名属性");
            //手动添加cookie,保存JSESSIONID信息
            Cookie cookie = new Cookie("JSESSIONID", session.getId());
            cookie.setMaxAge(60*30);//设置cookie的生命周期为30min
        相应 给浏览器一个 session id response.addCookie(cookie);
    } //在servletB中就可以正常访问session了 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); HttpSession httpSession = request.getSession(); String name = (String) httpSession.getAttribute("name"); out.println("name = "+name); }

    我们来分析为什么可以这样做?

    首先,session的声明周期是可以自己来设置的,默认的是30分钟,那么当我们关闭浏览器之后,这个浏览器对应的session其实还没有消亡,(如果我们需要它消亡的话,我们可以调用invalidate方法,这也是网站中的安全退出常见操作之一)。既然没有消亡,为什么关闭浏览器之后,我们就访问不到了呢?那是因为cookie中的JSESSIONID信息没有了,不会自动携带这个session信息了,服务器找不到对应的session,就会自动添加新的session,这个新添加的session显然不是我们需要的。所以,我们就可以利用cookie来实现这个需求。只要我们手动为cookie中添加JSESSIONID信息,那么不管你的浏览器是否关闭,我的cookie中都会携带JSESSION信息,这样的话,服务器就一定能够找到对应的session,而不会重新建立一个新的session,这样只要session没有消亡,就一定可以访问到对应的session。

  • 相关阅读:
    echarts的legend图例的显示与隐藏(legend折线图加载完页面显示的个数)
    程序员必备网站
    web前端兼容性问题总结
    sass
    JS 中的事件绑定、事件监听、事件委托是什么?
    格式化电话号码,并不像看到的那么简单
    机器学习之Javascript篇: k-Means 聚类算法介绍
    机器学习之Javascript篇:遗传算法(2)
    机器学习之Javascript篇:遗传算法介绍
    机器学习之Javascript篇: 近邻(k-nearest-neighbor) 算法介绍
  • 原文地址:https://www.cnblogs.com/nextgg/p/session.html
Copyright © 2011-2022 走看看