将 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