会话机制之cookie与session

HTTP 是一种"无状态"协议,客户端每次检索网页时,服务器会自动不保留之前客户端请求的任何记录。

Cookie:

Cookie 是存储在浏览器客户端计算机上的文本文件,保留了各种跟踪信息。

识别返回用户包括三个步骤:

  • 服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。
  • 浏览器将这些信息存储在本地计算机上,以备将来使用。
  • 当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。

Java Servlet中对Cookie是怎样支持的?

在Servlet规范当中,提供了一个类javax.servlet.http.Cookie. Cookie中的name和value都是String类型。

Cookie案例关键代码。

   //在服务器端创建Cookie,发送给浏览器客户端
    
     Cookie cookie=new Cookie("name","valiue");
     
     cookie.setMaxAge(1000);//有效期设置,单位为秒

     response.addCookie(cookie);

  //浏览器发送Cookie给服务器后,服务器获取Cookie

    Cookie[ ] cookies=request.getCookies();

    if(cookie!=null){

    for(Cookie cookie:cookies){

      cookie.getName();

      cookie.getValue();

                }

            }

session:

session对象主要是将会话状态保留在服务器端。而cookie是将会话状态保留在浏览器端。

维持 Web 客户端和 Web 服务器之间的 session 会话有三种方式:

  • Cookies

    一个 Web 服务器可以分配一个唯一的 session 会话 ID 作为每个 Web 客户端的 cookie,对于客户端的后续请求可以使用接收到的 cookie 来识别。

  • 隐藏的表单字段

一个 Web 服务器可以发送一个隐藏的 HTML 表单字段,以及一个唯一的 session 会话 ID,如下所示:

该条目意味着,当表单被提交时,指定的名称和值会被自动包含在 GET 或 POST 数据中。每次当 Web 浏览器发送请求时,session_id 值可以用于保持不同的 Web 浏览器的跟踪。

但该种会话跟踪方式在点击常规的超文本链接(

  • URL 重写

在 URL 末尾追加额外的数据来标识 session 会话,服务器会把该 session 会话标识符与已存储的有关 session 会话的数据相关联。

例如,http://w3cschool.cc/file.htm;sessionid=12345,session 会话标识符被附加为 sessionid=12345,标识符可被 Web 服务器访问以识别客户端。

URL 重写是一种更好的维持 session 会话的方式,它在浏览器不支持 cookie 时能够很好地工作,但是它的缺点是会动态生成每个 URL 来为页面分配一个 session 会话 ID,即使是在很简单的静态 HTML 页面中也会如此。

HttpSession接口中常用方法

getAttribute(String key);//从session获取数据

setAttribute(String name,String value); //向session存储数据

removeAttribute(String name)//移除指定数据

invalidate() //销毁session对象
 
  cookie示意图:
在这cookie里插入图片描述session示意图:
在这里插入图片描述cookie和session对比:

cookiesession
存放位置浏览器本地硬盘服务器内存
值的类型字符串对象
存储大小小,4k大,取决于服务器的设置
安全性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值