您的位置:首页 > 移动开发 > 微信开发

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

2016-04-16 11:03 881 查看
//第一步先创建一个商品列表,不是使用数据库来实现的

<%@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显示的界面

点击查看后的界面

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

点击清空商品浏览记录后的界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: