jsp java 购物车,JSP购物车实例[一]

目标:

l掌握购物车的信息如何存储;

l掌握购物车常用功能的实现。

主要内容:

l首先分析用户上网购物的一般过程;

l介绍采用什么样的数据结构存储购物信息;

l编写购物界面;

l完成向购物车添加物品的功能。

1、用户上网购物的一般过程

在浏览物品的过程中如果对某件物品感兴趣,会添加到购物车(购物篮)中,随时可以查看购物车中的信息,如果不想要某件物品的话,可以删除,或者修改某种物品的数量,或者整个清空购物车,可以继续选择物品向购物车中添加。最后用户可以购物这些物品,经过输入个人的送货地址信息和设定交易方式之后,可以生成订单。网站的管理员可以对订单进行管理。

本实例模拟这个过程,但是进行了简化:只能在物品列表中选择物品向购物车中添加。确定购买后,不需要设置交易方式以及付款等。实际处理过程,可以使用我们前面介绍的功能完成。

2、购物车信息组织

因为在用户访问网站的整个过程中都可以访问购物车信息,所以购物车对象应该存放在session中。

因为用户购买的物品的种类和数量都不确定,所以需要使用一个合适的数据结构存储,我们选择ArrayList。

每一种物品都涉及数量,需要进行封装,把物品和数量封装成购物项,使用Item,每个Item对应一种物品以及该种物品的数量。

需要编写物品类表示物品的基本信息。

参考代码如下:

2.1 物品类

该类中包含两个与分页显示相关的方法。其中用到的DBBean是前面介绍的。

package javabean;

import java.util.ArrayList;

import java.sql.*;

public class Goods

{

private String goodsid;

private String goodsname;

private float price;

//物品编号

public void setGoodsid(String goodsid)

{

this.goodsid = goodsid;

}

public String getGoodsid()

{

return goodsid;

}

//物品名称

public void setGoodsname(String goodsname)

{

this.goodsname = goodsname;

}

public String getGoodsname()

{

return goodsname;

}

//物品价格

public void setPrice(float price)

{

this.price = price;

}

public float getPrice()

{

return price;

}

public ArrayList getGoodsByPage(int pageNo) {

int number = 10;

//每一页显示的记录数

int begin = (pageNo * number) - 9;

int end = pageNo * number;

int index = 1;

DBBean db = new DBBean();

//要返回的结果对象

ArrayList goods = new ArrayList();

String sql = "select * from goods";

ResultSet rs;

try{

rs = db.executeQuery(sql,null);

while (rs.next()) {

//在begin之前的记录是不显示的

if (index < begin) {

index++;

continue;

}

//在end之后的记录也不显示

if (index > end)

break;

index++;

String goodsid = rs.getString(1);

String goodsname = rs.getString(2);

float price = rs.getFloat(3);

Goods g = new Goods();

g.setGoodsid(goodsid);

g.setGoodsname(goodsname);

g.setPrice(price);

goods.add(g);

}

}catch(Exception e){

e.printStackTrace();

}finally{

db.close();

}

return goods;

}

public Goods findGoodsById(String goodsid)

{

try {

//编写查询数据库信息的SQL语句

String sql = "select * from goods where goodsid=?";

DBBean db = new DBBean();

ArrayList params = new ArrayList();

params.add(goodsid);

ResultSet rs = db.executeQuery(sql,params);

if(rs.next())

{

//String goodsid =rs.getString(1);

String goodsname = rs.getString(2);

float price = rs.getFloat(3);

Goods temp = new Goods();

temp.setGoodsid(goodsid);

temp.setGoodsname(goodsname);

temp.setPrice(price);

db.close();

return temp;

}else{

return null;

}

} catch (Exception e) {

System.out.println(e.toString());

return null;

}

}

public int getPageCount() {

try {

//编写查询数据库信息的SQL语句

String sql = "select count(*) from goods";

DBBean db = new DBBean();

ResultSet rs=db.executeQuery(sql,null);

int number=0;

if(rs.next())

number = rs.getInt(1);

db.close();

return (number - 1) / 10 + 1;

} catch (Exception e) {

return 0;

}

}

}

2.2 Item类

package javabean;

// 购物项

public class Item

{

private Goods goods;

private int quantity;

public Item(Goods d,int quantity)

{

this.goods = d;

this.quantity = quantity;

}

public void setGoods(Goods goods){

this.goods = goods;

}

public Goods getGoods()

{

return goods;

}

public void setQuantity(int quantity)

{

this.quantity = quantity;

}

public int getQuantity()

{

return quantity;

}

}

3、物品信息显示功能

采用MVC模式,考虑视图部分,不需要输入界面,只需要显示信息的界面。

模型部分,在前面的代码中已经实现。

控制器部分,需要编写GetAllGoods.java。

参考代码分别如下:

3.1 界面代码

文件名:goodslist.jsp

第一页

上一页

下一页

最后一页

物品编号

物品名称

物品价格

${g.goodsid}

${g.goodsname}

${g.price}

添加到购物车

3.2 控制器代

package servlet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javabean.*;

import java.util.*;

public class GetAllGoods extends HttpServlet

{

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws IOException,ServletException

{

//response.setContentType("text/html;charset=gb2312");

//PrintWriter out = response.getWriter();

//第一步:获取用户的输入信息

String pageNo=request.getParameter("pageNo");

int iPageNo=1;

if(pageNo!=null)

{

iPageNo = Integer.parseInt(pageNo);

}

//第二步:调用JavaBean

Goods g = new Goods();

ArrayList goods=null;

goods = g.getGoodsByPage(iPageNo);

int pageCount=g.getPageCount();

// out.println("记录数:"+users.size());

// out.println("当前页码:"+iPageNo);

// out.println("总页码:"+pageCount);

//第三步:传值

request.setAttribute("goods",goods);

request.setAttribute("pageNo",new Integer(iPageNo));

request.setAttribute("pageCounter",new Integer(pageCount));

//第四步:选择一个界面对用户进行响应

String forward="goodslist.jsp";

RequestDispatcher rd = request.getRequestDispatcher(forward);

rd.forward(request,response);

}

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws IOException,ServletException

{

doGet(request,response);

}

}

4、显示购物车中信息

该功能直接从session中获取购物车信息,所以不需要控制器和模型部分,只需要编写显示购物车信息的JSP文件即可,文件名为cart.jsp,参考代码如下:

购物车中的信息

物品编号物品名称价格数量
${item.goods.goodsid}${item.goods.goodsname}${item.goods.price}${item.quantity}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值