JSP:简单购物车
注:案例来源:JSP程序设计商品类:CatalogItem.javapackage shoppingCar;public class CatalogItem {private String itemID; // 商品IDprivate String shortDescription; // 简单描述private String longDescription; // 详细描述private dou
·
注:案例来源: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>
更多推荐
所有评论(0)