一周前开始上手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 goodsList = new ArrayList();
public ArrayList 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 buyList = new ArrayList();
public ArrayList 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();
%>
<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> 购物商城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"%>
<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;
%>
<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> 购物车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>