记录用户上次访问时间

记录用户上次访问服务器的时间

需求:用户第一次访问,显示欢迎,这是您第一次访问,用户后续访问该页面,显示欢迎回来,您的上次访问时间为xxx年xx月xx日 hh:mm:ss

分析: 使用cookie来保存该访问时间

  • 创建servlet,要知道用户是否第一次访问 判断是否有个名为lastVisit的cookie
  • 每次访问该servlet都要存储lastVisit的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.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/userTime")
public class UserTime extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 解决乱码(get请求不用解决乱码问题)
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        // 获取页面传回的数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 判断
        if ("张三".equals(username) && "123456".equals(password)) { //登录成功
            // 默认第一次登录
            boolean isFirst = true;
            // 第一次登录的上一次访问时间为空
            String decode = null;
            // 获取cookie
            Cookie[] cookies = request.getCookies();
            if (cookies != null) { // 防止空指针引用
                for (Cookie cookie1 : cookies) { // 遍历查找
                    // 获取每一个cookie的名
                    String name = cookie1.getName();
                    // 判断是否第一次登录
                    if ("lastVisit".equals(name)) { //有上一次访问的记录,则不是第一次登录
                        isFirst = false;
                        // 获取上一次访问的时间
                        String value = cookie1.getValue();
                        // 将获取到的时间解码
                        decode = URLDecoder.decode(value, "utf-8");
                    }
                }
            }
            // 写入页面
            if (isFirst) response.getWriter().write("欢迎,这是您第一次登录");
            else response.getWriter().write("欢迎回来,您上次访问的时间是" + decode);
            /*
                无论是第几次登录都将当前的时间存入cookie
             */
            // 获取当前时间
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            Date date = new Date(System.currentTimeMillis());
            String visitTime = formatter.format(date);
            // 将时间存入cookie
            String encode = URLEncoder.encode(visitTime, "utf-8");
            Cookie cookie = new Cookie("lastVisit", encode);
            response.addCookie(cookie);
        } else { // 登录失败
            // 设置域对象(名:值)
            request.setAttribute("msg", "用户名或者密码错误");
            // 回到登录的页面
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值