08-Cookie记录浏览历史

记录商品的浏览历史信息

工具类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import javax.servlet.http.Cookie;

public class CookieUtils {
public static Cookie getCookie(Cookie[] cookies, String cookieName) {
if (cookies != null && cookies.length != 0) {
for (Cookie ck : cookies) {
if (cookieName.equals(ck.getName())) {
return ck;
}
}
}
return null;
}
}

历史记录核心逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
String id = request.getParameter("id");
Cookie cookie = CookieUtils.getCookie(request.getCookies(), "history");
if (null == cookie) {
// 木有浏览记录:创建Cookie,并存储浏览记录
cookie = new Cookie("history", id);
} else {
// 有浏览记录
String history = cookie.getValue();
if (!history.contains(id)) {
// 有浏览记录,不包含当前浏览商品:将浏览商品拼接到已有的浏览记录中
history += "-" + id;
cookie.setValue(history);
}
// 有浏览记录,包含当前浏览商品则无需处理
}
response.addCookie(cookie);
// 显示商品浏览记录,路径:/demo/show
response.sendRedirect(request.getContextPath() + File.separator + "show");

显示历史记录信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 获取商品浏览记录
Cookie cookie = CookieUtils.getCookie(request.getCookies(), "history");
StringBuffer respsb = new StringBuffer();
if (null == cookie) {
// 没有浏览记录
respsb.append("<font color='red'>没有浏览记录</font>,");
respsb.append("<a href='books.html'>浏览商品</a>");
} else {
// 有浏览记录: 0-1-2-3
String[] books = {"西游记", "红楼梦", "水浒传", "三国志"};
String history = cookie.getValue();
String[] historys = history.split("-");
respsb.append("您的浏览记录如下:<br>");
for (String index : historys) {
String bookName = books[Integer.parseInt(index)];
respsb.append(bookName).append("<br>");
}
}
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(respsb);

Cookie应用
点击第一个后:
Cookie应用


08-Cookie记录浏览历史
https://janycode.github.io/2017/05/22/04_网页技术/04_Servlet/08-Cookie记录浏览历史/
作者
Jerry(姜源)
发布于
2017年5月22日
许可协议