利用cookie和session实现购物记录和购物车

来源:互联网 发布:北京数据录入 编辑:程序博客网 时间:2024/05/01 04:09

利用jsp生成简单的购物界面,再用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");// 获得用户当前浏览的商品idString id = request.getParameter("id");// 获得用户浏览记录列表Cookie[] cookies = request.getCookies();// 查找访问记录表 visitList 1,4,5,6String 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 {// 该站点无任何cookieCookie 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.要获得商品的idString 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,则创建cartcart = new HashMap<String, Integer>();}if (cart.containsKey(id)) {// 如果购物车中存在商品,则数量+1int 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)方法)回原动态网页,来达到清除数据的目的。


0 0
原创粉丝点击