文章

JavaWeb-Cookie、Session

Cookie、Session

Session会话

什么是有状态对话

一个网站,这么证明客户访问过?

1.服务端给客户端标记,下次访问时带上标记。----Cookie

2.服务器登记来访记录,下次访问时来匹配。----Session

保存会话的两种技术

网站登入过,下次打开时不需要再次登入

Cookie

-客户端技术(请求、响应)

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=UTF-8");
        resp.setCharacterEncoding("utf-8");
        PrintWriter out = resp.getWriter();
        //Cookie从客户端获取
        Cookie[] cookies = req.getCookies();//cookie可以存在多个
        //判断cookie是否为空
        if(cookies!=null){
            out.write("上一次访问时间:");
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie = cookies[i];
                if (cookie.getName().equals("lastlogintime")){
                    //获取cookie中的值
                    long lastlogintime = Long.parseLong(cookie.getValue());
                    Date date = new Date(lastlogintime);
                    out.write(date.toLocaleString());
                }
            }
        }else {
            out.write("这是第一次访问");
        }
        //服务器给客户返回一个cookie
        Cookie cookie = new Cookie("lastlogintime", System.currentTimeMillis()+"");
        cookie.setMaxAge(24*60*60);//设置cookie有效期
        resp.addCookie(cookie);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

一个网站 cookie 是否存在上限!

一个 cookie 只能保存一个信息;

一个 web 站点可以给浏览器发送多个 cookie ,最多20个

大小限制4kb

300 个 cookie 浏览器上限

删除

不设有效期或者设置为0

Session

-服务端技术,保存用户会话信息(将客户信息放在session中)

License:  CC BY 4.0