JavaWeb 使用Cookie记录用户上次访问时间和间隔
下面是一个使用Cookie实现显示用户上次访问时间和本次访问与上次访问的间隔的示例代码:
import java.io.IOException;
import java.text.SimpleDateFormat;
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 WelcomeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
// 获取当前时间
Date currentTime = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTimeStr = sdf.format(currentTime);
// 获取上次访问时间
String lastVisitTime = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("lastVisitTime")) {
lastVisitTime = cookie.getValue();
break;
}
}
}
// 更新Cookie的值为当前时间
Cookie lastVisitTimeCookie = new Cookie("lastVisitTime", currentTimeStr);
lastVisitTimeCookie.setMaxAge(24 * 60 * 60); // 设置Cookie的有效期为一天
response.addCookie(lastVisitTimeCookie);
// 输出欢迎消息和上次访问时间
String message;
if (lastVisitTime != null) {
long interval = currentTime.getTime() - sdf.parse(lastVisitTime).getTime();
long minutes = interval / (60 * 1000);
message = '欢迎再次访问,上次您访问的时间是:' + lastVisitTime + ',距离上次访问已经过去了:' + minutes + '分钟';
} else {
message = '欢迎首次访问';
}
response.getWriter().println('<html><body><h1>' + message + '</h1></body></html>');
}
}
在这个示例中,我们创建了一个WelcomeServlet来处理欢迎页面的逻辑。在doGet()方法中,我们首先获取当前时间,并格式化为字符串形式。然后,我们通过获取请求中的Cookie,找到名为'lastVisitTime'的Cookie,并获取其值作为上次访问时间。
接下来,我们创建一个新的Cookie对象,名为'lastVisitTime',值为当前时间的字符串形式。我们将其设置为一天的有效期,并将其添加到响应中,以便在浏览器端存储。
最后,我们根据上次访问时间的有无,计算本次访问与上次访问的时间间隔,并输出欢迎消息和上次访问时间。
请注意,为了使上述代码正常工作,你需要在前端页面中设置一个链接或按钮,使用户能够点击访问WelcomeServlet。例如,可以在登录成功后的页面中添加一个链接到WelcomeServlet的URL。
原文地址: https://www.cveoy.top/t/topic/bS57 著作权归作者所有。请勿转载和采集!