Web入门系列初探会话管理-Cookie技术

Posted 过向往的生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web入门系列初探会话管理-Cookie技术相关的知识,希望对你有一定的参考价值。

特点

会话数据保存在浏览器客户端。

Cookie技术核心

1、构造Cookie对象

  Cookie(String name, String value)

2、设置cookie

  #设置cookie的有效访问路径

  void setPath(String uri)

  #设置cookie的有效时间

  void setMaxAge(int expiry) : 

  @设置cookie的值

  void setValue(String value) :

3、发送cookie到浏览器端保存

  void response.addCookie(Cookie cookie)

4、服务器接收cookie

  Cookie[] request.getCookies()

Cookie原理

1、服务器创建cookie对象,把会话数据存储到cookie对象中;2、服务器发送cookie信息到浏览器;3、浏览器得到服务器发送的cookie,然后保存在浏览器端。

4、浏览器在下次访问服务器时,会带着cookie信息;5、服务器接收到浏览器带来的cookie信息。

public class CookieServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 1、创建Cookie对象
        Cookie cookie = new Cookie("name","ss");

        // 2、把cookie数据发送到浏览器(通过响应头发送: set-cookie名称)
        //response.setHeader("set-cookie", cookie.getName()+"="+cookie.getValue());
        //推荐使用这种方法,避免手动发送cookie信息
        response.addCookie(cookie);
    }
}
public class GetCookieServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 3、接收浏览器发送的cookie信息
        Cookie[] cookies = request.getCookies();
        if (cookies != null){
            for (Cookie cookie : cookies){
                String name = cookie.getName();
                String value = cookie.getValue();
                System.out.println(name+"="+value);
            }
        }
    }
}

Cookie细节

public class CookieServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 1、创建Cookie对象
        Cookie cookie = new Cookie("name","ss");

        /**
         * 1)设置cookie的有效路径。默认情况:有效路径在当前web应用下。 /myweb
         */
        //cookie.setPath("/myweb");

        /**
         * 2)设置cookie的有效时间
         * 正整数:表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。
         * 负整数:表示cookie数据保存浏览器的内存中,浏览器关闭cookie数据丢失。
         * 零:表示删除同名的cookie数据
         */
        //cookie.setMaxAge(20);
        //cookie.setMaxAge(-1); 
        //cookie1.setMaxAge(0);
        
        //2.把cookie数据发送到浏览器(通过响应头发送: set-cookie名称)
        //response.setHeader("set-cookie", cookie.getName()+"="+cookie.getValue());
        //推荐使用这种方法,避免手动发送cookie信息
        response.addCookie(cookie);
    }
}

注意:Cookie数据类型只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,

每个Cookie的大小限制为4KB。



以上是关于Web入门系列初探会话管理-Cookie技术的主要内容,如果未能解决你的问题,请参考以下文章

Java Web会话管理

Django学习系列(五.会话技术Cookie&Session&Token)

会话管理之Cookie技术

黑客攻防技术宝典web实战篇:攻击会话管理习题

Web会话跟踪:Cookie与Session

Web入门系列初探HttpServletResponse