Servlet-Cookie的使用与删除

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);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值