HTTP是一种无状态的通信协议。每个请求与应答信息的链接都是相互独立的。
这点很重要,因为HTTP服务器从一个请求到另一个请求时并不会维护前一个请求的引用。
因此,web容器必须创建一个机制来针对特定用户存储其会话信息。
会话保持方式:
Cookie web浏览器支持。浏览器将 sessionid 记录在cookie文件中。存储在浏览器指定目录中。
URL重写。(有些浏览器可能不支持cookie,所以采用url重写)
同一个会话保持,如果最后会用到之前请求的参数或者数据,那么在之前请求request过程中,利用request获取session对象,将数据放在session中,以备最终使用,在最终通过request获取session对象再获取之前存储的数据。(说白了就是利用session存储了临时数据)
第一个request:
User user = new User(name, password);
HttpSession session = request.getSession();
session.setAttribute("user", user);
第二个request:
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user == null) {
return INPUT;
}
Contact c = new Contact(user.getName(), city, phone, email);
request.setAttribute("contact", c);