Cookie访问记录Session购物车

cookie技术实现向页面输出访问商品记录列表,再利用session技术实现购物车

 首先jsp页面代码

<span style="font-size:14px;"><%@page import="java.util.*"%>
<%@ 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="/CookieProject/addCookie?id=1">电视机</a>  <a href="/CookieProject/session?id=1">购买商品</a></li>
	<li><a href="/CookieProject/addCookie?id=2">电冰箱</a>  <a href="/CookieProject/session?id=2">购买商品</a></li>
	<li><a href="/CookieProject/addCookie?id=3">二手电脑</a>  <a href="/CookieProject/session?id=3">购买商品</a></li>
	<li><a href="/CookieProject/addCookie?id=4">摩托车</a>  <a href="/CookieProject/session?id=4">购买商品</a></li>
	<li><a href="/CookieProject/addCookie?id=5">手机</a>  <a href="/CookieProject/session?id=5">购买商品</a></li>
	<li><a href="/CookieProject/addCookie?id=6">微波炉</a>  <a href="/CookieProject/session?id=6">购买商品</a></li>
</ul>
<hr/>
<h1>最近访问记录:</h1><h4><a href="/CookieProject/clean">清空</a></h4><br/>
<%
	String[] str={"电视机","电冰箱","二手电脑","摩托车","手机","微波炉"};
	Cookie[] cookies=request.getCookies();
	String visitList=null;
	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);
				out.println(str[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=str[idInt-1];
			out.println("您要购买的商品:"+productName+",数量为:"+num+"<br/>");
		}
	}
%>
<a href="/CookieProject/cleanCart">清空购物车</a>
</body>
</html></span>

利用cookie技术实现访问历史记录

<span style="font-size:14px;">package myTest;
 
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=/CookieProject/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", 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);
	}
 
}</span>

利用Cookie技术实现清空上述历史记录列表功能

<span style="font-size:14px;">package myTest;
 
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("/CookieProject/product.jsp");
	}
 
 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
 
		doGet(request,response);
	}
 
}</span>

接下来用Session技术实现购物车功能

<span style="font-size:14px;">package myTest;
 
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("/CookieProject/product.jsp");
	}
 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
 
		doGet(request, response);
	}
 
}</span>

再用session技术实现清空购物车功能

<span style="font-size:14px;">package myTest;
 
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("/CookieProject/product.jsp");
	}
 
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
 
		doGet(request,response);
	}
 
}
</span>
总之  利用jsp生成动态页面,然后用cookie来实现浏览记录功能(通过页面链接传入商品id,并把id记录入cookie中,再重定向回动态页面中,在动态页面输出cookie中的信息),最后用session实现购物车功能(通过传入商品id,把Map类型(因为商品有数量的属性,所以利用map)的cart传入session中,再重定向回原动态页面)。清空浏览记录与清空购物车则是分别利用重新生成空的同名cookie与session来覆盖原cookie与session,再重定向(response.sendRedirect(url)方法)回原动态网页,来达到清除数据的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值