尚硅谷-JavaWeb Day7 cookie和Session

1. cookie

  ① 介绍    

    • 是服务器通知客户端保存键值对的一种技术;
    • 客户端有了 cookie 后,每次请求都发送给服务器;
    • 每个 cookie 的大小不能超过 4 KB;

  ② 创建 cookie

    • 创建 cookie 对象(new Cookie("key1", "value1"))
    • 客户端保存 cookie(response.addCookie(cookie))
    • 通过响应头 set-Cookie 通知客户端保存 cookie(Set-Cookie:key1=value1)
    • 收到响应后,查找到 set-Cookie 响应头,就查看是否存在这个 cookie,有就修改,没有创建

    注:解决 cookie 响应中文乱码:doPost方法添加 resp.setContentType("text/html; charset="UTF-8"")

  ③ 获取 cookie:(返回的 Cookie[ ]数组,获取指定 cookie 需要逐个判断)

    客户端(有 cookie):通过请求头:Cookie:xx=xx,把 cookie 信息发送给服务器

    服务器:获取客户端发送过来的 Cookie 只需要一行代码 req.getCookies(); 返回 Cookie[ ] 数组;

  ④ 修改 cookie 值:

    方案一:

      • 先创建一个要修改的同名 cookie 对象;
      • 构造器同时赋于新的 cookie 值;
      • 调用 response.addCookie(cookie);

    方案二:

      • 先查找到需要修改的 cookie 对象;
      • 调用 setValue() 方法赋予新的 cookie 值;
      • 调用 response.addCookie() 通知客户端保存修改;          

  ⑤ Cookie 的存活设置(指如何管理 Cookie 什么时候被销毁(删除))

    setMaxAge():设置 cookie 的最大生存时间()(:指定秒数后删;:浏览器关就删;0:马上删)

  ⑦ Cookie 的有效路径 path 属性

    path 属性可以有效过滤哪些 cookie 可以发送给服务器;(通过请求的地址来进行有效过滤)

  ⑧ 免用户名登录实现

2. Session

  ① 介绍

    • Session 是一个接口(HttpSession)
    • Session 就是会话,用来维护一个客户端和服务器之间关联的一种技术
    • 每个客户端都有自己的一个 Session 会话
    • Session 会话经常用来保存用户登陆之后的信息

  ② 创建 Session 和获取(id 号,是否为新)

    • request.getSession():第一次调用是创建Session会话,之后都是获取创建好的Session会话对象;
    • isNew():判断是否是刚创建的Session对象;
    • 每个会话都有唯一一个 ID值,用 getId() 得到 Session 的会话 id 值;

  ③ Session 域中数据的存取:req.getSession() 的 setAttribuate("xxx") 和 getAttribuate("xx");

  ④ Session 生命周期:(正数设定时长,负数永不超时)

    SetMaxInactiveInterval(int interval):设置 Session 的超时时间()超时自动销毁

    GetMaxInactiveInterval(int interval):获取 Session 的超时时间; 

    默认超时时长为 1800s = 30min(在Tomcat服务器的配置文件中默认服务器下所有Session会话为30分钟)

    注:

      a. 可修改 web.xml 设置超时时长:表示当前web工程,创建出来所有的 session 默认为 xx;

        <session-config><session-timeout>xx</session-timeout></session-config>

      b. 如果修改个别的 session 的超时时长,可以使用api:SetMaxInactiveInterval(int interval)

      c. 超时指的是客户端两次请求的最大间隔时长;    

      d. invalidate() 让当前 Session 会话马上超时无效;

  ⑤ 浏览器和 session 之间关联的技术

    

posted @ 2022-10-11 19:39  LinxhzzZ  阅读(53)  评论(0)    收藏  举报