[原创]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
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>books jsp</title>
</head>
<body> <h4>Book 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> <!--
--> <%
// 显示最近浏览的 5 本书
// 1.获取所有的 Cookie
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0){ for(Cookie cookie : cookies){ if(cookie.getName().startsWith("JASON_BOOK_")){
out.println(cookie.getValue());
out.print("<br>"); }
}
}
// 2.从中筛选出 Book 的 Cookie:如果 cookieName 为 JASON_BOOK_ 开头的即符合条件
// 3.显示 cookieValue %>
</body>
</html>
2)book.jsp
<%@page import="javax.print.attribute.ResolutionSyntax"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<!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>book jsp</title>
</head>
<body>
<h4>Book detial page</h4>
Book:<%= request.getParameter("book") %> <br><br> <a href="books.jsp">Return</a> <!--
把书的信息以 Cookie 方式传回给浏览器,删除一个 Cookie
-->
<% //1. 确定要被删除的 Cookie: //前提:ATGUIGU_BOOK_ 开头的 Cookie 数量大于或等于 5,
String book = request.getParameter("book");
Cookie[] cookies = request.getCookies(); //保存所有的JASON_BOOK_ 开头的cookie
List<Cookie> bookCookies = new ArrayList<Cookie>(); //用来保存和books.jsp 传入的book 匹配的cookie
Cookie tempCookie = null; if(cookies != null && cookies.length > 0){
for(Cookie cookie : cookies){
if(cookie.getName().startsWith("JASON_BOOK_")){
bookCookies.add(cookie); if(cookie.getValue().equals(book)){
tempCookie = cookie;
} }
}
}
// ① 且若从 books.jsp 页面传入的 book 不在 JASON_BOOK_ 的 Cookie 中则删除较早的那个 Cookie( JASON_BOOK_ 数组的第一个 Cookie),
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("JASON_BOOK_"+book,book);
response.addCookie(cookie); %>
</body>
</html>
示意图:

分析:当 JDBC 提交到book.jsp 的时候,属于第一种情况,则删除 先前的按个JDBC ;当 PL/SQL 提交到 book.jsp 时候 ,属于第二种情况,则删除 最开始的那个cookie
4. 总结: 理解和使用 cookie的 API
[原创]java WEB学习笔记30:Cookie Demo 之显示最近浏览的记录的更多相关文章
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记28: 会话与状态管理Cookie 机制
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记29:Cookie Demo 之自动登录
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记56:Struts2学习之路---Struts 版本的 登录 demo
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- lua连接数据库之luasql ------ luasql连接mysql数据库 及 luasql源码编译
lua连接数据库不只luasql这个库,但目前更新最快的的貌似是这个luasql,他是开源的,支持的数据库功能如下: Connect to ODBC, ADO, Oracle, MySQL, SQLi ...
- 使用UIDatePicker
什么是UIDatePicker 用官方文档的话来说,UIDatePicker就是使用多个滚轮来选择日期和时间的类.官方的示例有定时器,闹钟(设置时间)部件.正确设置后,UIDatePicker对象会在 ...
- linux下OpenSSL的RSA密钥生成
工具的安装: 一.源码安装 OpenSSL Version:openssl-1.0.0e.tar.gz ------------------------安装: 1.将下载的压缩包放在根目录, 2.在文 ...
- JavaFX打包到Android上
让JavaFX执行到移动平台一直是社区努力完毕的事. 当然,眼下已经能够让JavaFX执行到Android和IOS平台了,以下我们来看看怎样打包自己的JavaFX项目到Android平台. 首先下 ...
- zmqSocket 使用和相关java后台准备
zmqSocket.as 源码地址: http://zmqsocket-as.googlecode.com/svn/ zmqSocket.js 源码地址: http://zmqsocket-js.go ...
- jquery的on()
定义和用法 on() 方法在被选元素及子元素上添加一个或多个事件处理程序. 自 jQuery 版本 1.7 起,on() 方法是 bind().live() 和 delegate() 方法的新的替代品 ...
- hbase和mapreduce开发 WordCount
代码: /** * hello world by world 测试数据 * @author a * */ public class DefinedMapper extends Mapper<Lo ...
- iOS GCD倒计时
GCD倒计时的好处在于不用考虑是否定时器无法释放的问题,runloop的问题,还有精度更加高 使用GCD创建定时器方法 -(void)startCountDown:(NSInteger)maxTime ...
- git使用命令行方式提交代码到github或gitlab上
(1)使用命令行(Git Bash)在gitlab上新建项目的流程 //进入项目目录下: C:\Users\wuwy>cd D:\workspace\eclipse\H5Patient\// ...
- python基础-------python2.7教程学习【廖雪峰版】(二)
2017年6月7日14:59:27任务: 看完python基础1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文 ...