Cookie之客户端获取上次登录时间

2021-09-15  本文已影响0人  让你变好的过程从来都不会很舒服

需求

实现获取用户上一次访问时间的功能,即当用户访问服务器,如果是非第一次访问的话,需要将上一次访问服务器的时间给用户显示出来。

思路

当用户第一次访问服务器时,将时间记录下来并放到cookie中,用户第二次访问时,会将该cookie发送到服务器,服务器拿到后就可以获取到上次访问的时间了,将上次访问的时间响应给浏览器并将新的访问时间放到cookie中

解决

package com.monkey1024.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 获取用户的最后访问时间
 * 
 */
public class LastVisitTime extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        //获取客户端的所有Cookie对象
        Cookie[] cookies = request.getCookies();
/*
        //如果等于null则说明是第一次访问
        for (int i = 0;cookies!=null && i < cookies.length; i++) {
            if("lastVisitTime".equals(cookies[i].getName())){//找到name为lastVisitTime的cookie
                long l = Long.parseLong(cookies[i].getValue());//把Cookie中的value取出
                out.write("你的最后访问时间为:"+new Date(l).toLocaleString());//yyyy-MM-dd
            }
        }

        //创建cookie,
        Cookie cookie = new Cookie("lastVisitTime",System.currentTimeMillis()+"");
*/
// 如果等于null则说明是第一次访问
       if (cookies == null) {
          out.write("第一次访问");
       } else {
          for (int i = 0; i < cookies.length; i++) {
             if ("lastVisit".equals(cookies[i].getName())) {// 找到name为lastVisitTime的cookie
                out.write("你的最后访问时间为:" + cookies[i].getValue());
              }
          }
        }
 
       //使用jdk8中的LocalDateTime
       LocalDateTime currentTime = LocalDateTime.now();
       //不能有空格
       //DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
       DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd/HH:mm:ss");
       // 创建cookie
       Cookie cookie = new Cookie("lastVisit", currentTime.format(formatter));
        //设置cookie的有效时间,单位是秒
        cookie.setMaxAge(60*60);//保存时间为1小时
        //把cookie信息写回到客户端
        response.addCookie(cookie);

    }

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

}
上一篇下一篇

猜你喜欢

热点阅读