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

文章目录

          • 使用Cookie实现记录上次访问时间
            • 实现思路
            • 实现代码
            • 运行截图

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

使用Cookie实现记录上次访问时间_第1张图片

实现代码
// 使用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("

您好欢迎回来,您上次访问的时间为"+value + "

"
); // 结束循环 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("

您好,欢迎您首次访问

"
); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }

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

    使用Cookie实现记录上次访问时间_第2张图片

  • 第二次访问的截图

    使用Cookie实现记录上次访问时间_第3张图片

你可能感兴趣的:(JavaWeb)