继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Servlet-实现会话跟踪的技术

我有一双明亮的眼睛
关注TA
已关注
手记 13
粉丝 19
获赞 269
  1. 使用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功能,由于保存在本地,有一定的安全风险。

  1. URL重写

客户程序在每个URL的尾部添加额外的数据来标识会话
服务器将这个标识符与它所存储的有关会话的数据关联
URL重写的优缺点:
优点:在Cookie被禁用的时候依然可以使用
缺点:必须对网站的URL进行编码,所有页面必须动态生成,不能用预先记录下来的URL进行访问。

  1. 隐藏的表单域
<input type="hidden" name ="session" value="..."/>

表单域的优点:Cookie被禁时可以使用
表单域的缺点:所有页面必须是表单提交之后的结果。

  1. HttpSession

会话对象生存于服务器上,会话自动通过Cookie或URL重写与客户端关联起来,允许我们将任何对象存储到会话中。

  • 使用HttpSession对象
    获取一个与请求相关的会话
    从会话中添加或删除一个属性
    根据需要关闭会话
    具体HttpSession应用请参考笔记:HttpSession实现购物车功能
打开App,阅读手记
6人推荐
发表评论
随时随地看视频慕课网APP