在Web应用中,我们经常需要跟踪用户身份.当一个用户登录成功后,如果他继续访问其他页面,Web程序如何才能识别出该用户身份?
因为HTTP协议是一个无状态协议,即Web应用程序无法区分收到的两个HTTP请求是否是同一个浏览器发出的,为了跟踪用户状态,服务器可以向浏览器分配一个唯一ID,并以Cookie的形式发送到浏览器,浏览器在后续访问是总附带此Cookie,这样,服务器就可以识别用户身份.
Session
我们把这种基于唯一ID识别用户身份的机制称为Session.每个用户第一次访问服务器后会自动化的一个Session ID.如果用户在一段时间内没有访问服务器,那么Session会自动失效,下次即使带着上次分配的Session ID访问,服务器也认为是一个新用户,会分配新的Session ID
向Sessoin中 添加/获得/删除标识 : req.getSession.setAttribute(键,值) / req.getSession.getAttribute(键) / req.getSession.removeAttribute(键)
Cookie
实际上,Servlet提供的HttpSession本质上就是通过一个名为JSESSIONID的Cookie来跟踪用户对话的.除了这个名称外,其他名称的Cookie我们可以任意使用
创建一个Cookie的步骤
Cookie cookie = new Cookie(键,值);
cookie.setPath("/"); // 指定cookie生效的路径范围
cookie.setMaxAge(秒) //之地当Cookie的有效期
resp.addCookie(cookie);