实现的功能是:在页面上点击,各种书名,跳转到另一个页面,在点解return 回到原来的页面,并且最下面出现刚才点击的书名;进行多次操作,都会出现刚刚点击的书名;

类似于:在浏览器上显示你登录的记录;

books.jsp页面:出现各种书名:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<h4>Books Page</h4>

<a href="book.jsp?book=JavaWeb">Java Web</a><br><br>
<a href="book.jsp?book=Java">Java</a><br><br>
<a href="book.jsp?book=Oracle">Oracle</a><br><br>
<a href="book.jsp?book=Ajax">Ajax</a><br><br>
<a href="book.jsp?book=JavaScript">JavaScript</a><br><br>
<a href="book.jsp?book=Android">Android</a><br><br>
<a href="book.jsp?book=Jbpm">Jbpm</a><br><br>
<a href="book.jsp?book=Struts">Struts</a><br><br>
<a href="book.jsp?book=Hibernate">Hibernate</a><br><br>
<a href="book.jsp?book=Spring">Spring</a><br><br>

<br><br>

<%
//显示最近浏览的 5 本书
//获取所有的 Cookie
Cookie [] cookies = request.getCookies();

//从中筛选出 Book 的 Cookie:如果 cookieName 为 ATGUIGU_BOOK_ 开头的即符合条件
//显示 cookieValue
if(cookies != null && cookies.length > 0){
for(Cookie c: cookies){
String cookieName = c.getName();
if(cookieName.startsWith("ATGUIGU_BOOK_")){
out.println(c.getValue());
out.print("<br>");
}
}
}

%>

</body>
</html>

----------------------------------------

book.jsp页面,出现点击的书名和return,点击return,返回到原来页面,并在原来页面最下边出现所有点击的书名;

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<h4>Book Detail Page</h4>

Book: <%= request.getParameter("book") %>

<br><br>

<a href="books.jsp">Return</a>

<%
String book = request.getParameter("book");

//把书的信息以 Cookie 方式传回给浏览器,删除一个 Cookie
//1. 确定要被删除的 Cookie:
//前提: ATGUIGU_BOOK_ 开头的 Cookie 数量大于或等于 5,
Cookie [] cookies = request.getCookies();

//保存所有的 ATGUIGU_BOOK_ 开头的 Cookie
List<Cookie> bookCookies = new ArrayList<Cookie>();
//用来保存和 books.jsp 传入的 book 匹配的那个 Cookie
Cookie tempCookie = null;

if(cookies != null && cookies.length > 0){
for(Cookie c: cookies){
String cookieName = c.getName();
if(cookieName.startsWith("ATGUIGU_BOOK_")){
bookCookies.add(c);

if(c.getValue().equals(book)){
tempCookie = c;
}
}
}
}

//①. 且若从 books.jsp 页面传入的 book 不在 ATGUIGU_BOOK_ 的 Cookie 中则删除较早的那个 Cookie
//( ATGUIGU_BOOK_ 数组的第一个 Cbookie),
if(bookCookies.size() >= 5 && tempCookie == null){
tempCookie = bookCookies.get(0);
}

//②. 若在其中,则删除该 Cookie
if(tempCookie != null){
tempCookie.setMaxAge(0);
response.addCookie(tempCookie);
}

//2. 把从 books.jsp 传入的 book 作为一个 Cookie 返回

Cookie cookie = new Cookie("ATGUIGU_BOOK_" + book, book);
response.addCookie(cookie);

%>

</body>
</html>

Cookie案例的更多相关文章

  1. Cookie案例分析

    一.案例- 显示用户上次访问的时间 当用户第一次访问该页面的时候提示:你好,你是第一次访问本页面,当前时间为:2016-11-3 22:10:30 第n次访问该页面时:欢迎回来,你上次访问的时间是:2 ...

  2. Cookie案例:简单登录界面中的应用

    ServletDemo1.java package ztq.servlet.study; import java.io.IOException; import java.io.PrintWriter; ...

  3. Cookie案例-显示商品浏览历史纪录

    package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...

  4. cookie案例-显示用户上次访问网站的时间

    package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...

  5. 状态管理cookie 案例

    1状态管理:服务器为了追踪同一个客户端发出的请求,将多次交互看成一个整体看待 2:cookie的生存时间,默认情况下,cookie保存在浏览器内存中,只要不关闭浏览器,cookie就一直存在 如果希望 ...

  6. 跟着百度学PHP[10]-读取COOKIE案例

    <?php if(!isset($_COOKIE['visittime'])){ #使用$_COOKIE获取visittime,如果不存在就执行下面的语句块,否则执行else setcookie ...

  7. cookie 案例 记住上一次的访问时间

    需求:记住上一次的访问时间 第一次访问Servlet 提示 欢迎首次访问 之后的访问 都提示 您上次的访问时间为:"""""""& ...

  8. 会话跟踪技术 - Cookie 和 Session 快速上手 + 登陆注册案例

    目录 1. 会话跟踪技术概述 2. Cookie 2.1 Cookie的概念和工作流程 2.2 Cookie的基本使用 2.3 Cookie的原理分析 2.4 Cookie的使用细节 2.4.1 Co ...

  9. java的会话管理:Cookie和Session

    java的会话管理:Cookie和Session 1.什么是会话 此处的是指客户端(浏览器)和服务端之间的数据传输.例如用户登录,购物车等 会话管理就是管理浏览器客户端和服务端之间会话过程产生的会话数 ...

随机推荐

  1. Java最全文件操作实例汇总

    本文实例汇总了Java文件操作.分享给大家供大家参考,具体如下: 1.创建文件夹 ? 1 2 3 4 5 6 7 8 9 10 11 //import java.io.*; File myFolder ...

  2. oracle和sql server的区别(1)

    A.instance和database 1.从oracle的角度来说,每个instance对应一个database.有时候多个instance对应一个database(比如rac环境).有自己的Sys ...

  3. centos Flash Player插件的安装

    关于Flash Player插件的安装,其实Fedora官方Wiki文档已经给出了详细的说明,我这里再把重点提取一下: 1. 首先到Adobe Flash Plugin官方下载页面选择YUM for ...

  4. Leetcode: Random Pick Index

    Given an array of integers with possible duplicates, randomly output the index of a given target num ...

  5. 搜集好的java技术帖子,持续更新,java程序员的要求

    1.Java NIO 系列教程 2.Java实现 二叉搜索树算法(BST) 3. Java 并发工具包 java.util.concurrent 用户指南 4.架构师之路系列:http://blog. ...

  6. [Linux]可用于管道操作的命令

    管道命令——| command1 | command2 | command3 注:管道命令必须能够接受来自前一个命令的数据成为standard input继续处理. cut 将一段信息的某一段切出来, ...

  7. 如何在OneNote2013中粘贴高亮的代码

    有的时候想在OneNote粘贴代码,但是直接复制粘贴进去的代码没有高亮,下面有一个办法让自己的代码在OneNote里面更加完整美观. 工具/原料 Notepad++ word2013 OneNote2 ...

  8. yii框架各种防止sql注入,xss攻击,csrf攻击

    PHP中常用到的方法有: /*  防sql注入,xss攻击  (1)*/    function actionClean($str)    {        $str=trim($str);      ...

  9. Spring day01

    1 实例化Spring容器 新建springday01项目1.F盘jar/Spring/first/五个jar包拷贝到lib下,复制xml文件到项目first包下2.First.java测试如何启动容 ...

  10. firefox中 checkbox属性checked="checked"已有,但复选框却不显示打钩的原因

    最近在调试复选框的应用,在ie没有问题,考虑到兼容性,试试了firefox,遇到了问题. 复选框绑定了click事件,点一次选中,再点击取消选中,依次类推.这个功能在ie中没问题,但是在firefox ...