JavaWeb--会话与状态管理2--cookie 显示最近浏览商品

ps:不能以books作为标识符(冒号),但是可以用books,好像还可以用--,不知道为什么

books.jsp

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
<%--
  Created by IntelliJ IDEA.
  User: Skye
  Date: 2017/12/12
  Time: 10:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h4>Book Page</h4>
    <a href="book.jsp?book=JavaWeb">JavaWeb</a><br>
    <a href="book.jsp?book=Java">Java</a><br>
    <a href="book.jsp?book=JavaScript">JavaScript</a><br>
    <a href="book.jsp?book=MySQL">MySQL</a><br>
    <a href="book.jsp?book=Ajax">Ajax</a><br>
    <a href="book.jsp?book=TCPIP">TCPIP</a><br>
    <a href="book.jsp?book=Spring">Spring</a><br>
    <a href="book.jsp?book=Hibernate">Hibernate</a><br>
    <a href="book.jsp?book=Struts">Struts</a><br>
 
    <br>
<%
    //显示最近浏览的 5 本书
    Cookie[] cookies = request.getCookies();
 
    //获取所有的 Cookie 
    if(cookies != null && cookies.length > 0){
        //从中筛选出 Book 的 Cookie:
        for(Cookie cc: cookies){
            String bookName = cc.getName();
            //如果 cookieName 为books 开头的即符合条件
            if(bookName.startsWith("books")){
                //显示 cookieValue
                out.print(cc.getValue());
                out.print("<br>");
            }
        }
    }
%>
</body>
 
 
</html>

  book.jsp

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
59
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: Skye
  Date: 2017/12/12
  Time: 10:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h4>Book Detail Page</h4>
    Book: <%= request.getParameter("book") %>
    <a href="books.jsp">Return</a>
<%
    //把书的信息以 Cookie 方式传回给浏览器,删除一个 Cookie
    String book = request.getParameter("book");
 
    //每次都重新读取浏览器中Cookie的信息,进行存储
    List<Cookie> cookies = new ArrayList<Cookie>();
 
    Cookie temp = null;
    Cookie[] c = request.getCookies();
    if(c!= null && c.length > 0){
        for(Cookie cc : c){
            String bookName = cc.getName();
             //确定要被删除的 Cookie:books开头的 Cookie
            if(bookName.startsWith("books")){
                cookies.add(cc);
 
                //若已经存储在浏览器的Cookie信息中
                if(cc.getValue().equals(book)){
                    temp = cc;
                }
            }
        }
    }
 
    //若List中的书的信息超过了5本,且本次读取的书不在List中,则删除最早的一本
    if(cookies.size() >= 5 && temp == null){
        temp = cookies.get(0);
    }
 
    //删除该书的信息
    if(temp != null){
        temp.setMaxAge(0);
        //删除时用的是先设置最大时效为0,再加入Cookie
        response.addCookie(temp);
    }
 
    //把从 books.jsp 传入的 book 作为一个 Cookie 返回
    Cookie cookie = new Cookie("books" + book, book);
    response.addCookie(cookie);
%>
</body>
</html>
posted @   SkyeAngel  阅读(250)  评论(0编辑  收藏  举报
编辑推荐:
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
阅读排行:
· 终于决定:把自己家的能源管理系统开源了!
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· ASP.NET Core - 日志记录系统(二)
· 实现windows下简单的自动化窗口管理
点击右上角即可分享
微信分享提示