购物车的登录界面我之前有写过差不多的,是聊天室登录界面,然后登陆之后通过表单把内容传递到loginmessage.jsp中,在里面会有别的功能,稍后会再讲
首先,要创建一个java类,里面是写的购物商品信息,java中可以使用getter-setter快捷创建,这个就不多赘述了
public class GoodsSingle {
private String no;
private String name;
private float price;
private int num;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
然后创建的是购物显示界面,展示所有售卖的商品,我是使用的jsp来显示的,但是在显示之前,首先要连接数据库,把所有售卖的商品导入到session中然后封装到goodslist中才能够在show界面中展示出来,所以我首先是创建了buyindex.jsp,连接数据库,然后把所有商品进行导入,连接数据库的代码在最开始的时候已经写过了,所以我这里是直接使用的db类来进行操作的
连接数据库,然后从数据库中把商品的编号,名称,价钱一件一件的依次存入goodlist中,然后把所有信息存到session,传递到购物展示的界面show
<%
ArrayList goodlist = new ArrayList();
PreparedStatement ps;
db co = new db();
int i = 0;
ps = co.PreparedStatement("select * from good");
ResultSet r = ps.executeQuery();
while (r.next()) {
GoodsSingle single = new GoodsSingle();
single.setNo(r.getString("no"));
single.setName(r.getString("name"));
single.setPrice(r.getFloat("price"));
single.setNum(1);
goodlist.add(i,single);
i++;
}
%>
<%
session.setAttribute("goodslist", goodlist);
response.sendRedirect("buyshow.jsp");
%>
这里就是show的代码,首先是判断goodlist中是否有商品,如果没有的话,在界面中显示,没有商品可显示,如果有商品,进行循环把所有的商品依次显示在页面上,在每一件商品的后面增加一个购买按钮的超链接,action的内容是buy,然后把购买的商品id也一起传到docar的界面中
<% ArrayList goodslist=(ArrayList)session.getAttribute("goodslist"); %>
<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0">
<tr height="50">
<td colspan="4" align="center">提供的商品如下</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 height="50" align="center">
<td><%=single.getNo()%></td>
<td><%=single.getName()%></td>
<td><%=single.getPrice()%></td>
<td><a href="buydocar.jsp?action=buy&id=<%=i%>">购买</a></td>
</tr>
<%
}
}
%>
<tr height="50">
<td align="center" colspan="4"><a href="buyshopcar.jsp">查看购物车</a></td>
</tr>
</table>
接下来我编写的是购物车展示的界面,首先创建显示的模板,然后判断buylist也就是购物车内是否有商品,没有就输出您的购物车为空,如果不为空则循环把商品的信息显示并且通过total来计算出总价,每个商品后面会有一个超链接,也就是移除的按钮,action为remove之前我试过用id来进行移除,但是可能是因为string,int不一致的原因出错了,所以我这里使用了name来作为移除的依据
下面还有继续购物,清空购物车以及退出保存购物车内容,action是不一样的,不一一赘述了
<%
ArrayList buylist=myCar.getBuylist();
float total=0;
%>
<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0">
<tr height="50"><td colspan="5" align="center">购买的商品如下</td></tr>
<tr align="center" height="30" bgcolor="lightgrey">
<td width="25%">编号</td>
<td>名称</td>
<td>价格(元/斤)</td>
<td>数量</td>
<td>总价(元)</td>
<td>移除(-1/次)</td>
</tr>
<%
if(buylist==null||buylist.size()==0){%>
<tr height="100"><td colspan="5" align="center">您的购物车为空!</td></tr>
<%
}
else{
for(int i=0;i<buylist.size();i++){
GoodsSingle single=(GoodsSingle)buylist.get(i);
String no=single.getNo();
String name=single.getName();
float price=single.getPrice();
int num=single.getNum();
float money=((int)((price*num+0.05f)*10))/10f;
total+=money;
%>
<tr align="center" height="50">
<td><%=no%></td>
<td><%=name%></td>
<td><%=price%></td>
<td><%=num%></td>
<td><%=money%></td>
<td>
<a href="buydocar.jsp?action=remove&name=<%=single.getName()%>">移除</a>
</td>
</tr>
<%
}
}
%>
<tr height="50"align="center"><td colspan="5">应付金额:<%=total%></td></tr>
<tr height="50"align="center">
<td colspan="2"><a href="buyindex.jsp">继续购物</a></td>
<td colspan="3"><a href="buydocar.jsp?action=clear">清空购物车</a></td>
<td colspan="3"><a href="buydocar.jsp?action=save">退出</a></td>
</tr>
</table>