Cookie讲解
保存会话的两种技术:
cookie
- 客户端技术(响应,请求)
session
- 服务器技术,利用这个技术,可以保存用户的会话信息,可以把信息或数据放在session中。
常见场景:网站登录之后,你下次不用登录了,第二次访问直接就上去了!
今天给大家带来的是Cookie的讲解:
Cookie
- 从请求中拿到Cookie信息
- 服务器响应给客户端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:
- 不设置有效期,关闭浏览器,自动失效;
- 设置有效时间为: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); }