Cookie

一、Cookie的概念

  Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。

  特点:

    1.客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。

    2.当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了。

    3.不同浏览器之间是不共享Cookie的。

二、注意点:

  1)在tomcat8.0之前,Cookie中不允许存放中文

  2)在tomcat8.0之后,Cookie中不建议存放中文

  3)Cookie的value不允许包含空格以及某些特殊符号

  4)重复设置相同名称的Cookie会覆盖前面的;

三、Cookiehttp头:

  (1)请求头:客户端发送给服务器;

    格式:Cookie: a=A; b=B; c=C。即多个Cookie用分号隔开;

  (2)响应头:服务端发送给客户端;

    格式:一个Cookie对象一个Set-Cookie;

      Set-Cookie: a=A

      Set-Cookie: b=B

      Set-Cookie: c=C

二、Cookie创建(构造)

  new Cookie(String name,String value);

三、Cookie获取/设置:

  (1)设置:调用response方法;

    response.addCookie(Cookie cookie);

  (2)获取:调用request方法;

    Cookie[] request.getCookies();

    //获取到的不是原来的cookie对象,是根据浏览器存的键值对创建的新cookie对象;

四、生命周期:

  (1)设置最大存活时间:void setMaxAge(int second);

    //参数second-1:表示一旦浏览器关闭则销毁;

          0:表示直接作废,可用于删除原有的Cookie;

          60*60:单位是秒;表示存活1个小时,即使浏览器关闭或者电脑重启,都保留一个小时;

  (2)获取最大存活时间:int getMaxAge()

五、路径设置:

  (1)路径设置:cookie.setPath(“/cookietest/servlet”);

    //如果没有设置路径,那么Cookie路径默认为当前资源的路径;

    例如:

      (1)访问http://localhost:8080/cookietest/AServlet时添加的Cookie默认路径为/cookietest;

      (2)访问http://localhost:8080/cookietest/servlet/BServlet时添加的Cookie默认路径为/cookietest/servlet;

      (3)访问http://localhost:8080/cookietest/jsp/BServlet时添加的Cookie默认路径为/cookietest/jsp;

 六、示例:

  1)测试代码:

public class Test extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie cookie = new Cookie("user", "zs");
        resp.addCookie(cookie);
        req.getRequestDispatcher("/success.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

  2)谷歌浏览器查看:

  

 

 

 

posted @ 2019-07-31 12:15  开拖拉机的拉风少年  阅读(214)  评论(0编辑  收藏  举报