文章目录
使用Cookie实现记录上次访问时间
实现思路
实现代码
// 使用Cookie记录上次访问servlet资源的时间
@WebServlet("/CookieDemo3")
public class CookieDemo3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应消息数据的字符编码
response.setContentType("text/html;charset=utf-8");
// 定义一个标记,用于标识,false标识没有一个cookie的name为lasttime
boolean flag = false;
// 获取所有的cookie对象,返回一个cookies数组
Cookie[] cookies = request.getCookies();
// 判断该数组是否为空并且判断该长度是否大于0
if (cookies != null && cookies.length > 0) {
// 遍历cookies数组,得到该数组中的每一个cookie对象
for (Cookie cookie : cookies) {
// 判断cookie的name是否为lasttime
if("lasttime".equals(cookie.getName())) {
// 不是第一次访问
flag = true;
// 记录当前访问的时间,重新设置cookie的值,重新响应cookie
// 创建Date对象
Date date = new Date();
// 创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// 将date对象格式化为指定格式的字符串
String str_date = sdf.format(date);
// 进行编码
System.out.println("编码前" + str_date);
str_date = URLEncoder.encode(str_date,"utf-8");
System.out.println("编码后" + str_date);
// 设置cookie的Value值
cookie.setValue(str_date);
// 设置cookie的生存时间,为正数,表示持久化保存到磁盘上
cookie.setMaxAge(60*60*24*30);
// 响应cookie对象给浏览器
response.addCookie(cookie);
// 获取到cookie的值
String value = cookie.getValue();
// 进行解码
System.out.println("解码前" + value);
value = URLDecoder.decode(value, "utf-8");
System.out.println("解码后" + value);
// 响应数据到浏览器展示
response.getWriter().write("<h1>您好欢迎回来,您上次访问的时间为"+value + "</h1>");
// 结束循环
break;
}
}
}
if(cookies == null || cookies.length == 0 || flag == false) {
// 第一次访问
// 创建Date对象
Date date = new Date();
// 创建SimpleDateFormat对象,指定格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// 将date对象按照指定的格式格式化为字符串
String str_date = sdf.format(date);
// 进行编码
System.out.println("编码前" + str_date);
str_date = URLEncoder.encode(str_date, "utf-8");
System.out.println("编码后" + str_date);
// 创建cookie对象
Cookie cookie = new Cookie("lasttime", str_date);
// 响应发送cookie对象给浏览器
response.addCookie(cookie);
// 响应数据到浏览器上展示
response.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
运行截图
-
第一次访问的截图
-
第二次访问的截图
版权声明:本文为qq_41473905原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。