Cookie 是由客户端浏览器保存和携带的,所以称之为客户端技术。
Cookie的属性:
name: 名称不能唯一确定一个cookie。路径可能不同
value: 不能存中文
path: 默认是写入cookie那个应用的访问路径
如:http://localhost:8080/Cookie/servlet/cookieDemo1
当客户端访问服务器其它资源时,根据访问路径来决定是否带着cookie到服务器
当访问的路径是以cookie中path开头的路径,就带cookie,否则就不带。
maxAge: cookie的保存时间。默认是-1(表示保存在浏览器的内存中)。单位是秒
负数:cookie存在浏览器的内存中。
0:删除。路径要保持一致,否则会删错了。
正数:缓存(持久化到磁盘中)的时间。下面是创建Cookie的代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
//获取客户端保存最后访问时间
Cookie[] cookies = request.getCookies(); //获取所有的Cookie对象
for (int i = 0; cookies!=null && i < cookies.length; i++) {
if("lastAccessTime".equals(cookies[i].getName())){ //判断当前Cookie中的name是否是想要的cookie
long time = Long.parseLong(cookies[i].getValue());//如果是想要的Cookie,则把Cookie中的value取出
writer.print("你的上一次访问时间为:"+new Date(time).toLocaleString()); //yyyy-MM-dd
}
}
writer.println("<a href='"+request.getContextPath()+"/Clear'>clear</a>");
Cookie cookie = new Cookie("lastAccessTime",System.currentTimeMillis()+"");
// cookie.setMaxAge(60*5);// Cookie存活的时间
cookie.setPath("/"); // /Cookie路径
response.addCookie(cookie);// 把cookie信息写回到客户端
}
删除Cookie的代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie cookie = new Cookie("lastAccessTime",""); //创建一个Cookie对象
cookie.setPath("/"); //要设置被删除Cookie的path,否则可能会删错对象
cookie.setMaxAge(0); //相当于删除
response.addCookie(cookie); //将cookie写回客户端缓存
}