1、Cookie的使用
/**
* @author CSDN_LQR
* @TODO
*
* 一、 Cookie默认是会话级Cookie,即当浏览器关闭时自动删除
*
* 二、可以使用maxAge来改变Cookie的存活时间
*
* 1、负值:cookie的数据存在浏览器缓存中(默认是-1),当浏览器关闭即删除
*
* 2、0:cookie马上删除(浏览器都不用关闭)。路径要保持一致,否则可能删错。
*
* 3、正值:缓存的时间(持久化到磁盘上),是指关闭浏览器后该cookie的存活时间
*
* 三、path的默认值是Cookie的那个程序 的访问路径
*
* 1、比如:http://localhost:8080/cookieDemo/servlet/demo1 写的Cookie
*
* path就是:/cookieDemo/servlet/ 看当前创建cookie的资源(servlet)文件路径
*
* 2、浏览器在访问服务器另外资源时,根据访问的路径来决定 是否带着Cookie到服务器
*
* 3、当前访问的路径如果是以cookie的path开关的路径,浏览器就带,否则不带
*
* 如果另一个servlet的访问路径是http://localhost:8080/cookieDemo/demo2,path是/
* cookieDemo/而不是/cookieDemo/servlet/,所以不会携带cookie
*
*/
public class CookieDemo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 遍历所有的cookies,得到指定的cookies并显示到网页
Cookie[] cookies = request.getCookies();
for (int i = 0; cookies != null && i < cookies.length; i++) {
if ("lastAcceptTime".equals(cookies[i].getName())) {
long time = Long.parseLong(cookies[i].getValue());
out.write("您上次的访问时间是:" + new Date(time).toLocaleString());
}
}
// 将当前的时间保存到cookie中
Cookie ck = new Cookie("lastAcceptTime", System.currentTimeMillis()
+ "");
// 设置cookie的存活时间,单位:秒
ck.setMaxAge(10);
// ck.setPath(request.getContextPath());// /应用名
ck.setPath("/");// 与上面的效果一致,让所有访问地址以path开头的servlet共享该cookie,即这种情况浏览器都携带
response.addCookie(ck);
// 删除cookie
out.print("<a href='demo2'>clear</a>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2、Cookie的删除
/**
* @author CSDN_LQR
* @TODO 删除Cookie
*
* 只是删除cookie本地文件,浏览器缓存中还是有的(需要关闭浏览器)
*
*/
public class CookieDemo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie ck = new Cookie("lastAcceptTime", "");
ck.setPath("/");// 路径一定要正确,否则可能会删错对象
ck.setMaxAge(0);
response.addCookie(ck);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}