JSP实现简易购物商城

一周前开始上手JSP,完成的第一个小项目:简易购物商城+购物车
效果图如下:
购物商城
购物车

具体实现代码如下:

javabean:
MyTools.java(工具类,解决中文乱码问题和string转int)

package com.toolbean;

import java.io.UnsupportedEncodingException;

public class MyTools {
	public static String toChinese(String str) {
		if(str == null) {
			str="";
		}
		try {
			str = new String(str.getBytes("ISO-8859-1"),"gb2312");
		}catch(UnsupportedEncodingException e) {
			str="";
			e.printStackTrace();
		}
		return str;
	}
	public static int strToInt(String str) {
		if(str == null || str.equals("")) {
			str = "0";
		}
		int i = 0;
		try {
			i = Integer.parseInt(str);
		}catch(NumberFormatException e) {
			i = 0;
			e.printStackTrace();
		}
		return i;
	}

}

GoodsSingle.java(商品基类)

package com.valuebean;

public class GoodsSingle {
	private String name;
	private int price;
	private int num;
	public GoodsSingle(String name, int f, int num){
		this.name = name;
		this.price = f;
		this.num = num;
	}
	public GoodsSingle() {
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	

}

GoodsList.java( GoodsSingle的集合类,用于记录商品列表)

package com.valuebean;

import java.util.ArrayList;

public class GoodsList {
	private ArrayList<GoodsSingle> goodsList = new ArrayList<GoodsSingle>();
	
	public ArrayList<GoodsSingle> getGoodList(){
		return this.goodsList;
	}
	public GoodsSingle findGood(int i) {
		return goodsList.get(i);
	}
	public void addGoods(GoodsSingle g) {
		this.goodsList.add(g);
	}
	public void removeGoods(GoodsSingle g) {
		int index = goodsList.indexOf(g);
		this.goodsList.remove(index);
	}
	public void clearGoods() {
		this.goodsList.clear();
	}
}

ShopCar,java(GoodsSingle的集合类,用于记录购物车商品)

package com.valuebean;

import java.util.ArrayList;

import com.toolbean.MyTools;

public class ShopCar {
	private ArrayList<GoodsSingle> buyList = new ArrayList<GoodsSingle>();
	public ArrayList<GoodsSingle> getBuys(){
		return this.buyList;
	}
	public GoodsSingle findGood(int i) {
		return buyList.get(i);
	}
	public void addItem(GoodsSingle g) {
		if(buyList.size() == 0) {
			buyList.add(g);
		}else {
			int i = 0;
			for(; i < buyList.size(); i++) {
				if(g.getName().equals(buyList.get(i).getName())) {
					buyList.get(i).setNum(buyList.get(i).getNum()+1);
					break;
				}
			}
			if(i >= buyList.size()) {
				buyList.add(g);
			}
		}
	}
	public void reduceItem(GoodsSingle g) {
		if(buyList.size() == 0) {
			System.out.println("no item to reduce!");
		}else {
			int i = 0;
			for(; i < buyList.size(); i++) {
				if(g.getName().equals(buyList.get(i).getName())) {
					if(buyList.get(i).getNum() > 1) {
						buyList.get(i).setNum(buyList.get(i).getNum()-1);
						break;
					}else if(buyList.get(i).getNum() == 1) {
						buyList.remove(buyList.get(i));
						break;
					}
				}
			}
		}
	}
	public void removeItem(GoodsSingle g) {
		if(buyList.size() == 0) {
			System.out.println("没有可以删除的选项!");
		}else {
			buyList.remove(g);
		}
	}
	public void clearItem(String name) {
		if(buyList.size() == 0) {
		}else {
			int i = 0;
			for(; i < buyList.size(); i++) {
				if(MyTools.toChinese(name).equals(buyList.get(i).getName())) {
					buyList.remove(i);
				}
			}
		}
	}
	public void clearCar() {
		buyList.clear();
	}
	
	

}

styles.css

@charset "UTF-8";
table{
	border: 1px;
	width: 500px;
	rules: none;
	cellspacing:0px;
	cellpadding:0px;
}
tr{
	height:	50px;
}
td{
	width:100px;
}
a:link {
 text-decoration: none;
}
a:visited {
 text-decoration: none;
}
a:hover {
 text-decoration: none;
}
a:active {
 text-decoration: none;
}

Index.jsp(初始化内容)

<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="com.valuebean.GoodsSingle" %>
<jsp:useBean id="myGoodsList" class="com.valuebean.GoodsList" scope="session" />

<%
		myGoodsList.clearGoods();
		GoodsSingle g1 = new GoodsSingle("苹果",3,1);
		GoodsSingle g2 = new GoodsSingle("香蕉",4,1);
		GoodsSingle g3 = new GoodsSingle("梨",5,1);
		GoodsSingle g4 = new GoodsSingle("橘子",6,1);
		
		myGoodsList.addGoods(g1);
		myGoodsList.addGoods(g2);
		myGoodsList.addGoods(g3);
		myGoodsList.addGoods(g4);	
%>
<%
	response.sendRedirect("ShowGoods.jsp");
%>

ShowGoods.jsp(商品展示界面)

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="com.valuebean.GoodsSingle" %>
<jsp:useBean id="myGoodsList" class="com.valuebean.GoodsList" scope="session"/>
<%
	ArrayList goodsList = myGoodsList.getGoodList();
%>
<!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>购物商城</title>
<link href="css/styles.css" type="text/css" rel="stylesheet" />
</head>
<body>
	<table>
		<tr height="50">
			<td colspan="3" align="center" ><h1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;购物商城</h1></td>
		</tr>
		<tr align="center" height="30" bgcolor="lightgrey">
			<td></td>
			<td>名称</td>
			<td>价格</td>
			<td>购买</td>
		</tr>
		<% if(goodsList == null || goodsList.size() == 0){ %>
		<tr height="100">
			<td colspan="3" align="center">没有商品可以显示!</td>
		</tr>
		<%
		}else{
			for(int i = 0; i < goodsList.size(); i++){
				GoodsSingle single = (GoodsSingle)goodsList.get(i);
		%>
		<tr align="center" height="50">
			<td><a href="DoCar.jsp?action=remove_goods&id=<%=i %>">
					<img src="img/remove.png" width="30" height="30"/>
				</a>
			</td>
			<td><%= single.getName() %></td>
			<td><%= single.getPrice() %></td>
			<td><a href="DoCar.jsp?action=buy&id=<%=i%>">加入购物车</a></td>
		</tr>
		<%
			}
		}
		%>
		<tr align="center" height="50">
			<td align="left" colspan="3">
				<a href="AddGoods.jsp">
				添加商品
				</a>
			</td>
			<td align="right" colspan="3"><a href="ShowCar.jsp">查看购物车</a></td>
		</tr>
		
		
			
	</table>
</body>
</html>

DoCar.jsp(处理相应请求)

<%@page import="com.valuebean.ShopCar"%>
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="com.valuebean.GoodsSingle" %>
<%@ page import="com.toolbean.MyTools" %>
<jsp:useBean id="myCar" class="com.valuebean.ShopCar" scope="session"/>
<jsp:useBean id="myGoodsList" class="com.valuebean.GoodsList" scope="session"/>

<%
	String action = request.getParameter("action");

	if(action == null){
		action = "";
		session.setAttribute("flag", "heiehih");
	}else if(action.equals("buy")){
		int id = MyTools.strToInt(request.getParameter("id"));
		GoodsSingle one = myGoodsList.findGood(id);
		myCar.addItem(one);
		response.sendRedirect("ShowGoods.jsp");
	}else if(action.equals("remove_goods")){
		int id = MyTools.strToInt(request.getParameter("id"));
		GoodsSingle one = myGoodsList.findGood(id);
		myGoodsList.removeGoods(one);
		response.sendRedirect("ShowGoods.jsp");
		
	}else if(action.equals("reduce_cargoods")){
		int id = MyTools.strToInt(request.getParameter("id"));
		GoodsSingle one = myCar.findGood(id);
		myCar.reduceItem(one);
		response.sendRedirect("ShowCar.jsp");
	}else if(action.equals("add_cargoods")){
		int id = MyTools.strToInt(request.getParameter("id"));
		GoodsSingle one = myCar.findGood(id);
		myCar.addItem(one);
		response.sendRedirect("ShowCar.jsp");
	}else if(action.equals("clear_item")){
		int id = MyTools.strToInt(request.getParameter("id"));
		GoodsSingle one = myCar.findGood(id);
		myCar.removeItem(one);
		response.sendRedirect("ShowCar.jsp");
	}else if(action.equals("clear")){
		myCar.clearCar();
		response.sendRedirect("ShowCar.jsp");
	}else{
		response.sendRedirect("ShowGoods.jsp");
	}
%>


AddGoods,jsp(添加商品界面)

<%@page import="com.valuebean.GoodsSingle"%>
<%@page import="com.toolbean.MyTools"%>
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<!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>添加商品</title>
</head>
<body>
	<form action="DoAddGoods.jsp">
		商品名称:<input type="text" name="name" size = "20"/>
		<br>
		商品价格:<input type="text" name="price" size = "20"/> 
		<br>
		<input type="submit" value="添加">
	</form>
</body>
</html>

DoAddGoods.jsp(处理添加商品请求)

<%@page import="com.valuebean.GoodsSingle"%>
<%@page import="com.toolbean.MyTools"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="myGoodsList" class="com.valuebean.GoodsList" scope="session" />
<%
	String name = MyTools.toChinese(request.getParameter("name"));
	int price=MyTools.strToInt(request.getParameter("price"));
	GoodsSingle one = new GoodsSingle(name,price,1);
	myGoodsList.addGoods(one);
	response.sendRedirect("ShowGoods.jsp");
%>


ShowCar.jsp(购物车显示界面)

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="com.valuebean.GoodsSingle" %>
<jsp:useBean id="myCar" class="com.valuebean.ShopCar" scope="session"/>
<%
	ArrayList buyList = myCar.getBuys();
	float total = 0;
%>
<!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=gb2312">
<link href="css/styles.css" type="text/css" rel="stylesheet" />
<title>购物车</title>
</head>
<body>
	<table>
		<tr height="50">
			<td colspan="3" align="center" ><h1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;购物车</h1></td>
		</tr>
		<tr align="center" height="30" bgcolor="lightgrey">
			<td>名称</td>
			<td>价格</td>
			<td>数量</td>
			<td>清除</td>
		</tr>
		<% if(buyList == null || buyList.size() == 0){ %>
		<tr height="100">
			<td colspan="3" align="center">没有商品可以显示!</td>
		</tr>
		<%
		}else{
			for(int i = 0; i < buyList.size(); i++){
				GoodsSingle single = (GoodsSingle)buyList.get(i);
				float money = single.getPrice() * single.getNum();
				total += money;
		%>
		<tr align="center" height="50">
			<td><%= single.getName() %></td>
			<td><%= single.getPrice() %></td>
			<td>
				<a href="DoCar.jsp?action=reduce_cargoods&id=<%=i%>" >
					<img src="img/reduce.png" width="20" height="20"/>
				</a>
				<strong><%=single.getNum()%></strong>
				<a href="DoCar.jsp?action=add_cargoods&id=<%=i%>">
					<img src="img/add.png" width="20" height="20"/>
				</a>
			</td>
			<td><a href="DoCar.jsp?action=clear_item&id=<%=i%>">移除</a></td>
		</tr>
		<%
			}
		}
		%>
		<tr height="50">
			<td colspan="3" align="left" ><h4>应付金额:<%= total %></h4></td>
			<br>
			
		</tr>
		<tr align="center" height="50">
			<td align="left" colspan="3"><a href="ShowGoods.jsp">继续购物</td>
			<td align="right" colspan="3"><a href="DoCar.jsp?action=clear">清空购物车</a></td>
		</tr>
		
		
			
	</table>
</body>
</html>

源码下载点这里

  • 54
    点赞
  • 413
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 35
    评论
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜鹊先生Richard

随缘~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值