实现说明
-
商品信息可以是静态的模拟就可以
-
注意实现浏览历史功能里面要包含浏览的时间
代码位置
代码
product.jsp(直接放在web里)
<%@page import="java.util.*"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ 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>
<h1>商品列表</h1>
<ul>
<li><a href="addCookie?id=1">电视机</a> <a href="BuySession?id=1">购买商品</a></li>
<li><a href="addCookie?id=2">电冰箱</a> <a href="BuySession?id=2">购买商品</a></li>
<li><a href="addCookie?id=3">二手电脑</a> <a href="BuySession?id=3">购买商品</a></li>
<li><a href="addCookie?id=4">摩托车</a> <a href="BuySession?id=4">购买商品</a></li>
<li><a href="addCookie?id=5">手机</a> <a href="BuySession?id=5">购买商品</a></li>
<li><a href="addCookie?id=6">微波炉</a> <a href="BuySession?id=6">购买商品</a></li>
</ul>
<hr/>
<h1>最近访问记录:</h1><h4><a href="CleanCookie">清空</a></h4><br/>
<%
String[] arr={"电视机","电冰箱","二手电脑","摩托车","手机","微波炉"};
Cookie[] cookies=request.getCookies();
String visitList=null;
String str=" ";
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("visitList")){
visitList=cookie.getValue();
break;
}
}
if(visitList==null){//商品列表不存在
out.println("无");
}else{
String[] existId=visitList.split(",");
for(String s:existId){
int i=Integer.parseInt(s);
str=str+arr[i-1]+"<br/>";
out.println(arr[i-1]);
}
}
}
%>
<%--<HR style="FILTER: alpha(opacity=100,finishopacity=0,style=3)" width="80%" color=#987cb9 SIZE=3>--%>
<%--<HR style="FILTER: progid:DXImageTransform.Microsoft.Shadow(color:#987cb9,direction:145,strength:15)" width="80%" color=#987cb9 SIZE=1>--%>
<h1>您的购物车</h1>
<%
Map<String,Integer>cart=(Map<String,Integer>)session.getAttribute("cart");
if(cart!=null){//遍历map输出
Set<String>keys=cart.keySet();
for(String id:keys){
int num=cart.get(id);
int idInt=Integer.parseInt(id);
String productName=arr[idInt-1];
out.println("您要购买的商品:"+productName+",数量为:"+num+"<br/>");
}
}
%>
<a href="CleanCartSession">清空购物车</a>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</context-param>
<servlet>
<servlet-name>addCookie</servlet-name>
<servlet-class>addCookie</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addCookie</servlet-name>
<url-pattern>/addCookie</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>BuySession</servlet-name>
<servlet-class>BuySession</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BuySession</servlet-name>
<url-pattern>/BuySession</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>CleanCartSession</servlet-name>
<servlet-class>CleanCartSession</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CleanCartSession</servlet-name>
<url-pattern>/CleanCartSession</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>CleanCookie</servlet-name>
<servlet-class>CleanCookie</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CleanCookie</servlet-name>
<url-pattern>/CleanCookie</url-pattern>
</servlet-mapping>
</web-app>
addCookie.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class addCookie extends HttpServlet {
// 得到用户当前访问商品和商品浏览记录列表
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 自动刷新
response.setHeader("refresh", "2;url=product.jsp");
// 获得用户当前浏览的商品id
String id = request.getParameter("id");
// 获得用户浏览记录列表
Cookie[] cookies = request.getCookies();
// 查找访问记录表 visitList 1,4,5,6
String visitList = null;
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("visitList")) {
visitList = cookie.getValue();
break;
}
}
if (visitList == null) {// 列表不存在
Cookie c = new Cookie("visitList", id);
c.setMaxAge(60 * 60);
response.addCookie(c);
response.getWriter().println("add success!");
} else {// 列表存在
String[] product = visitList.split(",");
for (String string : product) {
if (string.equals(id)) {// 若已经存在商品
response.getWriter().println("add success!");
return;
}
}
Cookie cook = new Cookie("visitList", id); // 若不存在该商品,则添加该商品进访问列表
cook.setMaxAge(60 * 60);
response.addCookie(cook);
response.getWriter().println("add success!");
}
} else {// 该站点无任何cookie
Cookie cookie = new Cookie("visitList", id);
cookie.setMaxAge(60 * 60);
response.addCookie(cookie);
response.getWriter().println("add success");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
BuySession.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class BuySession extends HttpServlet {
// 添加商品到购物车
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1.要获得商品的id
String id = request.getParameter("id");
// 2.获得购物车cart 从session处获得
HttpSession session = request.getSession();
Map<String, Integer> cart = (Map<String, Integer>) session
.getAttribute("cart");
if (cart == null) {// 若session中并无cart,则创建cart
cart = new HashMap<String, Integer>();
}
if (cart.containsKey(id)) {// 如果购物车中存在商品,则数量+1
int num = cart.get(id);
cart.put(id, num + 1);
} else {// 若不存在商品,则把商品加入购物车
cart.put(id, 1);
}
session.setAttribute("cart", cart);
response.sendRedirect("product.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
CleanCartSession.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CleanCartSession extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Map<String,Integer>cart=new HashMap<String,Integer>();
HttpSession session=request.getSession();
session.setAttribute("cart", cart);
response.sendRedirect("product.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
CleanCookie.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CleanCookie extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie cookie=new Cookie("visitList","");
cookie.setMaxAge(0);
response.addCookie(cookie);
response.sendRedirect("product.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}