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>

猜你喜欢

转载自blog.csdn.net/qq_53463544/article/details/123642075