入门级搭建购物车及会话处理,java容器的基础应用。
简单的购物车
完成以下购物车程序:
(1)提供两个购买物品的页面,例如这里的buyDiaper.jsp(尿不湿)和buyBeer.jsp(啤酒)两个页面。两类物品的内容自定,但最好在某些方面有关联。
(2)选中某些啤酒,点击“查看购物车”(display.jsp),显示刚加入购物车的物品名称
(3)点击“买点别的”,跳转到buyDiaper.jsp页面。选中某些尿不湿,点击“提交”之后再点击“查看购物车”,可以看到添加的两类物品
(4)点击“全部重写”,实现清除当前页面所有选中的项目
(5)点击“清空购物车”,把所有加入购物车的内容清除;再点击“查看购物车”,显示购物车空空如也。
如果在以上基础之外新增功能请说明并在下面展示,有加分!
看到这里,吾改写了商品,用了大家比较喜欢的鲜花与甜品。
buyxh.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form method="POST" >
<h3>鲜花</h3>
<p><input type="checkbox" name="b" value="水仙花">水仙花</p>
<p><input type="checkbox" name="b" value="满天星">满天星</p>
<p><input type="checkbox" name="b" value="紫罗兰">紫罗兰</p>
<p><input type="submit" value="提交" name="x1">
<input type="reset" value="全部重写" name="B2">
<a href="buytp.jsp">买点别的</a>
<a href="display.jsp">查看购物车</a>
<a href="clearCart.jsp">清空购物车</a>
</P>
</FORM>
<%
request.setCharacterEncoding("UTF-8");
ArrayList xhList=(ArrayList) session.getAttribute("cart");
String[] xh=request.getParameterValues("b");//获取商品
if(xhList==null){
xhList=new ArrayList();//如果是空就实例化一个购物车清单
}
if(xh!=null) {
for (int i = 0; i < xh.length; i++) {
xhList.add(xh[i]);
}
}
session.setAttribute("cart",xhList);
%>
</body>
</html>
buytp.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<FORM METHOD="POST">
<h3>甜品</h3>
<p><input type="checkbox" name="m" value="巧克力慕斯">巧克力慕斯
数量:<input type="text" name="cnt_巧克力慕斯" value="1">
单价:¥12.99</p>
<p><input type="checkbox" name="m" value="草莓冰淇淋">草莓冰淇淋
数量:<input type="text" name="cnt_草莓冰淇淋" value="1">
单价:¥8.99</p>
<p><input type="checkbox" name="m" value="蜜桃奶昔">蜜桃奶昔
数量:<input type="text" name="cnt_蜜桃奶昔" value="1">
单价:¥6.99</p>
<p><input type="submit" value="提交" name="B1">
<input type="reset" value="全部重写" name="B2">
<a href="buyxh.jsp">买点别的</a>
<a href="display.jsp">查看购物车</a>
<a href="clearCart.jsp">清空购物车</a>
</FORM>
<%
request.setCharacterEncoding("UTF-8");
ArrayList<String> xhList = (ArrayList<String>) session.getAttribute("cart");
Map<String, Integer> p = new HashMap<>();
double totalPrice = 0;
if(xhList==null){
xhList=new ArrayList();
}
String[] xh=request.getParameterValues("m");
if (xh != null) {
for (int i = 0; i < xh.length; i++) {
xhList.add(xh[i]);
// 获取对应商品的数量
int quantity = Integer.parseInt(request.getParameter("cnt_" + xh[i]));
p.put(xh[i], quantity);
// 根据商品名称计算价格
switch (xh[i]) {
case "巧克力慕斯":
totalPrice += 12.99 * quantity;
break;
case "草莓冰淇淋":
totalPrice += 8.99 * quantity;
break;
case "蜜桃奶昔":
totalPrice += 6.99 * quantity;
break;
}
}
}
ArrayList<String> cartItems = (ArrayList<String>) session.getAttribute("cartItems");
if (cartItems == null) {
cartItems = new ArrayList<>();
session.setAttribute("cartItems", cartItems);
}
for (Map.Entry<String, Integer> entry : p.entrySet()) {//entry遍历p
String item = entry.getKey();//商品名
int quantity = entry.getValue();//数量
String cartItem = item + " x" + quantity;
cartItems.add(cartItem);//把每一对商品及数量存进商品清单
}
//存取会话
session.setAttribute("cart", xhList);
session.setAttribute("totalPrice", totalPrice);
%>
</body>
</html>
display.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
ArrayList l=(ArrayList) session.getAttribute("cart");
if(l!=null&&!l.isEmpty()) {
for (int i = 0; i < l.size(); i++) {//不用泛型是这种
out.println(l.get(i));
}
}else {
%>
<li>购物车空空如也</li>
<% } %>
<ul>
<%
ArrayList<String> cartItems = (ArrayList<String>) session.getAttribute("cartItems");
if (cartItems!=null&&!cartItems.isEmpty()) {
for (String item : cartItems) {//集合遍历的一般形式
%>
<li><%= item %></li>
<%
}
} else {
%>
<li>没有甜品</li>
<% } %>
</ul>
<p>总价: <%= session.getAttribute("totalPrice") %></p>
</body>
</html>
clearCart.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
ArrayList cart = (ArrayList) session.getAttribute("cart");
ArrayList cartItems = (ArrayList) session.getAttribute("cartItems");
session.removeAttribute("totalPrice");
if (cart != null) {
// 清空购物车
cart.clear();
}
if (cartItems != null) {
cartItems.clear();
}
// 重定向到display.jsp
response.sendRedirect("display.jsp");
%>
</body>
</html>
清空购物车可以用集合的clear清除集合内元素,也可以用session的remove置空即null。这个简单的购物车用了java的arraylist集与map映射,还有一些简单的jsp内置对象及会话处理。
实验心得
作业加分项的言外之意就是你不做这个就得减分。