Cookie

将 Cookie 写给客户端

  • 服务器怎样把 Cookie 写给客户端
  • 创建 Cookie,语法如下:
Cookie cookie = new Cookie(String cookieName, String cookieValue);
  • Cookie 会以响应头的形式发送给客户端
  • Cookie 只能存储非中文的字符串

向客户端发送Cookie

  • 需要先创建一个 Cookie 语法如上,然后把创建好的 Cookie 返回给客户端
  • 语法如下:
response.addCookie(cookie名称)

请求中Cookie的

  • 第一次访问时,请求头当中没有 Cookie
  • 第一次访问时,响应当中会看到 set-cookie

  • 第一次访问时,请求头当中就能够看到 Cookie 信息

访问服务器的任何资源,一般情况下都会把 Cookie 带过去

Cookie默认的存储时间

默认 Cookie 的会话级别是打开浏览器和关闭浏览器为一次会话,如果不设置持久化时间,Cookie 会存储在浏览器的内存中,浏览器关闭 Cookie 信息将会销毁,设置 Cookie 在客户端的存储时间,语法示例如下所示:

cookie.setMaxAge(int seconds);

设置的时间单位为 ,如果设置了持久化时间,Cookie 信息将会被持久化到浏览器的安装文件夹中的磁盘文件里,过期会自动删除

设置Cookie的携带路径

那访问某一个资源时,要不要带 Cookie 信息呢,如果每访问一个资源都携带 Cookie,会影响传输速度,如果不设置携带路径,默认情况下会在访问创建 Cookie 的 Web 资源相同的路径都会携带 Cookie 信息

如上是在 CookieServlet 下创建的 Cookie,只要是在 CookieServlet 下,进行访问时,都会携带 Cookie,如下面的访问路径就会携带,如下所示:

http://localhost:8080/CookieServlet/index.jsp

不是在 CookieServlet 下就不会携带 Cookie,如下所示:

http://localhost:8080/index.jsp

设置Cookie携带路径

设置的语法例子如下所示:

cookie.setPath(String path);

上面的只是语法接下来我给出几个真实的例子,如下所示:

cookie.setPath(“/CookiePro/cookieServlet”);

以上的含义是只有访问 CookieServlet 才会携带 Cookie 信息

cookie.setPath(“/CookiePro”);

以上的含义是访问指定的工程时,都会携带 Cookie 信息,CookiePro 是工程的名称

cookie.setPath(“/”);

以上的含义是访问服务器下部署的所有工程时都会携带 Cookie 信息

删除Cookie

如果想要删除客户端已经存储的 Cookie 信息,可以设置相同的 Cookie 名称和相同的路径,在设置持久化时间为 0 Cookie 进行覆盖即可删除,如下所示:

cookie.setMaxAge(0);

服务器获取客户端携带的 Cookie

通过 Request 对象的 getCookies() 方法来获取,获取的是所有的 Cookie,要进行遍历,找出自己需要的那一个 Cookie

posted @ 2020-10-25 22:06  BNTang  阅读(104)  评论(0编辑  收藏  举报