注:案例来源:JSP程序设计
商品类:CatalogItem.java

package shoppingCar;

public class CatalogItem {
	private String itemID; // 商品ID
	private String shortDescription; // 简单描述
	private String longDescription; // 详细描述
	private double cost; // 价格

	public CatalogItem(String itemID, String shortDescription, String longDescription, double cost) {
		super();
		this.itemID = itemID;
		this.shortDescription = shortDescription;
		this.longDescription = longDescription;
		this.cost = cost;
	}

	public String getItemID() {
		return itemID;
	}

	public void setItemID(String itemID) {
		this.itemID = itemID;
	}

	public String getShortDescription() {
		return shortDescription;
	}

	public void setShortDescription(String shortDescription) {
		this.shortDescription = shortDescription;
	}

	public String getLongDescription() {
		return longDescription;
	}

	public void setLongDescription(String longDescription) {
		this.longDescription = longDescription;
	}

	public double getCost() {
		return cost;
	}

	public void setCost(double cost) {
		this.cost = cost;
	}

}

商品库类:Catalog.java

package shoppingCar;

public class Catalog {
	private static CatalogItem[] items = {
			new CatalogItem("macinery001", "简单的逻辑学",
					"这是一本足以彻底改变你思维世界的小书。美国著名逻辑学家、哲学家D.Q.麦克伦尼,将一门宽广、深奥的逻辑科学以贴近生活的语言娓娓道来", 23.9),
			new CatalogItem("sanguoyanyi001", "三国演义",
					"《三国演义》是罗贯中在民间传说和有关话本、戏曲的基础上改编而成的。作者通过集中描绘三国时代各封建统治集团之间的政治、军事、外交斗争,揭示了东汉末年社会的动荡和黑暗,谴责了封建统治者的暴虐,反映了民众的苦难和他们呼唤明君、呼唤安定的强烈愿望",
					38.7),
			new CatalogItem("santi001", "三体",
					"作者试图讲述一部在光年尺度上重新演绎的中国现代史,讲述一个文明二百次毁灭与重生的传奇。小说《三体》与三体问题有关,其中描述了一种在半人马座三星生存的三体人及其三体文明", 42) };

	public static CatalogItem getItem(String itemID) {
		CatalogItem item;
		if (itemID == null) {
			return null;
		}
		for (int i = 0; i < items.length; i++) {
			item = items[i];
			if (itemID.equals(item.getItemID())) {
				return item;
			}
		}
		return null;
	}
}

商品显示页面:CatalogPage.jsp

<%@page import="shoppingCar.Catalog"%>
<%@page import="shoppingCar.CatalogItem"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="#fef5e6">
	<%!String heading = "文学";
	String[] itemIDs = { "macinery001", "santi001" };
	CatalogItem[] items = new CatalogItem[itemIDs.length];%>
	<%--标题 --%>
	<h1 align="center"><%=heading%></h1>
	<%
		String formurl = response.encodeUrl("orderPage.jsp");
		for (int i = 0; i < items.length; i++) {
			items[i] = Catalog.getItem(itemIDs[i]); //获取商品id,并将商品信息存储
	%>
	<hr>
	<form action="<%=formurl%>" method="post">
		<input type="hidden" name="itemID" value="<%=items[i].getItemID()%>">
		<h2><%=items[i].getShortDescription()%>(<%=items[i].getCost()%>)
		</h2>
		<p><%=items[i].getLongDescription()%></p>
		<p align="center">
			<input type="submit" value="添加到购物车" />
		</p>
	</form>
	<%
		}
	%>
</body>
</html>

在这里插入图片描述
订单类:OrderItem.java

package shoppingCar;

public class OrderItem {

	private CatalogItem item; // 商品
	private int count; // 商品数量

	public OrderItem(CatalogItem item) {
		this.item = item;
		count = 1;
	}

	public CatalogItem getItem() {
		return item;
	}

	public void setItem(CatalogItem item) {
		this.item = item;
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	// 自定义函数,获取商品的信息
	public String getItemID() { // 商品编号
		return getItem().getItemID();
	}

	public String getShortDescription() { // 商品名
		return getItem().getShortDescription();
	}

	public double getUnitCost() { // 单价
		return getItem().getCost();
	}

	public void incrementCount() {
		this.count++;
	}

	public double getTotalCost() { // 单一商品总价格
		return this.count * getUnitCost();
	}

}

购物车类:ShoppingCar.java

package shoppingCar;

import java.util.ArrayList;

public class ShoppingCar {
	private ArrayList<OrderItem> orderItems;

	public ShoppingCar() {
		orderItems = new ArrayList<>();
	}

	public ArrayList<OrderItem> getOrderItems() {
		return orderItems;
	}

	public synchronized void addItem(String itemID) {
		OrderItem order;
		for (int i = 0; i < orderItems.size(); i++) {
			order = (OrderItem) orderItems.get(i);
			if (order.getItemID().equals(itemID)) { // 添加订单
				order.incrementCount();
				return;
			}
		}
		OrderItem newOrder = new OrderItem(Catalog.getItem(itemID));
		orderItems.add(newOrder);
	}
}

订单页面:OrderPage.jsp

<%@page import="java.text.NumberFormat"%>
<%@page import="shoppingCar.OrderItem"%>
<%@page import="java.util.ArrayList"%>
<%@page import="shoppingCar.ShoppingCar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="fef5e6">
	<%
		ShoppingCar car = (ShoppingCar) session.getAttribute("shoppingCar");
		if (car == null) {
			car = new ShoppingCar(); //该变量需要在多个页面使用
			session.setAttribute("shoppingCar", car);
		}
		String itemID = request.getParameter("itemID");
		if (itemID != null) {
			car.addItem(itemID);
		}
	%>
	<h1 align="center">订单状态</h1>
	<%
		ArrayList<OrderItem> orderItem = car.getOrderItems();
		NumberFormat format = NumberFormat.getCurrencyInstance();
		//以表格的形式显示订单信息
		out.print("<center><table algin='center' cellspacing='0' cellpadding='4' width='600' border='1'>");
		out.print("<tr><td>商品编号</td> <td>名称</td> <td>单价</td> <td>数量</td> <td>金额</td>");
		OrderItem order;
		for (int i = 0; i < orderItem.size(); i++) {
			order = (OrderItem) orderItem.get(i);
			out.print("<tr>\n<td>" + order.getItemID() + "</td>");
			out.print("<td>" + order.getShortDescription() + "</td>");
			out.print("<td>" + format.format(order.getUnitCost()) + "</td>");
			out.print("<td>" + order.getCount() + "</td>");
			out.print("<td>" + format.format(order.getTotalCost()) + "</td>");
			out.print("</tr>");
		}
		out.print("</table></center><br>");

		String checkoutURL = response.encodeUrl("checkout.jsp");
	%>
	<center>
		<form action="<%=checkoutURL%>">
			<input type="submit" value="结算">
		</form>
	</center>
</body>

</html>

在这里插入图片描述
结算页面:checkout.jsp

<%@page import="com.sun.glass.ui.Pixels.Format"%>
<%@page import="java.text.NumberFormat"%>
<%@page import="shoppingCar.OrderItem"%>
<%@page import="java.util.ArrayList"%>
<%@page import="shoppingCar.ShoppingCar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="#fef5e6">
	<h1 align="center">结算</h1>
	<%
		ShoppingCar car = (ShoppingCar) session.getAttribute("shoppingCar");
		NumberFormat format = NumberFormat.getCurrencyInstance();
		double sum = 0;
		if (car != null) {
			ArrayList<OrderItem> orderItem = car.getOrderItems();
			OrderItem order;
			for (int i = 0; i < orderItem.size(); i++) {
				order = (OrderItem) orderItem.get(i);
				sum += order.getTotalCost();
			}
		}
	%>
	<center>
		总金额:<%=format.format(sum)%></center>
</body>
</html>

在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐