美文网首页
Cookie之客户端获取上次登录时间

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

作者: 让你变好的过程从来都不会很舒服 | 来源:发表于2021-09-15 15:43 被阅读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);
        }
    
    }
    

    相关文章

      网友评论

          本文标题:Cookie之客户端获取上次登录时间

          本文链接:https://www.haomeiwen.com/subject/uycmhltx.html