模拟实现购物车的显示最近浏览的商品的功能
点击第一个超链接后
点击return后
之前浏览过的书将出现在下方
实现方法如下:
代码如下:
book.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>Insert title here</title>
</head>
<body>
<h4>Books page</h4>
<a href="book.jsp?book=JavaWeb">JavaWeb</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=Andriod">Andriod</a><br>
<a href="book.jsp?book=Jbmp">Jbmp</a><br>
<a href="book.jsp?book=Struts">Struts</a><br>
<a href="book.jsp?book=Hibernate">Hibernate</a><br>
<a href="book.jsp?book=Spring">Spring</a><br>
<br>
<%
//显示最近浏览的5本书
//获取所有的cookie
Cookie []cookies = request.getCookies();
//从中筛选出book 的cookie 若果cookie为CHANCE_BOOK开头 则符合条件
//显示出cookieValue
if(cookies != null && cookies.length > 0){
for(Cookie c :cookies){
String cookieName = c.getName();
if(cookieName.startsWith("CHANCE_BOOK")){
out.println(c.getValue());
out.print(" ");
}
}
}
%>
</body>
</html>
books.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ 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>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");
//1.确定要删除的cookie
//前提: CHANCE_BOOK 开头的cookie数量大于或等于5,
Cookie []cookies = request.getCookies();
//保存所有由CHANCE_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("CHANCE_BOOK")){
bookCookies.add(c);
if(c.getValue().equals(book));
}
}
}
//且若从books.jsp 页面传来的book 不在CHANCE_BOOK的cookie中 则删除较早的那个cookie
//CHANCE_BOOK数组中的第一个
if(bookCookies.size() >= 5 && tempCookie == null){
tempCookie = bookCookies.get(0);
}
//若在其中 则删除
if(tempCookie != null){
tempCookie.setMaxAge(0);
response.addCookie(tempCookie);
}
//2.把从books.jsp传入的book作为一个Cookie返回
Cookie cookie = new Cookie("CHANCE_BOOK" + book,book);
response.addCookie(cookie);
%>
</body>
</html>