使用Cookie实现记录上次访问时间

  • Post author:
  • Post category:其他




使用Cookie实现记录上次访问时间


实现思路

在这里插入图片描述



实现代码
// 使用Cookie记录上次访问servlet资源的时间
@WebServlet("/CookieDemo3")
public class CookieDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置响应消息数据的字符编码
        response.setContentType("text/html;charset=utf-8");
        // 定义一个标记,用于标识,false标识没有一个cookie的name为lasttime
        boolean flag = false;
        // 获取所有的cookie对象,返回一个cookies数组
        Cookie[] cookies = request.getCookies();
        // 判断该数组是否为空并且判断该长度是否大于0
        if (cookies != null && cookies.length > 0) {
            // 遍历cookies数组,得到该数组中的每一个cookie对象
            for (Cookie cookie : cookies) {
                // 判断cookie的name是否为lasttime
                if("lasttime".equals(cookie.getName())) {
                    // 不是第一次访问
                    flag = true;
                    // 记录当前访问的时间,重新设置cookie的值,重新响应cookie
                    // 创建Date对象
                    Date date = new Date();
                    // 创建SimpleDateFormat对象
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    // 将date对象格式化为指定格式的字符串
                    String str_date = sdf.format(date);
                    // 进行编码
                    System.out.println("编码前" + str_date);
                    str_date = URLEncoder.encode(str_date,"utf-8");
                    System.out.println("编码后" + str_date);
                    // 设置cookie的Value值
                    cookie.setValue(str_date);
                    // 设置cookie的生存时间,为正数,表示持久化保存到磁盘上
                    cookie.setMaxAge(60*60*24*30);
                    // 响应cookie对象给浏览器
                    response.addCookie(cookie);
                    // 获取到cookie的值
                    String value = cookie.getValue();
                    // 进行解码
                    System.out.println("解码前" + value);
                    value = URLDecoder.decode(value, "utf-8");
                    System.out.println("解码后" + value);
                    // 响应数据到浏览器展示
                    response.getWriter().write("<h1>您好欢迎回来,您上次访问的时间为"+value + "</h1>");
                    // 结束循环
                    break;
                }
            }
        }
        if(cookies == null || cookies.length == 0 || flag == false) {
            // 第一次访问
            // 创建Date对象
            Date date = new Date();
            // 创建SimpleDateFormat对象,指定格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            // 将date对象按照指定的格式格式化为字符串
            String str_date = sdf.format(date);
            // 进行编码
            System.out.println("编码前" + str_date);
            str_date = URLEncoder.encode(str_date, "utf-8");
            System.out.println("编码后" + str_date);
            // 创建cookie对象
            Cookie  cookie = new Cookie("lasttime", str_date);
            // 响应发送cookie对象给浏览器
            response.addCookie(cookie);
            // 响应数据到浏览器上展示
            response.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}



运行截图
  • 第一次访问的截图

    在这里插入图片描述

  • 第二次访问的截图

    在这里插入图片描述



版权声明:本文为qq_41473905原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。