1、简介
Cookie:类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
//保存用户上一次访问的时间
public class CookieTest01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
//服务器从客户端获取cookie
Cookie[] reqCookies = req.getCookies();
//判断cookie是否存在
if(reqCookies!=null){
writer.write("你上一次访问的时间是:");
for (int i = 0; i <reqCookies.length ; i++) {
Cookie cookie=reqCookies[i];
//获取cookie的key
if(cookie.getName().equals("lastLoginTime")){
//获取cookie的value
long lastLoginTime = Long.parseLong(cookie.getValue());
Date date = new Date(lastLoginTime);
writer.write(date.toLocaleString());
}
}
}else {
writer.write("这是你第一次访问本站");
}
//服务器给客户端响应一个cookie
Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
2、一个网站中cookie的上限:
- 一个cookie只能保存一个信息;
- 一个web站点最多可以存放20个cookie;
- cookie大小有限制,一般4kb;
- 浏览器最多存放300个cookie。
3、删除cookie:
- 不设置有效期,关闭浏览器,自动失效;
- 设置有效期为0。
//删除cookie
public class CookieTest03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//服务器给客户端响应一个cookie,key必须要和删除的key一致
Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
//设置cookie的有效期为0,立马过期
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
编码解码:
URLEncoder.encode("秦疆","utf-8")
URLDecoder.decode(cookie.getValue(),"utf-8")