Cookie讲解

保存会话的两种技术:
cookie
  • 客户端技术(响应,请求)
session
  • 服务器技术,利用这个技术,可以保存用户的会话信息,可以把信息或数据放在session中。
 
常见场景:网站登录之后,你下次不用登录了,第二次访问直接就上去了!
今天给大家带来的是Cookie的讲解:
Cookie
  1. 从请求中拿到Cookie信息
  2. 服务器响应给客户端Cookie
Cookie[] cookies=req.getCookies();//获得Cookie
cookie.getName();//获得Cookie中的Key
cookie.getValue()//获得Cookie中的Value
Cookie cookie = new Cookie("name", Value);//新建一个Cookie
cookie.setMaxAge(24*60*60);//设置cookie的有效期,例如一天
resp.addCookie(cookie);//响应给客户端一个cookie
Cookie:一般会保存在本地的 用户目录下 appdata;
 
细节问题:一个cookie是否存在上限?
  • 一个Cookie只能保存一个信息;
  • 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;
  • Cookie大小有限制4kb
  • 300个Cookie浏览器上限

 

删除Cookie:
  1. 不设置有效期,关闭浏览器,自动失效;
  2. 设置有效时间为:0

 

Cookie练习示例代码:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //服务器,告诉你,你来的时间,把这个时间封装成为一个 信件,下次访问,就知道你来了

    //解决中文乱码
    resp.setContentType("text/html;charset=UTF-8");
    req.setCharacterEncoding("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];
            //获取cookie的名字
            if (cookie.equals("lastLoginTime")){
                long lastLoginTime = Long.parseLong(cookie.getValue());//解析成长整形
                Date date = new Date(lastLoginTime);//转化成Date对象
                out.write(date.toLocaleString());//将Date类型转化为String类型,toLocaleString()方法已过期,但还能使用
            }
        }
    }else {
        out.write("这是您第一次访问本站");
    }

    //服务器给客户端响应一个cookie;
    Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");//System.currentTimeMillis()系统时间的方法,它返回的是1970年1月1日0点到现在经过的毫秒数。

    //Cookie有效期为一天
    cookie.setMaxAge(24*60*60);
    //响应给客户端
    resp.addCookie(cookie);
}

 

posted @ 2020-02-02 23:33  老祁的Java世界  阅读(184)  评论(1编辑  收藏  举报