利用会话技术模拟实现网上商城常见的购物车功能和浏览历史功能

实现说明

  1. 商品信息可以是静态的模拟就可以

  2. 注意实现浏览历史功能里面要包含浏览的时间

代码位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

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);
	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pumpkin609

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值