用JSP实现的商城购物车模块

用JSP实现的商城购物车模块

 

这两天,在学习JSP,正好找个小模块来练练手:

    下面就是实现购物车模块的页面效果截图:

<span>用JSP实现的商城购物车模块</span>

图1. 产品显示页面 通过此页面进行产品选择,添�到购物车

 

<span>用JSP实现的商城购物车模块</span>

图2 .购物车页面

 

<span>用JSP实现的商城购物车模块</span>

图3 . 商品数量设置

 

好了,先不贴图了,直接上代码;先看看项目的文档结构把(麻雀虽小,五脏俱全):

 

<span>用JSP实现的商城购物车模块</span>

整个项目包括三个类,两个JSP页面,以下分别把他们的代码贴上:

 

Cart.java

package shopping.cart;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class Cart {
	List<CartItem> items = new ArrayList<CartItem>();

	public List<CartItem> getItems() {
		return items;
	}

	public void setItems(List<CartItem> items) {
		this.items = items;
	}
	
	public void add(CartItem ci) {
		for (Iterator<CartItem> iter = items.iterator(); iter.hasNext();) {
			CartItem item = iter.next();
			if(item.getProduct().getId() == ci.getProduct().getId()) {
				item.setCount(item.getCount() + 1);
				return;
			}
		}
		
		items.add(ci);
	}
	
	public double getTotalPrice() {
		double d = 0.0;
		for(Iterator<CartItem> it = items.iterator(); it.hasNext(); ) {
			CartItem current = it.next();
			d += current.getProduct().getPrice() * current.getCount();
		}
		return d;
	}
	
	public void deleteItemById(String productId) {
		for (Iterator<CartItem> iter = items.iterator(); iter.hasNext();) {
			CartItem item = iter.next();
			if(item.getProduct().getId().equals(productId)) {
				iter.remove();
				return;
			}
		}
	}
	
}

 

CartItem.java

 

package shopping.cart;

import shopping.cart.Product;

public class CartItem {
	private Product product;

	private int count;

	public int getCount() {
		return count;
	}

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

	public Product getProduct() {
		return product;
	}

	public void setProduct(Product product) {
		this.product = product;
	}
}

 

 Product.java

package shopping.cart;
import java.io.Serializable;

public class Product implements Serializable {
	private String id;// 产品标识
	private String name;// 产品名称
	private String description;// 产品描写叙述
	private double price;// 产品价格

	public Product() {
	}

	public Product(String id, String name, String description, double price) {
		this.id = id;
		this.name = name;
		this.description = description;
		this.price = price;
	}


	public void setId(String id) {
		this.id = id;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public String getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public String getDescription() {
		return description;
	}

	public double getPrice() {
		return price;
	}
}

 

以下是俩JSP页面源代码:

ShowProducts.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ page import="shopping.cart.*"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		
		<title>My JSP 'ShowProductsJSP.jsp' starting page</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		
	</head>

	<body bgcolor="#ffffff">
		<%
			Map products = new HashMap();
			products.put("1", new Product("1", "mp3播放器",
					"效果非常不错的mp3播放器,存储空间达1GB", 100.00));
			products.put("2", new Product("2", "数码相机", "象素500万,10倍光学变焦",
					500.00));
			products.put("3", new Product("3", "数码摄像机",
					"120万象素,支持夜景拍摄,20倍光学变焦", 200.00));
			products.put("4", new Product("4", "迷你mp4",
					"市面所能见到的最好的mp4播放器,国产", 300.00));
			products.put("5", new Product("5", "多功能手机",
					"集mp3播放、100万象素数码相机,手机功能于一体", 400.00));
			products.put("6", new Product("6", "多功能手机111",
					"集mp3播放23、100万象素数码相机111,手机功能于一体111",600.00));
			products.put("7", new Product("7", "11111111111",
					"集mp3播放23、100万象素数码相机111,手机功能于一体111",700.00));
			products.put("8", new Product("8", "2222222222",
					"集mp3播放23、100万象素数码相机111,手机功能于一体111",800.00));
			products.put("9", new Product("9", "33333333333333",
					"集mp3播放23、100万象素数码相机111,手机功能于一体111",900.00));
			session.setAttribute("products", products);
		%>
		<H1>
			产品显示
		</H1>

		<form name="productForm"
			action="http://localhost:8088/JSPlearning/ShopCartJSP.jsp"
			method="POST">
			<input type="hidden" name="action" value="purchase">
			<table border="1" cellspacing="0">
				<tr bgcolor="#CCCCCC">
					<tr bgcolor="#CCCCCC">
						<td>
							序号
						</td>
						<td>
							产品名称
						</td>
						<td>
							产品描写叙述
						</td>
						<td>
							产品单位价格(¥)
						</td>
			
                        <td>
							加入�到购物车
						</td>
					</tr>
					<%
						Set productIdSet = products.keySet();
						Iterator it = productIdSet.iterator();
						int number = 1;

						while (it.hasNext()) {
							String id = (String) it.next();
							Product product = (Product) products.get(id);
					%><tr>
						<td>
							<%=number++%>
						</td>
						<td>
							<%=product.getName()%>
						</td>
						<td><%=product.getDescription()%>
						</td>
						<td>
							<%=product.getPrice()%></td>
						<td>
							<a href="Buy.jsp?id=<%=product.getId()%>&action=add" target="cart">我要购买</a>
						</td>
					</tr>
					<%
						}
					%>
				
			</table>
			<p>
			</p>
		</form>
	</body>
</html>

 

Buy.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ page import="shopping.cart.*" %>

<%
Cart c = (Cart)session.getAttribute("cart");
if(c == null) {
	c = new Cart();
	session.setAttribute("cart", c);
}

double totalPrice = c.getTotalPrice();

request.setCharacterEncoding("GBK");
String action = request.getParameter("action");

Map products = (HashMap)session.getAttribute("products");

if(action != null && action.trim().equals("add")) {
	String id = request.getParameter("id");
	Product p = (Product)products.get(id);
	CartItem ci = new CartItem();
	ci.setProduct(p);
	ci.setCount(1);
	c.add(ci);
}

if(action != null && action.trim().equals("delete")) {
	String id = request.getParameter("id");
	c.deleteItemById(id);
}

if(action != null && action.trim().equals("update")) {
	for(int i=0; i<c.getItems().size(); i++) {
		CartItem ci = c.getItems().get(i);
		int count = Integer.parseInt(request.getParameter("p" + ci.getProduct().getId()));
		ci.setCount(count);
	}
}
 %> 

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<%
List<CartItem> items = c.getItems();
%>

<!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=GB18030">
<title>购物车</title>

</head>
<body>

<!-- c的值是:<%=(c == null) %> items的值是:<%=(items == null) %> -->
<form action="Buy.jsp" method="get">
<input type="hidden" name="action" value="update"/>
<table align="center" border="1">
	<tr>
		<td>产品ID</td>
		<td>产品名称</td>
		<td>购买数量</td>
		<td>单位价格</td>
		<td>总价</td>
		<td>处理</td>
	</tr>
	<%
	for(Iterator<CartItem> it = items.iterator(); it.hasNext(); ) {
		CartItem ci = it.next();
		%>
		<tr>
			<td><%=ci.getProduct().getId() %></td>
			<td><%=ci.getProduct().getName() %></td>
			<td>
				<input type="text" size=3 name="<%="p" + ci.getProduct().getId() %>" value="<%=ci.getCount() %>" 
					onkeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"
					onchange="document.forms[0].submit()">				
			</td>
			<td><%=ci.getProduct().getPrice() %></td>
			<td><%=ci.getProduct().getPrice()*ci.getCount() %></td>
			<td>
				
				<a href="Buy.jsp?action=delete&id=<%=ci.getProduct().getId() %>">删除</a>
				
			</td>
		</tr>
		<%
	}
	%>
	
	
	<tr>
		<td colspan=3 align="right">
			全部商品总价格为:
		</td>
		<td colspan=3><%=c.getTotalPrice() %></td>
	</tr>
	
	
	<tr>
	<!--	<td colspan=3>
			 <a href="javascript:document.forms[0].submit()">改动</a> 
		</td>  -->
		<td colspan=6 align="right">
			<a href="">下单</a>		
		</td>
	</tr>
</table>
</form>
</body>
</html>

 

配置好相关文件,在tomcat中公布后,在浏览器中输入http://localhost:8088/shopCart/ShowProducts.jsp 就可以进入产品展示页面,其他操作都能够在页面上完毕!

注意:我使用的tomcatport(8088)被自己改过,假设没改过tomcatport的童鞋,默认port为8080。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119049.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 导入pfx证书

    导入pfx证书打开MicrsoftManangeConsole,你可以按住“Windows+R”,并输入mmc,打开MMC界面。一:添加管理单元(snap-in)从File主菜单中选择“Add/RemoveSnap-in”,打开“AddorRemoveSnap-ins”对话框从左侧的“Availablesnap-ins”列表中选择Certificates,点击”Add>”,打开“Certificatessnap-in”对话框,选择“Computeraccount”:选择snap-

    2022年6月7日
    94
  • 在java中println什么意思_java printf与println

    在java中println什么意思_java printf与println在java中,System.out.println()是我们经常会用到的一个语法,它的作用是将值输出显示在console窗口中,这样程序员就可以在console窗口中看到代码运行的结果。而除了System.out.println()之外,还有其他的打印结果的方法。比如说System.out.print(),这个方法与System.out.println()很像,区别就在于,System.out….

    2022年10月2日
    3
  • Flink教程(30)- Flink VS Spark[通俗易懂]

    Flink教程(30)- Flink VS Spark[通俗易懂]文章目录01引言02FlinkVSSpark2.1运行角色2.2生态2.3运行模型2.4编程模型对比2.5任务调度原理2.6时间机制对比2.7kafka动态分区检测2.7.1SparkStreaming2.7.2Flink2.8容错机制及处理语义2.8.1SparkStreaming保证仅一次处理2.8.2Flink与kafka0.11保证仅一次处理2.9Backpressure背压/反压2.9.1SparkStreaming的背压2.9.2Fli

    2025年6月3日
    2
  • 少年群侠传服务器维护时间,少年群侠传————【维护】7月6日更新维护公告…

    少年群侠传服务器维护时间,少年群侠传————【维护】7月6日更新维护公告…亲爱的玩家:大家好!为了更新游戏内容,提升游戏体验,7k7k《少年群侠传》将于7月6日7:00-10:00对所有服务器进行更新维护,维护期间无法登陆游戏,维护时间预计3小时。如果在维护期间无法完成维护相关事宜,开机时间将继续顺延,如果提前解决问题,也将提前开放服务器。请各位玩家相互转告,并留意游戏开放时间。对于停机期间给您带来的不便,敬请见谅。7k7k《少年群侠传》运营团队感谢所有玩家的支持和配合…

    2022年5月12日
    35
  • 蓝牙协议详解(蓝牙是什么)

    蓝牙协议分析(1)基本概念 蓝牙4.1,是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。而这一切的目的,就是以兼容性和易用性为基础,在功耗和传输速率之间左右为难。1.蓝牙技术的概述1.1两种蓝牙技术:经典蓝牙(检称BT)和低功耗蓝牙(简称BLE) 蓝牙协议包括两种技术:经典蓝牙(简称BT)和低功耗蓝牙(简称BLE)。这两种技术,都包括搜…

    2022年4月10日
    151
  • 年年双十一,年年抢不到,自制Python淘宝秒杀抢购脚本,百分百中[通俗易懂]

    年年双十一,年年抢不到,自制Python淘宝秒杀抢购脚本,百分百中[通俗易懂]大家好,我是不学前端的前端程序员,事情是这个样子的,前几天不是双十一预购秒杀嘛由于我女朋友比较笨,手速比较慢,就一直抢不到,她没抢到特价商品就不开心,她不开心,我也就不能跟着开心,就别提看6号的全球总决赛了为了解决这个问题,就决定写一个自动定时抢购的脚本。第一步:首先我的思路很简单,就是让“程序”帮我们自动打开浏览器,进入淘宝,然后到购物车等待抢购时间,自动购买并支付。第二步:导入模块,我们需要一个时间模块,抢购的时间,还有一个Python的自动化操作。代码如下:importd

    2022年4月29日
    74

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号