简易购物车

万变不离其宗,留个思路在这     注释也很详细

选购页面  index.jsp

<h3>
		<a href="cartServlet?id=0">Iphone7</a>
	</h3>
	<h3>
		<a href="cartServlet?id=1">小米</a>
	</h3>
	<h3>
		<a href="cartServlet?id=2">魅族</a>
	</h3>
	<h3>
		<a href="cartServlet?id=3">锤子</a>
	</h3>
	<h3>
		<a href="cartServlet?id=4">三星</a>
	</h3>

Servlet  

package com.test.session;

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

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

public class CartServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("gb2312");
		//获取要添加到购物车商品的id
		//拿过来是字符串类型,强转一下
		int id=(Integer.parseInt(request.getParameter("id")));
		//这里模拟一下数据库了
		String[] names={"Iphone7","小米","魅族","锤子","三星"};
		//取到id对应的商品名称
		String name=names[id];
		//获取购物车存放物品的session    map<String Integer>  商品名  数量
		//把一个Map对象存放到session中去,并且保证只存一次,而商品和数量是存在Map中的
	Map<String, Integer> map=(Map<String, Integer>) request.getSession().getAttribute("cart");
	       if (map==null) {
             //LinkedHashMap是HashMap的子类
			map=new LinkedHashMap<String, Integer>();
			request.getSession().setAttribute("cart",map);
		}
		//如果购物车里存在该商品,在原来的数量上+1
		if (map.containsKey(name)) {
			map.put(name,map.get(name)+1);
		}else {
			map.put(name,1);
		}
		//输出界面
		response.getWriter().write("<a href='index.jsp'><h3>继续购物</h3></a>");
		response.getWriter().write("<a href='cart.jsp'><h3>购物车结算</h3></a>");
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
	}

}

展示购物车的页面   cart.jsp

<body>
   <h2>购物车商品如下</h2><br/>
   <%
   //1.先获取map
     Map<String,Integer> map=(Map<String,Integer>)session.getAttribute("cart");
     //2.遍历map
     if(map!=null){
     //map.keyset 获取map所有的key值
       for(String key:map.keySet()){
       int value=map.get(key);
       //key商品名称  value 数量
     %>
   <h3 style="color:red">商品名称:<%=key %>    &emsp;数量:<%=value %></h3><br/>
      <%
       }
     }
    %>
    <h3>${message }</h3>
    <a href="clearCart"><h3>清空购物车</h3></a>
  </body>

清空购物车的servlet     

package com.test.session;
import java.io.IOException;
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 ClearCart extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         //两种方式清空
		//先获取到此次回话的session
		HttpSession session=request.getSession();
		//然后移除session的值
		session.removeAttribute("cart");
		//第二种方式     
		//session.invalidate();
		request.setAttribute("message","购物车已清空");
		request.getRequestDispatcher("cart.jsp").forward(request,response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
	}

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LoneWalker、

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值