-
使用Cookie
所有的HTTP消息,不管是请求还是相应均包含头信息,
当返回相应给客户端时Servlet容器把会话的信息添加到响应头信息中
客户端浏览器接收到响应后提取头信息,并将其存储在本地机中,再发送请求会将信息带回服务器端。由浏览器存储在客户端机器中的头信息就叫做Cookie,以“属性名=属性值”的方式组成的文本信息- 向客户端发送Cookie
Cookie c =new Cookie("name","value"); //创建Cookie
c.setMaxAge(60*60*24); //设置最大时效,此处设置的最大时效为一天
response.addCookie(c); //把Cookie放入到HTTP响应中
- 从客户端读取Cookie
String name ="name";
Cookie[]cookies =request.getCookies();
if(cookies !=null){
for(int i= 0;i<cookies.length;i++){
Cookie cookie =cookies[i];
if(name.equals(cookis.getName()))
//something is here.
//you can get the value
cookie.getValue();
}
}
Cookie的优缺点:
优点:数据可以持久保存,不需要服务器资源,简单,基于文本的Key-Value
缺点:大小受到限制,用户可以禁用Cookie功能,由于保存在本地,有一定的安全风险。
- URL重写
客户程序在每个URL的尾部添加额外的数据来标识会话
服务器将这个标识符与它所存储的有关会话的数据关联
URL重写的优缺点:
优点:在Cookie被禁用的时候依然可以使用
缺点:必须对网站的URL进行编码,所有页面必须动态生成,不能用预先记录下来的URL进行访问。
- 隐藏的表单域
<input type="hidden" name ="session" value="..."/>
表单域的优点:Cookie被禁时可以使用
表单域的缺点:所有页面必须是表单提交之后的结果。
- HttpSession
会话对象生存于服务器上,会话自动通过Cookie或URL重写与客户端关联起来,允许我们将任何对象存储到会话中。
- 使用HttpSession对象
获取一个与请求相关的会话
从会话中添加或删除一个属性
根据需要关闭会话
具体HttpSession应用请参考笔记:HttpSession实现购物车功能