保存会话数据的两种技术。
HTTP是一种无状态协议
为了保持状态,引入了Cookie技术。
Cookie
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
服务器会向客户端发送name为JSESSIONID的cookie,session会自动创建cookie,也可以自己手动创建cookie来设置。
Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
不是访问一个页面就创建session,而是遇到语句request..getSession();就创建了一个session。
应用:
登录的时候,把用户信息user放到session中
request.getSession().setAttribute("user", user);
然后,从JSP中取出来:
<% User user = (User) session.getAttribute("user"); if (user != null) { out.write(user.getPhone()); } else { out.write("no user"); } %>
判断用户是否有登录(JSP页面中):
<% //用户失效,跳转登录 if(request.getSession().getAttribute("user")==null){ response.sendRedirect("login.jsp"); return; } %>
退出:
request.getSession().invalidate();
参考:理解Cookie和Session机制 http://www.nczonline.net/blog/2009/05/05/http-cookies-explained