关于显示用户的上次访问时间用cookie

点击查看代码
package servlet.cookie;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@WebServlet("/cookieTest4")
public class CookieTest4 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置相应的消息体的编码
        resp.setContentType("text/html;charset=utf-8");
        Cookie[] cookies = req.getCookies();
        boolean flag = false;
        if(cookies!=null&&cookies.length!=0) {
            for (Cookie cookie : cookies) {
                if ( "lastTime".equals(cookie.getName())) {
                    //先对先前的cookie.value进行URL解码
                    String decode = URLDecoder.decode(cookie.getValue(), "utf-8");
                    resp.getWriter().write("<h1>欢迎回来,您上次访问的时间是"+decode+"<h1>");
                    flag=true;
                    //获取当前时间
                    LocalDateTime now = LocalDateTime.now();
                    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                    String format = now.format(dtf);
                    //编码后,将当前时间覆盖掉之前访问时间
                    format= URLEncoder.encode(format,"UTF-8");
                    cookie.setValue(format);
                    cookie.setMaxAge(600);      //60*60*24*30 一个月
                    resp.addCookie(cookie);
                    break;
                }
            }
        }

        if(cookies==null||cookies.length==0||flag==false){
            LocalDateTime now = LocalDateTime.now();
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            String format = now.format(dtf);
            //对cookie的value进行url编码
            format=  URLEncoder.encode(format,"utf-8");
            Cookie c = new Cookie("lastTime",format);
            c.setMaxAge(600);      //60*60*24*30 一个月
            resp.addCookie(c);
            resp.getWriter().write("<h1>您好,欢迎您首次访问<h1>");
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
}

posted @ 2025-05-28 20:49  lfqyj  阅读(20)  评论(0)    收藏  举报