[原创]java WEB学习笔记30:Cookie Demo 之显示最近浏览的记录
Posted jason_zhangz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[原创]java WEB学习笔记30:Cookie Demo 之显示最近浏览的记录相关的知识,希望对你有一定的参考价值。
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.Demo 需求: 显示最近浏览的 5 本书的 title
2.代码结构 books.jsp book.jsp
1)books.jsp : 显示最近浏览的 5 本书 ① 获取所有的 Cookie ② 从中筛选出 Book 的 Cookie:如果 cookieName 为 ATGUIGU_BOOK_ 开头的即符合条件 ③ 显示 cookieValue
2)book.jsp : 把书的信息以 Cookie 方式传回给浏览器,
① 删除一个 Cookie 确定要被删除的 Cookie: ATGUIGU_BOOK_ 开头的 Cookie 数量大于或等于 5,且
若从 books.jsp 页面传入的 book 不在 ATGUIGU_BOOK_ 的 Cookie 中则删除较早的那个 Cookie( ATGUIGU_BOOK_ 数组的第一个 Cbookie),
若在其中,则删除该 Cookie
② 把从 books.jsp 传入的 book 作为一个 Cookie 返回
3.代码:
1)books.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>books jsp</title>
8 </head>
9 <body>
10
11 <h4>Book page</h4>
12 <a href="book.jsp?book=JavaWeb">Java Web</a><br><br>
13 <a href="book.jsp?book=Java">Java </a><br><br>
14 <a href="book.jsp?book=Oracle">Oracle</a><br><br>
15 <a href="book.jsp?book=Ajax">Ajax</a><br><br>
16 <a href="book.jsp?book=javascript">JavaScript</a><br><br>
17 <a href="book.jsp?book=android">Android</a><br><br>
18 <a href="book.jsp?book=Jbpm">jbpm</a><br><br>
19 <a href="book.jsp?book=Struts">Struts</a><br><br>
20 <a href="book.jsp?book=Hibernate">Hibernate</a><br><br>
21 <a href="book.jsp?book=Spring">Spring</a><br><br>
22
23 <!--
24 -->
25
26 <%
27 // 显示最近浏览的 5 本书
28 // 1.获取所有的 Cookie
29 Cookie[] cookies = request.getCookies();
30 if(cookies != null && cookies.length > 0){
31
32 for(Cookie cookie : cookies){
33
34 if(cookie.getName().startsWith("JASON_BOOK_")){
35 out.println(cookie.getValue());
36 out.print("<br>");
37
38 }
39 }
40 }
41 // 2.从中筛选出 Book 的 Cookie:如果 cookieName 为 JASON_BOOK_ 开头的即符合条件
42 // 3.显示 cookieValue
43
44
45 %>
46 </body>
47 </html>
2)book.jsp
1 <%@page import="javax.print.attribute.ResolutionSyntax"%>
2 <%@ page language="java" contentType="text/html; charset=UTF-8"
3 pageEncoding="UTF-8"%>
4 <%@page import="java.util.ArrayList"%>
5 <%@page import="java.util.List"%>
6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
7 <html>
8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10 <title>book jsp</title>
11 </head>
12 <body>
13 <h4>Book detial page</h4>
14 Book:<%= request.getParameter("book") %>
15
16 <br><br>
17
18 <a href="books.jsp">Return</a>
19
20 <!--
21 把书的信息以 Cookie 方式传回给浏览器,删除一个 Cookie
22 -->
23 <%
24
25 //1. 确定要被删除的 Cookie:
26
27 //前提:ATGUIGU_BOOK_ 开头的 Cookie 数量大于或等于 5,
28 String book = request.getParameter("book");
29 Cookie[] cookies = request.getCookies();
30
31 //保存所有的JASON_BOOK_ 开头的cookie
32 List<Cookie> bookCookies = new ArrayList<Cookie>();
33
34 //用来保存和books.jsp 传入的book 匹配的cookie
35 Cookie tempCookie = null;
36
37 if(cookies != null && cookies.length > 0){
38 for(Cookie cookie : cookies){
39 if(cookie.getName().startsWith("JASON_BOOK_")){
40 bookCookies.add(cookie);
41
42 if(cookie.getValue().equals(book)){
43 tempCookie = cookie;
44 }
45
46 }
47 }
48 }
49 // ① 且若从 books.jsp 页面传入的 book 不在 JASON_BOOK_ 的 Cookie 中则删除较早的那个 Cookie( JASON_BOOK_ 数组的第一个 Cookie),
50 if(bookCookies.size() >= 5 && tempCookie == null){
51 tempCookie = bookCookies.get(0);
52 }
53
54 // ② 若在其中,则删除该 Cookie
55 if(tempCookie != null){
56 tempCookie.setMaxAge(0);
57 response.addCookie(tempCookie);
58 }
59
60 //2. 把从 books.jsp 传入的 book 作为一个 Cookie 返回
61 Cookie cookie =new Cookie("JASON_BOOK_"+book,book);
62 response.addCookie(cookie);
63
64 %>
65 </body>
66 </html>
示意图:
分析:当 JDBC 提交到book.jsp 的时候,属于第一种情况,则删除 先前的按个JDBC ;当 PL/SQL 提交到 book.jsp 时候 ,属于第二种情况,则删除 最开始的那个cookie
4. 总结: 理解和使用 cookie的 API
以上是关于[原创]java WEB学习笔记30:Cookie Demo 之显示最近浏览的记录的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记28: 会话与状态管理Cookie 机制
[原创]java WEB学习笔记11:HttpServlet
[原创]java WEB学习笔记10:GenericServlet
[原创]java WEB学习笔记18:java EE 中的MVC 设计模式