javaweb之购物商城浏览记录,并清除浏览记录功能(内附原码)

首先看一下效果图,这里没有设置特定的HTML页面,你可以自己设置一下

一共需要三步,第一步创建一个JSP页面,第二步写一个加入购物车的逻辑,或者点击浏览的逻辑,第三步,创建清除记录的逻辑。(当然这里的代码是可以直接用的,但是呢,里面有一些路径的问题,需要读者自己去修改一下,并不是很难,比如说JSP中的Market等,在这里就不一一列举了,但是这里面的逻辑是正确的)

首先是JSP页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="tools.Cookiechoose"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
	.pg-img{
		height:200px;
		width:200px;
	}
</style>
</head>
<body>
	<img class="pg-img" src="/Demo3/image/1.jpg"><a href="/Demo3/Market?id=1">加入购物车</a>
	<img class="pg-img" src="/Demo3/image/2.jpg"><a href="/Demo3/Market?id=2">加入购物车</a>
	<img class="pg-img" src="/Demo3/image/3.jpg"><a href="/Demo3/Market?id=3">加入购物车</a><br>
	<img class="pg-img" src="/Demo3/image/4.jpg"><a href="/Demo3/Market?id=4">加入购物车</a>
	<img class="pg-img" src="/Demo3/image/5.jpg"><a href="/Demo3/Market?id=5">加入购物车</a>
	<img class="pg-img" src="/Demo3/image/6.jpg"><a href="/Demo3/Market?id=6">加入购物车</a>
	<h3>浏览记录</h3>
	<%
	Cookie[] cookies=request.getCookies();
	Cookie cookie=Cookiechoose.CookiegetCookieByName(cookies,"product");
	if(cookie!=null)
	{
		String longid=cookie.getValue();
		String[] ids=longid.split(",");
		for(String id:ids){
			%>
			<img class="pg-img" src="/Demo3/image/<%=id%>.jpg">
			<%
		}
	}
	%>
	<h3><a href="/Demo3/Removemarket">清空浏览记录</a></h3>
</body>
</html>

然后是加入购物车的逻辑:

package cn.itcast.servlet;

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;

import tools.Cookiechoose;

/**
 * Servlet implementation class Market
 */
@WebServlet("/Market")
public class Market extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Market() {
        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
		//其实就是根据是否存在这个id再cookie中,有的话则显示,没有就不显示
		//首先获取已经存在的id值
		String id=request.getParameter("id");
		Cookie[] cookies=request.getCookies();
		//获取特定名字的cookie
		Cookie cookie=Cookiechoose.CookiegetCookieByName(cookies, "product");
		//如果cookie为空说明没有东西,所以创建一个,值为点击的那个id,再返回到浏览器上
		if(cookie==null) {
			Cookie c=new Cookie("product",id);
			response.addCookie(c);
		}else {
			//不为空说明已经有了,获取cookie中的值,id=1,2,3
			String longid=cookie.getValue();
			//以逗号进行切割把它转换成数组
			String[] ids=longid.split(",");
			//判断ids这个数组中是否有现在点击的这个id
			if(!checkId(ids,id)) {
				//如果没有的话就加一个
				cookie.setValue(id+","+longid);
				response.addCookie(cookie);
			}
		}
		//重定向到原始的JSP页面
		response.sendRedirect(request.getContextPath()+"/JSP/market.jsp");
	}
	private boolean checkId(String[] ids,String id) {
		for(String s:ids) {
			if(s.equals(id)) {
				return true;
			}
		}
		return false;
	}

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

}

这里面有一个工具类tools,自己可以创建一个包tools,然后创建一个类,然后其他的servlet就可以使用这个方法了,这个方法是用来在cookies中找到特定名字的cookie。

package tools;

import javax.servlet.http.Cookie;

public class Cookiechoose {

	public static Cookie CookiegetCookieByName(Cookie[] cookies,String cookieName) {
		if(cookies==null) {
			return null;
		}else {
			for(Cookie cookie:cookies) {
				if(cookie.getName().equals(cookieName)) {
					return cookie;
				}
			}
			return null;
		}
	}

}

最后是清除的逻辑:

package cn.itcast.servlet;

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;

import tools.Cookiechoose;

/**
 * Servlet implementation class Removemarket
 */
@WebServlet("/Removemarket")
public class Removemarket extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Removemarket() {
        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
		Cookie[] cookies=request.getCookies();
		Cookie cookie=Cookiechoose.CookiegetCookieByName(cookies, "product");
		if(cookie!=null) {
            //如果不为空的话,就通过设置setmaxage来清空
			cookie.setMaxAge(0);
			response.addCookie(cookie);
		}
		response.sendRedirect(request.getContextPath()+"/JSP/market.jsp");
	}

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

}

猜你喜欢

转载自blog.csdn.net/qq_41901915/article/details/85259998