• [原创]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 数量大于或等于 528     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

  • 相关阅读:
    json&display
    postgresql AutoVacuum系统自动清理进程
    postgresql vacuum操作
    C++ 在.h文件中包含头文件和在.cpp文件中包含头文件有什么区别
    ResetEvent、CreateEvent、SetEvent
    《转载》C语言的移位操作符
    《转载》如何使用M6117D看门狗定时器复位系统
    《转载》 Bit,Byte,WORD,DWORD区别和联系
    $.messager.alert
    对一个或多个实体的验证失败
  • 原文地址:https://www.cnblogs.com/jasonHome/p/5547403.html
Copyright © 2020-2023  润新知