记住上一次访问时间
实现;
package com.zhou.cookie.exer;
/**
* @author it春和
* @create 2022-02-24 19:09
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/cookieExample")
public class CookieExample extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应的消息格式和编码
response.setContentType("text/html;charset=utf-8");
// 1、获取所有cookie
Cookie[] cookies = request.getCookies();
// 2、遍历cookies数组
for (Cookie cookie : cookies) {
// 3、获取cookie的名称
String name = cookie.getName();
// 4、判断cookie中是否有名为lasttime的cookie
if ("lasttime".equals(name)) {
// 表示有lasttime这个cookie 不是第一次访问
// 1、响应数据
String value = cookie.getValue(); // 获取cookie的value值 时间
// TODO URL解码
System.out.println("解码前:" + value);
value = URLDecoder.decode(value, "utf-8"); // URL解码
System.out.println("解码后:" + value);
response.getWriter().write("欢迎回来,您上次访问时间为:" + value);
// 2、写会cookie
// 设置cookie的value值
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = simpleDateFormat.format(date.getTime());
// URL编码
System.out.println("编码前:" + str_date);
str_date = URLEncoder.encode(str_date, "utf-8");// URL编码
System.out.println("编码后:" + str_date);
// 重新设置cookie的值
cookie.setValue(str_date);
// 设置cookie的存活时间
cookie.setMaxAge(60 * 60 * 24); // 存活一天
// 重新发送cookie
response.addCookie(cookie);
break; // 匹配上就不再循环
} else {
// 是第一次访问
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String time = simpleDateFormat.format(date.getTime());
// TODO URL编码
System.out.println("编码前:" + time);
time = URLEncoder.encode(time, "utf-8");// URL编码
System.out.println("编码后:" + time);
// 新建一个cookie
Cookie lasttime = new Cookie("lasttime", time);
// 设置cookie的存活时间
lasttime.setMaxAge(60 * 60 * 24);
// 发送cookie
response.addCookie(lasttime);
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
cookie在tomcat8之后支持中文 但是一些特殊字符不支持 所以我们还是使用了URL进行编码解码