- URL重写: 在URL结尾附加会话ID标识,服务器通过会话ID识别不同用户.
- 隐藏表单域: 将会话ID埋入HTML表单隐藏域提交到服务端(会话ID不在浏览器页面显示).
- Cookie: 第一次请求时服务器主动发一小段信息给浏览器(即Cookie),下次请求时浏览器自动附带该段信息发送给服务器,服务器读取Cookie识别用户.
- Session: 服务器为每个用户创建一个Session对象保存到内存,并生成一个sessionID放入Cookie发送给浏览器,下次访问时sessionID会随Cookie传回来,服务器再根据sessionID找到对应Session对象(Java领域特有).
Cookie
- 创建Cookie
- Cookie属性
- 发送到客户端 Cookie cookie_name = new Cookie("Parameter","Value"); cookie_name.setMaxAge(0); response.addCookie(cookie_name);
- Cookie规范 Cookie通过请求头/响应头在服务器与客户端之间传输, 大小限制为4KB; 一台服务器在一个客户端最多保存20个Cookie; 一个浏览器最多保存300个Cookie;
有效期
Cookie的Max-Age决定了Cookie的有效期,单位为秒.Cookie
类通过getMaxAge()
与setMaxAge(int maxAge)
方法来读写Max-Age属性:
Session有一定的过期时间: 当用户长时间不去访问该Session,就会超时失效,虽然此时sessionID可能还在Cookie中, 只是服务器根据该sessionID已经找不到Session对象了.
也可以用代码设置setMaxInactiveInterval(int interval);单位为毫秒<session-config> <session-timeout>30</session-timeout> </session-config>
Session的超时时间可以在web.xml中配置, 单位为分钟: