一、实现思路
两个jsp页面
1、book1.jsp
示商品链接 ,显示最近浏览的五个商品 (书名)
》获取所有的cookie
》从中筛选出书名的cookie(为了方便筛选,书名cookie标记为BOOK开头)并显示cookieValue
2、book2.jsp
把书的信息以cookie方式传给浏览器 当 cookie数量大于5时,除一个cookie
》将BOOK开头的cookie存为数组,若新传入的cookie不在数组中,则删除数组第一个元素;若在,则删除该元素。
》将新传入的cookie作为数组最后一个元素
二、实现
book1.jsp
<body>
<a href="book2.jsp?name=JSP">JSP</a><br><br>
<a href="book2.jsp?name=Servlet">Servlet</a><br><br>
<a href="book2.jsp?name=J2EE">J2EE</a><br><br>
<a href="book2.jsp?name=MYSQL">MYSQL</a><br><br>
<a href="book2.jsp?name=hibernate">hibernate</a><br><br>
<a href="book2.jsp?name=Android">Android</a><br><br>
<%
//获取符合条件的cookie并显示
Cookie [] cookies=request.getCookies();
if(cookies!=null&&cookies.length>0)
for (Cookie cookie:cookies){
String cookieName=cookie.getName();
if(cookieName.startsWith("BOOK_")){
out.println(cookie.getValue());
out.print("<br>");
}
}
%>
</body>
book2.jsp
<body>
BOOK:<%=request.getParameter("name")%>
<br><br>
<a href="book1.jsp">Return</a>
<%
//当cookie数量大于5时,删除一个cookie
String name=request.getParameter("name");
Cookie[] cookies=request.getCookies();
List<Cookie> cookieList=new ArrayList<Cookie>();
Cookie tempCookie=null; //tempCookie用来保存和传入的cookie相匹配的cookie
if (cookies!=null&&cookies.length>0) //有BOOK开头的cookie则加到数组中
{
for(Cookie cookie:cookies){
String cookieName=cookie.getName();
if(cookieName.startsWith("BOOK_")){
cookieList.add(cookie);
if(cookie.getValue().equals(name)){ //看看获取到的参数是不是和数组中的cookie值一样 一样就给tempCookie
tempCookie=cookie;}
}
}
}
//1、若新传入的cookie不在数组中,则删除数组第一个元素;
if (cookieList.size()>=5&&tempCookie==null)
{
tempCookie=cookieList.get(0);
}
//2、若在,则删除该元素
if (tempCookie!=null)
{
tempCookie.setMaxAge(0);
response.addCookie(tempCookie);
}
//将book1.jsp传入的参数(书名)作为cookie返回
// String name=request.getParameter("name");
Cookie cookie=new Cookie("BOOK_"+name,name);
response.addCookie(cookie);
%>
</body>