Java Web 利用 session 实现简单的购物车(数量可以累加)

过程及思路
1.利用 session 实现简单的购物车。
2.考虑到加入购物车有名称数量,所以用到HashMap<String,Integer>集合。
3.Map接口的常用方法如下:

方法名称 说明
V get(Object key) 返回 Map 集合中指定键对象所对应的值。V 表示值的数据类型
V put(K key, V value) 向 Map 集合中添加键-值对,返回 key 以前对应的 value,如果没有, 则返回 null
V remove(Object key) 从 Map 集合中删除 key 对应的键-值对,返回 key 对应的 value,如果没有,则返回null
Set entrySet() 返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry
Set keySet() 返回 Map 集合中所有键对象的 Set 集合

上代码:
bookchoose.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html> 
	<head> 
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
		<title>图书选择页面</title>
	</head> 
<body> 
	<form action="car.jsp" method="post">
 		<input type="checkbox" name="book" value="Java程序设计"/>Java程序设计<br>
 		<input type="checkbox" name="book" value="Java Web应用程序开发"/>Java Web应用程序开发<br>
 		<input type="checkbox" name="book" value="Python程序设计"/>Python程序设计<br>
 		<input type="submit" name="登录"/>
	</form>
</body>
</html>

car.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
	<%@ page import="java.io.*"%>
	<%@ page import="java.util.*"%>
<!DOCTYPE html>
<html> 
	<head> 
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
		<title>购物车</title>
	</head> 
<body>
	<%
		request.setCharacterEncoding("UTF-8");
		HttpSession hs = request.getSession();
		Map<String,Integer> car = (Map<String,Integer>)hs.getAttribute("shoppingCar");
		//如果回话域没有shoppingcar,则实例化一个
		if(car==null){
 			car = new HashMap<String, Integer>();
		}
		//获取用户的所选择的商品
		String[] book = request.getParameterValues("book");
		if(book!=null&&book.length>0){
 			for(String bookname:book){
 				//判断该物品是否在购物车中
 				if(car.get(bookname)!=null){
 				int num = car.get(bookname);
 				car.put(bookname,num+1);
 				}else{
					 car.put(bookname,1);
 						}
 				} 
 			}
		hs.setAttribute("shoppingCar",car);
		response.sendRedirect("carList.jsp");
	%>
</body>
</html>

carList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html> 
	<head> 
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
		<title>图书列表</title>
	</head> 
<body>
	<%
	request.setCharacterEncoding("UTF-8");
	HttpSession s=request.getSession();
	Map<String,Integer> car = (Map<String,Integer>)s.getAttribute("shoppingCar");
	if(car!=null&&car.size()>0){
 		out.println("购物车里图书列表:<br>");
 		//遍历显示购物车里面的商品
 	for (String bookname:car.keySet()){
 		out.println(bookname+","+car.get(bookname)+"<br>");
 		} 
 	}else{
		 out.println("没有商品+<br>");
			}
	out.println("<a href = 'bookchoose.jsp'>继续");
	%>
</body>
</html>
  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值