books.jsp
<%--
Created by IntelliJ IDEA.
User: dell
Date: 2019/7/10
Time: 9:22
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h4>BOOKS page</h4>
<a href="book.jsp?book=JavaWeb">Java Web</a>
<br>
<a href="book.jsp?book=Java">Java</a>
<br>
<a href="book.jsp?book=Oracle">Oracle</a>
<br>
<a href="book.jsp?book=Ajax">Ajax</a>
<br>
<a href="book.jsp?book=JavaScript">JavaScript</a>
<br>
<a href="book.jsp?book=Android">Android</a>
<br>
<a href="book.jsp?book=Jbpm"></a>
<br>
<a href="book.jsp?book=Struts">Struts</a><br>
<a href="book.jsp?book=Spring">Spring</a><br>
<br><br>
<%
//显示最近浏览的五本书
//获取所有的Cookie
Cookie [] cookies = request.getCookies();
//从中筛选出Book的Cookie。如果cookieName为YHS_BOOK_开头的既符合条件
//显示cookieValue
if (cookies!=null && cookies.length>0){
for (Cookie c:cookies
) {
String cookieName = c.getName();
if (cookieName.startsWith("YHS_BOOK_")){
out.print(c.getValue());
out.print("<br>");
}
}
}
%>
</body>
</html>
book.jsp
<%@ page import="java.util.List" %>
<%@ page import="java.net.CookieHandler" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: dell
Date: 2019/7/10
Time: 9:22
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</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
* 前提:YHS_BOOK_开头的Cookie数量大于或等于5
*/
Cookie [] cookies = request.getCookies();
//保存所有的YHS_BOOK_开头的Cookie
List<Cookie> bookCookies = new ArrayList<Cookie>();
//用来保存和books.jsp传入的book匹配的那个Cookie
Cookie tempCookie = null;
if (cookies.length>0&&cookies!=null){
for (Cookie cookie : cookies){
String cookieName = cookie.getName();
if (cookieName.startsWith("YHS_BOOK_")){
bookCookies.add(cookie);
if (cookie.getValue().equals(book)){
tempCookie = cookie;
}
}
}
}
/**
*
*
*
* ①且若从books.jsp页面出入的book不再YHS_BOOK_的Cookie中则删除较早的那个Cookie
* (YHS_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("YHS_BOOK_"+book,book);
response.addCookie(cookie);
%>
</body>
</html>
效果图: