Java基础之会话技术(2)

  Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客户的唯一性标识JSESSIONID。

2、获得Session对象:

HttpSession session = request.getSession()

  此方法会获得专属于当前会话(当前客户端)的Session对象,如果服务器端没有该会话的Session对象会创建一个新的Session返回,如果已经有了属于该会话的Session直接将已有 的Session返回(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在session了)

3、域对象的存取数据;

4、生命周期:

①、创建:

    第一次执行 request.getSession() 时创建

②、销毁:

    服务器非正常关闭时;

    Session 过期、失效(默认30分钟)

    手动销毁Session

③、作用范围:

  默认在一次会话中,也就是说,在一次会话中任何资源公用一个session对象。

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取Session域中的内容
        HttpSession session = request.getSession();
        //获取Session中的内容
        String goods = (String)session.getAttribute("goods");
        //解决乱码
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write(goods);
    }

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取Session对象
        HttpSession session = request.getSession();
        //向Session域中存储数据(cookie不能存汉字)
        session.setAttribute("goods", "奶瓶");
        //获取JESSIONID
        String id = session.getId();
        //设置持久化时间---创建一个新的cookie设置其时间并覆盖原来的
        //创建Cookie
        Cookie cookie = new Cookie("JSESSIONID",id);
        cookie.setPath("/WEB08");
        cookie.setMaxAge(60*3);
        //发送cookie
        response.addCookie(cookie);
        response.getWriter().write("JSESSIONID:"+id);
        //结果 JSESSIONID:0CDD85B8A6E216CA5BDA8E9729D5F230
       
    }

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7c071d1702ef0067e96675cff62e2bb8.html