过程及思路
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>