Servlet入门(三)

Servlet入门(三)

一、cookie

1.简介

​ Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户计算机暂时或永久保存的信息。

2.用法

  1. 创建Cookie对象,绑定数据
    new Cookie(String name,String value)
  2. 发送Cookie对象
    response.addCookie(Cookie cookie)
  3. 获取Cookie,拿到数据
    Cookie[] request.getCookies()

3.细节

  1. cookie数据存在客户端,只能存4kb,数据不安全。

  2. 一次可以发送多个cookie,可以创建多个Cookie对象,用法是使用response调用多次addCookie方法发送cookie即可。

  3. cookie在浏览器中的保存时间:

    1. 默认情况下,当浏览器关闭后,Cookie数据被销毁
    2. 持久化存储:
      setMaxAge(int seconds)
      正数 将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
      负数 默认值
      零 删除cookie信息
  4. 在tomcat 8 之前 cookie中不能直接存储中文数据。(需要将中文数据转码—一般采用URL编码(%E3))

  5. 在tomcat 8 之后,cookie支持中文数据但是特殊字符还是不支持,还是采用URL编码存储,URL解码解析。

  6. 默认情况下cookie不能共享,共享将path设置为"/" (setPath(String path))。

二、session

1.简介

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。

2.用法

  1. 获取HttpSession对象。
  2. 使用HttpSession对象。

3.原理

  1. 第一次获取session,如果没有cookie,会在内存创建一个新的session对象。
  2. cookie的响应头里面的set-cookie会把新创建的session的JSESSIONID传递给浏览器。
  3. 下一次请求是通过cookie的请求头把session的JSESSIONID传递给session的请求。
  4. 通过JSESSIONID找到session的对象。

4.细节

  1. session数据存在服务器端,存储大小无限制,数据安全。

  2. 服务器如何在确保在一次会话范围内保证多次获取的session对象是同一个?

    是基于cookie的,在cookie(没有则新建一个)的响应头里的JESSIONID,验证对象是否为同一个

  3. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
    默认情况下。不是。
    如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存

  4. 客户端不关闭,服务器关闭,两次获取session是否为同一个?

    不是,但是在tomcat中自动将session对象序列化到硬盘上,等服务器启动在转到内存

  5. session什么时候被销毁?

    1. 服务器关闭
    2. session对象调用invalidate()
      务器启动在转到内存
  6. session什么时候被销毁?

    1. 服务器关闭
    2. session对象调用invalidate()
    3. session默认失效时间 30分钟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值