Cookie对象

Session域对象 虽然Cookie是在使用Session的过程中出现的。其实我们本身也可以单独使用Cookie来在客户端(浏览器)来设置一些信息。

Cookie对象是通过 响应对象 写回到 浏览器的 。

  • 写Cookie的功能要找 HttpServletResponse对象

Cookie信息是通过 请求对象 发送到 服务器的。
* 读Cookie内容的功能找 HttpSerlvetRequest 对象

1、写Cookie

/*
            演示Cookie的写操作。
                创建:  指定键、值对。
                    注意: 值也不能出现一些特殊的符号。 比如 逗号 

                写回: resp.addCookie方法。
        */
        Cookie cookie = new Cookie("pids","4-2-3-5-6-7");
        resp.addCookie(cookie);
Cookie cookie = new Cookie("pids","4-2-4-2-4-5");
        //path的默认值就是当前项目
        cookie.setPath(req.getContextPath()+"/abc");
        //默认有效期起:关闭浏览器窗口就没了
        cookie.setMaxAge(60);   //手工设置60秒的有效期
        resp.addCookie(cookie);

写入response的cookie 怎么获取 response获取cookie对象_html


写入response的cookie 怎么获取 response获取cookie对象_html_02

2、Cookie的常用设置

设置Cookie的有效期

  • 如果值为负数,则Cookie不存储(关闭浏览器窗口时,自动删除)。
  • 如果值是0,则删除该cookie
    单位是: 秒
/*
  设置Cookie的有效期。如果值为负数,则Cookie不存储(关闭浏览器窗口时,自动删除)。
  如果值是0,则删除该cookie。
  单位是: 秒
*/
void setMaxAge(int expiry) 
          设置以秒计的cookie的最大存活时间。 
int getMaxAge() 
          返回cookie的最大存活时间,以秒计算,在缺省情况下,-1标示该cookie将一致持续到浏览器shutdown为止。  
 
 /*
 	所谓的Path其实就是告诉浏览器访问哪些路径的时候,会自动携带此Cookie数据。
 	比如:
 		如果path是 / 意味着用户访问此项目下的所有路径,都会携带此Cookie。
 			/index.html
 			/abc/def.html
 		如果path是/admin 意味着只有访问 admin 及其子目录时,才会携带此cookie。
 			/index.html [不携带]
 			/admin/index.html  [携带]
 */
void setPath(java.lang.String uri) 
    指定客户端将cookie返回的cookie的路径。    
java.lang.String getPath() 
    返回服务器上浏览器返回cookie的路径。

所谓的Path其实就是告诉浏览器访问哪些路径的时候,会自动携带-此Cookie数据。
比如:

  • 如果path是/意味着用户访问此项目下的所有路径,都会携带此Cookie
    /index.html
    /abc/def.html
  • 如果path是/admin意味着只有访问 admin 及其子目录时,才会携带此cookie。
    /index.html [不携带cookie]
    /admin/index.html [携带]

3、Cookie读取

/*
            【前提条件: 用户发送HTTP请求时,携带了Cookie信息】演示Cookie信息的读取

            req 对象的 getCookies() 方法返回 Cookie[]  就是携带的所有cookie信息
                我们还必须手工遍历此数组,才能获取我们关心的某个 cookie值是否存在。

         */
        Cookie[] cookies = req.getCookies();
        for (int i = 0; i < cookies.length; i++) {
            Cookie cookie = cookies[i];
            //获取cookie的键
           if("pids".equals( cookie.getName())) {
               //获取cookie的值
               cookie.getValue();
               break;
           }
        }

4、Cookie的修改和删除

if("1".equals(flag)){
            // 如果你想要修改Cookie ,只要给客户端写回一个相同属性。 相同name的cookie回去即可。
            //模拟Cookie的修改。
            Cookie cookie = new Cookie("pids","4-2-1-5-8-7");
            cookie.setPath("/0730/abc");
            cookie.setMaxAge(Integer.MAX_VALUE);
            resp.addCookie(cookie);
            return;
        }else if("2".equals(flag)){
            //演示删除cookie,只要保证name一致。 maxAge 为 0 即可删除。
            Cookie cookie = new Cookie("pids","222");
            cookie.setPath("/0730/abc");
            cookie.setMaxAge(0); //0表示告诉浏览器删除
            resp.addCookie(cookie);
            return;
        }