Session 购物车

在jsp页面导包【Alt+/】

product_list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="CarServlet?id=0"><h3>Iphone7</h3></a><br>
	<a href="CarServlet?id=1"><h3>小米6</h3></a><br>
	<a href="CarServlet?id=2"><h3>三星Note8</h3></a><br>
	<a href="CarServlet?id=3"><h3>魅族7</h3></a><br>
	<a href="CarServlet?id=4"><h3>华为9</h3></a><br>
</body>
</html>

CarServlet.java

package com.zhujunwei;

import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/CarServlet")
public class CarServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		//1、获取要添加到购物车的商品id
		int id = Integer.parseInt(request.getParameter("id"));
		String[] names = {"Iphone7","小米6","魅族7","华为9"};
		String name = names[id];
		
		//2、获取购物车存放东西的session Map<String,Integer> Iphone7 3
		//把一个map对象村方法到session里面去,并且保证只存放一次。
		@SuppressWarnings("unchecked")
		Map<String,Integer> map = (Map<String, Integer>) request.getSession().getAttribute("cart");
		//session里面没有存放任何东西
		if(map ==null)
		{
			map = new LinkedHashMap<String, Integer>();
			request.getSession().setAttribute("cart", map);
		}
		//3、判断购物车里面有没有该商品
		if(map.containsKey(name))
		{
			//在原来的值的基础上+1
			map.put(name, map.get(name)+1);
		}else {
			//没有购买过该商品,当前数量为1
			map.put(name, 1);
		}
		
		//4.输出界面
		response.getWriter().write("<a href='product_list.jsp'><h3>继续购物</h3></a><br>");
		response.getWriter().write("<a href='cart.jsp'><h3>购物车结算</h3></a><br>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

Cart.jsp

<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>您的购物车的商品如下:</h2>
	<%
		//1、先获取到map
		Map<String,Integer> map = (Map<String,Integer>)session.getAttribute("cart");
	
		//2、遍历map
		if(map!=null){
			for(String key : map.keySet()){
				int value = map.get(key);
	%>
				<h3>名称:<%=key %>  数量:<%=value %></h3>
	<%
			}
		}
		
	%>
	<a href="ClearCartServlet">清空购物车</a>
</body>
</html>

ClearCartServlet.java

package com.zhujunwei;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebServlet("/ClearCartServlet")
public class ClearCartServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		session.removeAttribute("cart");
		response.sendRedirect("cart.jsp");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}