根据cookie,

本文详细介绍了如何使用Java Servlet在用户浏览器中设置和管理Cookie,包括如何根据不同的需求设置Cookie的生存时间,例如立即删除、关闭浏览器时删除或设定具体存储秒数。同时,文章还提供了在用户首次访问和重复访问时,更新和读取Cookie值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cookie.setMAXAge();
1.正数:设置cookie存储秒数
2.0:立即删除
3.-1:关闭浏览器删除
#遇到的问题:
建立一个cookie后,再把值设为0,并没有删除这个cookie;

参考:https://blog.csdn.net/machinecat0898/article/details/23603493
本次没有设置domain。所以设置时只需要设置path即可

package cn.itcast;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet( "/cookieDemoServlet")
public class CookieDemoServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
    //获取cookie数组;
        Cookie[] cookies=request.getCookies();
        String msg="";
        boolean flag=false;
        response.setContentType("text/html;charset=utf-8");
        if(cookies!=null&&cookies.length>0){
            for(Cookie cookie:cookies){
            if(cookie.getName().equals("lastTime")){
                String value=cookie.getValue();
                value= URLDecoder.decode(value,"utf-8");
                msg="欢迎回来,上次访问时间为"+value;
                flag=true;
                Date date=new Date();
                //获取当前时间。
                //涉及到时区转换问题,date获取的是美国时间,通过simpleDateFormat进行转换成中国时间,格式如引号内所示,字母不能改变,
                //此外,dd日和 HH之间存在的空格,而cookie中不能存储特殊字符,所以需要进行URL编码,保存空格
//                提取时在进行解码,还原内容
                SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                String newDate=simpleDateFormat.format(date);
                newDate= URLEncoder.encode(newDate,"utf-8");
                cookie.setValue(newDate);
                cookie.setMaxAge(60*60*24);//设置存储秒数;
                cookie.setPath("/");
                response.addCookie(cookie);
                //response信息写入方式
                response.getWriter().write("<h1>欢迎回来,上次访问时间为"+value+"</h1>");
                break;
            }
        }
        }
        if(flag==false||cookies==null||cookies.length==0){
            Date date=new Date();
            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String newDate=simpleDateFormat.format(date);
            newDate= URLEncoder.encode(newDate,"utf-8");
            Cookie cookie=new Cookie("lastTime",newDate);
            cookie.setMaxAge(1);
            cookie.setPath("/");
            response.addCookie(cookie);
            response.getWriter().write("<h1>欢迎首次登录!</h1>");
        }

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        doPost(request,response);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值