使用cookie实现记录浏览商品的过程并能够清空浏览记录(简单的小程序不涉及到数据库的调取)

//第一步先创建一个商品列表,不是使用数据库来实现的


<%@page import="com.javaweb.servlet.CookieUtils"%>

<%@ 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>
<h3>某网站出售的商品表</h3>
九阴真经<a href="/chuanzhijavaweb/showinfo?id=1">查看</a><br/>//这里要根据个人的工作路径进行编辑
辟邪剑谱<a href="/chuanzhijavaweb/showinfo?id=2">查看</a><br/>
如来神掌<a href="/chuanzhijavaweb/showinfo?id=3">查看</a><br/>
Android从入门到放弃<a href="/chuanzhijavaweb/showinfo?id=4">查看</a><br/>
Java从小白到大神<a href="/chuanzhijavaweb/showinfo?id=5">查看</a><br/>
<br/>
<br/>
<a href="/chuanzhijavaweb/clear">清空商品的浏览记录</a>
<br/>
<br/>


<hr/>
<%
Cookie[] cookies= request.getCookies();
Cookie targetCookie=CookieUtils.findTargetCookie(cookies, "history");
if(targetCookie==null){
//没有任何的浏览记录
out.print("你好没有浏览过任何商品。。。<a href='/chuanzhijavaweb/jsp/product.jsp'>去浏览</a>");

}else{
//说明浏览过商品,则要取出商品信息,显示一下
String value=targetCookie.getValue();
String[] records=value.split("-");
String[] bookName={"九阴真经","辟邪剑谱","如来神掌","Android从入门到放弃","Java从小白到大神"};
out.print("您浏览过的商品有:<br/>");
for(String record:records){
out.print("书名:"+bookName[Integer.parseInt(record)-1]+"<br/>");
}
}
%>
</body>

</html>

//第二步创建一个商品信息浏览表

package com.javaweb.servlet;
/*使用cookie显示上一次浏览过的商品。
 * 记录浏览过的商品,使用cookie来实现
 * (跟这个工程有关的链接为:product.jsp和CookieUtils.Java和ClearRecordsServlet.java)
 * */
import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class ServletCookieGoods
 */
@WebServlet("/showinfo")
public class ServletCookieGoods extends HttpServlet {
private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletCookieGoods() {
        super();
        // TODO Auto-generated constructor stub
    }


/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);

}


/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//点击获得书的id号
String id=request.getParameter("id");
//获得带过来的cookie数组,查看有没有目标cookie对象
Cookie []cookies=request.getCookies();
Cookie targetCookie=CookieUtils.findTargetCookie(cookies, "history");
if (targetCookie==null) {
//说明没有浏览过,就将当前的书 的ID带过去
Cookie cookie=new Cookie("history", id);
cookie.setMaxAge(60*60*24);//设置有效期
cookie.setPath("/");//设置保存路径
response.addCookie(cookie);
}else {
//说明之前浏览过,有浏览记录。如果没有浏览过就将这次的ID拼接上去,如果浏览过什么也不做
String value=targetCookie.getValue();
String []records=value.split("-");
if (!checkExistId(records, id)) {
//则需要将当前的ID拼接上去
Cookie cookie=new Cookie("history",value+"-"+ id);
cookie.setMaxAge(60*60*24);//设置有效期
cookie.setPath("/");//设置保存路径
response.addCookie(cookie);
}
}
response.setContentType("text/html;charset=utf-8");
response.getWriter().print("哥们,浏览商品成功。。<a href='/chuanzhijavaweb/jsp/product.jsp'>继续浏览</a>");


}
//判断是否包含当前点击的书本的ID号
private boolean checkExistId(String []records,String id) {
for (String string : records) {
if (records.equals(id)) {
//如果进来,则说明找到了当前点击的书
return true;

}
}


return false;
}
}


//cookie判断表

package com.javaweb.servlet;


import javax.servlet.http.Cookie;


public class CookieUtils {
public static Cookie findTargetCookie(Cookie[] cookies,String  name) {
if (cookies==null) {
return null;
}
for (Cookie cookie : cookies) {
if (cookie.getName().equals(name)) {
return cookie;
}
}

return null;
}
}


//商品清空表

package com.javaweb.servlet;
/*
 * 清空商品的浏览记录
 * 就是将存在的与浏览器缓存中的cookie给删除
 * */
import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class ClearRecordsServlet
 */
@WebServlet("/clear")
public class ClearRecordsServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ClearRecordsServlet() {
        super();
        // TODO Auto-generated constructor stub
    }


/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}


/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Cookie cookie=new Cookie("history", "");
cookie.setMaxAge(0);//设置为0删除cookie
cookie.setPath("/");//设置为/才能删除
response.addCookie(cookie);
//重定向到商品的列表页面去
// response.sendRedirect("/chuanzhijavaweb/jsp/product.jsp");
response.sendRedirect(request.getContextPath()+"/jsp/product.jsp");


}


}



运行结果:

先点击商品列表product.jsp显示的界面

点击查看后的界面

点击继续浏览后的界面(把所有的商品都浏览了一次)


点击清空商品浏览记录后的界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值