1、目标:l 掌握购物车的信息如何存储;l 掌握购物车常用功能的实现。主要内容:l 首先分析用户上网购物的一般过程;l 介绍采用什么样的数据结构存储购物信息;l 编写购物界面;l 完成向购物车添加物品的功能。1、 用户上网购物的一般过程在浏览物品的过程中如果对某件物品感兴趣,会添加到购物车(购物篮)中,随时可以查看购物车中的信息,如果不想要某件物品的话,可以删除,或者修改某种物品的数量,或者整个清空购物车,可以继续选择物品向购物车中添加。最后用户可以购物这些物品,经过输入个人的送货地址信息和设定交易方式之后,可以生成订单。网站的管理员可以对订单进行管理。本实例模拟这个过程,但是进行了简化:只能在物
2、品列表中选择物品向购物车中添加。确定购买后,不需要设置交易方式以及付款等。实际处理过程,可以使用我们前面介绍的功能完成。2、 购物车信息组织因为在用户访问网站的整个过程中都可以访问购物车信息,所以购物车对象应该存放在 session 中。因为用户购买的物品的种类和数量都不确定,所以需要使用一个合适的数据结构存储,我们选择 ArrayList。每一种物品都涉及数量,需要进行封装,把物品和数量封装成购物项,使用 Item,每个 Item 对应一种物品以及该种物品的数量。需要编写物品类表示物品的基本信息。参考代码如下:2.1 物品类该类中包含两个与分页显示相关的方法。其中用到的 DBBean 是前面
3、介绍的。package javabean;import java.util.ArrayList;import java.sql.*;public class Goodsprivate 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 go
4、odsname)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 * nu
5、mber;int index = 1;DBBean db = new DBBean();/ 要返回的结果对象ArrayList goods = new ArrayList();String sql = “select * from goods“;ResultSet rs;tryrs = db.executeQuery(sql,null);while (rs.next() / 在 begin 之前的记录是不显示的if (index end)break;index+;String goodsid = rs.getString(1);String goodsname = rs.getString(2
6、);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();finallydb.close();return goods;public Goods findGoodsById(String goodsid)try / 编写查询数据库信息的 SQL 语句String sql = “select * from goods
7、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);t
8、emp.setGoodsname(goodsname);temp.setPrice(price);db.close();return temp;elsereturn 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(sq
9、l,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 Itemprivate Goods goods;private int quantity;public Item(Goods d,int quantity)this.goods = d;this.quantity = quantity;public void
10、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
11、.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 HttpServletpublic void doGet(HttpServletRequest request,HttpServletRespo
12、nse 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);/ 第二步:调用 JavaBeanGoods g = new Goo
13、ds();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.setAttrib
14、ute(“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,ServletExceptiondoGet(req
15、uest,response);4、 显示购物车中信息该功能直接从 session 中获取购物车信息,所以不需要控制器和模型部分,只需要编写显示购物车信息的 JSP 文件即可,文件名为 cart.jsp,参考代码如下:购物车中的信息物品编号物品名称价格数量$item.goods.goodsid$item.goods.goodsname$item.goods.price$item.quantity5、 向购物车中添加物品采用 MVC 模式。首先考虑输入和输出,添加物品的输入就是物品信息列表界面,输出应该是添加后的购物车信息界面(也可以重新回到物品信息界面),这两个界面都不需要编写。考虑模型部分,需
16、要编写购物车管理 JavaBean,完成处理。考虑控制器部分,需要获取用户选择的物品,然后添加到调用购物车管理 Bean,完成添加。下面是参考代码。5.1 模型部分文件名 CartManager.javapackage javabean;import java.util.ArrayList;public class CartManager/ 表示购物车private ArrayList cart;public void setCart(ArrayList cart)this.cart = cart;public ArrayList getCart()return cart;/ 添加的物品数量p
17、ublic ArrayList addToCart(Goods g,int quantity)if(cart=null)/ 实例化购物车对象cart=new ArrayList();/ 添加到购物车Item item = new Item(g,quantity);cart.add(item);else/ 转换成数组Object items = cart.toArray();boolean find=false; / 表示是否查找到for(int i=0;igetAllGoodsservlet.GetAllGoodsgetAllGoods/getAllGoodsaddToCartservlet.AddToCartaddToCart/addToCart7、 运行编译所有文件,然后先访问 getAllGoods Servlet,然后在物品信息界面上选择物品添加到购物车,之后就可以看到购物车中的信息了。主要内容:l 完成购物车的其他基本功能;l 生成订单;l 小结1、购物车的其它功能对购物车的物品数量修改和物品删除功能是两外两个基本功能。实现过程与添加工程比较类似,这里只给出参考代码:1.1 模型部分
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。