Cookie

一、会话控制

  >Http协议

      Http协议两个缺陷:

        1.HTTP协议是纯文本的

        2.HTTP协议是无状态的

    服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户

    虽然通过HTTP协议不能区分不同请求是否来同一用户,但是我们实际生活却有这样的需求。

  [1] Cookie

    > 看电影

      - 去电影院看电影时,检票人员是认票不认人。

      - 电影院的运作流程

    1.印刷电影票

    2.将票发给看电影

    3.看电影的拿着票来看电影

    4.检票

二、 简介

    - 我们想可以通过服务器向浏览器发送一个类似票的东西,

    浏览器在访问服务器时就可以拿着票来访问

    服务器就可以根据这个票来识别不同的用户。


  - 服务器发送给浏览器的这张票我们称为Cookie。

  1、 Cookie的使用流程:

      1.服务器先要创建Cookie

      2.将Cookie发送给浏览器

      3.浏览器带着Cookie访问服务器

      4.服务器检查浏览器的Cookie

    - Cookie实际上就是一个头

      服务器通过响应头将Cookie发送给浏览器,

      浏览器通过请求头将Cookie发回给服务器,

      服务器可以根据不同的Cookie来识别不同的用户。

  2、 使用Cookie

      - 创建Cookie

        Cookie cookie = new Cookie(name,value);

      - 发送Cookie

        response.addCookie(cookie);

    注意:可以发送多个cookie!

      - 读取Cookie

        request.getCookies(); 返回的是一个Cookie数组。

        - 虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。

        我们要想读取Cookie的信息,只能通过遍历数组。

      - 修改Cookie

        一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie,

        但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改

  3、 Cookie的有效时间

      - Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie将失效。

      - 通过setMaxAge(秒数)来设置Cookie的有效时间

        -//当秒数大于0时,有效时间会设置为相应的秒数

          cookie.setMaxAge(30);

        //当秒数等于0时,代表Cookie立即失效,浏览器不会保存。
          cookie.setMaxAge(0);

        //当秒数小于0时,和不设置是一样,一次会话中有效
          cookie.setMaxAge(-100);

        - 设置一个长久有效的Cookie

          cookie.setMaxAge(60*60*24*365*10)

  4、 在程序中使Cookie立即失效

      - 可以使用一个同名的,立即失效的Cookie来替换已有Cookie

         -cookie.setMaxAge(0); ,设置cookie有效时间秒数等于0,代表Cookie立即失效

  注意:不建议在cookie中传递中文,会用base64编码!


  5、 Cookie的Path

      - path指的Cookie的路径

      - 所谓的Cookie路径就是指,浏览器在访问哪些地址时会携带Cookie。

      - Cookie默认有效路径是项目的根目录,只要访问当前项目下的资源就会带着Cookie

      - 通过setPath()方法来设置Cookie有效路径

    //修改Cookie的有效路径

      //Cookie的路径由浏览器解析,所以设置路径时需要加上项目名

        cookie.setPath(request.getContextPath()+"/hello");


  6、 应用:

    1.可以用来保持用户的登录状态

    2.可以用来记录用户上次输入的用户名

    3.广告的推送

  > Cookie练习

    > 模拟一个taobao的功能,保存用户输入用户名。

    > 用户在login.jsp输入用户名和密码

    > 请求发送个LoginServlet

    > LoginServlet收到请求行,检查用户名和密码是否正确。(默认登录成功)

    如果正确,则将用户名保存到一个Cookie中,并发送给浏览器 ,重定向到login-success.jsp

    如果错误,转发到login.jsp


原文地址:https://www.cnblogs.com/java-zmj/p/7919278.html