[原创]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
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- java 页面错误转发提示页面 errorPage转跳报HTTP500内部服务器错误
errorPage和isErrorPage本来是很简单的功能,但是我却没弄出来,还百度了半天,结果发现是IE的设置问题.将下图中的“Show friendly HTTP error messages( ...
- svn上传代码时出现:Authorization failed
出现该问题基本都是三个配置文件的问题,下面把这个文件列出来 svnserve.conf:[general]anon-access = readauth-access = writepassword-d ...
- html禁止图片拖拽移动在新窗口打开
一直觉得直接从网站的表格上复制数据挺方便的, 今天,领导突然说网站上的图片可以被别人拖走了,必须禁止,哎,果然只有领导才考虑得到这种事情啊 so, 将ondragstart="return ...
- C# const和static readonly区别
[转]C# const和static readonly区别 以前只是知道Const和static readonlyd的区别在于const的值是在编译期间确定的,而static readonly是在运行 ...
- vim 窗口管理
一.切分窗口 1. 水平切分 命令::sp file 快捷键:<Ctrl-W> + S 2. 垂直切分 命令: :vsp file 快捷键:<Ctrl-W> + V 二.关 ...
- nginx內建模块使用
目录 nginx內建模块使用 1. 內建模块的引入 1.1 查看安装信息 1.2 重新指定配置信息 2. 內建模块的使用 2.1 http_stub_status_module 2.2 http_ra ...
- Python之布尔运算符
python中的布尔运算符有三种,or,and,not. 布尔运算,根据升序优先进行排序.运算 | 结果 | 提示=============================x or y | x假时,执 ...
- md5加密--32位16进制小写
public class ttgameMd5 { public final static String MD5(String str) { char hexDigits[] = { // 用来将字节转 ...
- Junit内部解密之四: Junit单元测试最佳实践
我们做使用Junit工具来做单页测试或接口测试时,需要注意一些问题,包括我们的编码规范,test规范,以及编写测试代码的策略,以下个人的总结. 1.为还没有实现的测试代码抛出一个异常.这就避免了该测试 ...
- html 绘图阴影和透明度
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...