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> |
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 终于决定:把自己家的能源管理系统开源了!
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· ASP.NET Core - 日志记录系统(二)
· 实现windows下简单的自动化窗口管理