记录用户上次访问服务器的时间
需求:用户第一次访问,显示欢迎,这是您第一次访问,用户后续访问该页面,显示欢迎回来,您的上次访问时间为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);
}
}
}