使用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显示的界面

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

点击查看后的界面

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

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

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

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

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

    原文作者:衡达天下
    原文地址: https://blog.csdn.net/zhyzh134/article/details/51166858
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞