Cookie 实践:记住上次访问时间
# 85.Cookie 实践:记住上次访问时间
我们做一个小案例,加深对 Cookie 的理解
# 需求
- 访问一个 Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
- 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为: 显示时间字符串
# 分析
可以采用 Cookie 来完成
在服务器中的 Servlet 判断是否有一个名为 lastTime 的 cookie。
如果有:说明不是第一次访问,则
- 设置响应数据:欢迎回来,您上次访问时间为: 2018 年 6 月 10 日 11:50:20
- 更新 Cookie:lastTime = 2018 年 6 月 10 日 11:50:01
如果没有:说明是第一次访问,则
- 响应数据:您好,欢迎您首次访问
- 写入 Cookie:lastTime = 2018 年 6 月 10 日 11:50:01
# 完整代码
/**
* Cookie案例,记住上次访问时间
*/
package com.peterjxl.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.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/cookieDemo6")
public class CookieDemo6 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
boolean flag = false; //是否有lastTime的Cookie
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String str_date = sdf.format(date);
Cookie[] cs = req.getCookies();
// 遍历Cookie
if (cs != null) {
for (Cookie c : cs) {
if (c.getName().equals("lastTime")) {
flag = true;
resp.getWriter().write("欢迎回来,您上次访问时间为: " + c.getValue());
c.setValue(str_date);
c.setMaxAge(60 * 60 * 24 * 30); //存储一个月
resp.addCookie(c);
break;
}
}
}
// 第一次访问
if (!flag) {
Cookie cookie = new Cookie("lastTime", str_date);
cookie.setMaxAge(60 * 60 * 24 * 30);
resp.addCookie(cookie);
resp.getWriter().write("您好,欢迎您首次访问 " );
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 测试
重启 Tomcat,访问 http://localhost: 8080/hello/cookieDemo6,并刷新多几次,可以看到正常显示:
上次更新: 2024/10/1 21:14:36