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