JSP购物车实例_第1页
JSP购物车实例_第2页
JSP购物车实例_第3页
JSP购物车实例_第4页
JSP购物车实例_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目标:l         掌握购物车的信息如何存储;l         掌握购物车常用功能的实现。主要内容:l         首先分析用户上网购物的一般过程;l         介绍采用什么样的数据结构存储购物信息;l 

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

3、。本实例模拟这个过程,但是进行了简化:只能在物品列表中选择物品向购物车中添加。确定购买后,不需要设置交易方式以及付款等。实际处理过程,可以使用我们前面介绍的功能完成。2、 购物车信息组织因为在用户访问网站的整个过程中都可以访问购物车信息,所以购物车对象应该存放在session中。因为用户购买的物品的种类和数量都不确定,所以需要使用一个合适的数据结构存储,我们选择ArrayList。每一种物品都涉及数量,需要进行封装,把物品和数量封装成购物项,使用Item,每个Item对应一种物品以及该种物品的数量。需要编写物品类表示物品的基本信息。参考代码如下:2.1 物品类  

4、  该类中包含两个与分页显示相关的方法。其中用到的DBBean是前面介绍的。package javabean;public class Goods   private String goodsid;   private String goodsname;   private float price;   / 物品编号   public void setGoodsid(String goodsid)      

5、0;  this.goodsid = goodsid;      public String getGoodsid()         return goodsid;      / 物品名称   public void setGoodsname(String goodsname)         this.goodsname = good

6、sname;      public String getGoodsname()         return goodsname;      / 物品价格   public void setPrice(float price)         this.price = price;      public

7、float getPrice()         return price;          public ArrayList getGoodsByPage(int pageNo)               int number = 10;      &#

8、160;       / 每一页显示的记录数              int begin = (pageNo * number) - 9;              int end = pageNo * number;    &

9、#160;         int index = 1;                           DBBean db = new DBBean();        &#

10、160;     / 要返回的结果对象              ArrayList goods = new ArrayList();                        

11、;   String sql = "select * from goods"              ResultSet rs;              try           &#

12、160;         rs = db.executeQuery(sql,null);                     while (rs.next()              

13、               / 在begin之前的记录是不显示的                            if (index < begin)  &

14、#160;                                 index+;                

15、;                   continue;                               

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

17、60;     if (index > end)                                   break;       

18、                     index+;                            String go

19、odsid = rs.getString(1);                            String goodsname = rs.getString(2);             

20、               float price = rs.getFloat(3);                            Goods g = new Goods();&

21、#160;                           g.setGoodsid(goodsid);                   &#

22、160;        g.setGoodsname(goodsname);                            g.setPrice(price);       

23、0;                    goods.add(g);                             &

24、#160;     catch(Exception e)                     e.printStackTrace();              finally    &

25、#160;                db.close();                            return goods;   

26、0;          public Goods findGoodsById(String goodsid)                   try                  / 

27、;编写查询数据库信息的SQL语句             String sql = "select * from goods where goodsid=?"                          

28、 DBBean db = new DBBean();                           ArrayList params = new ArrayList();              par

29、ams.add(goodsid);                            ResultSet rs = db.executeQuery(sql,params);              if(

30、rs.next()                                /String goodsid =rs.getString(1);            

31、0;     String goodsname = rs.getString(2);                  float price = rs.getFloat(3);                   Go

32、ods temp = new Goods();                  temp.setGoodsid(goodsid);                  temp.setGoodsname(goodsname);   

33、;               temp.setPrice(price);                  db.close();             &

34、#160;    return temp;              else                   return null;           

35、;             catch (Exception e)                           return null;         

36、0;         public int getPageCount()               try                      / 编写查询数据库信息的SQL语句&#

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

38、60;    DBBean db = new DBBean();                        ResultSet rs=db.executeQuery(sql,null);            

39、60;           int number=0;                        if(rs.next()            

40、               number = rs.getInt(1);                         db.close();       

41、              return (number - 1) / 10 + 1;                                

42、     catch (Exception e)                      return 0;                     2.2 Item类

43、package javabean;/ 购物项public class Item   private Goods goods;   private int quantity;   public Item(Goods d,int quantity)         this.goods = d;      this.quantity = quantity;      public

44、void setGoods(Goods goods)      this.goods = goods;      public Goods getGoods()         return goods;      public void setQuantity(int quantity)         this.quanti

45、ty = quantity;      public int getQuantity()          return quantity;   3、 物品信息显示功能采用MVC模式,考虑视图部分,不需要输入界面,只需要显示信息的界面。模型部分,在前面的代码中已经实现。控制器部分,需要编写GetAllGoods.java。参考代码分别如下:3.1 界面代码文件名:goodslist.jsp<% page contentType="

46、text/html;charset=gb2312"%><c:if test="$pageNo!=1">       <a href="getAllGoods?pageNo=1">第一页</a>       <a href="getAllGoods?pageNo=$pageNo-1">上一页</a></c:if><c:if t

47、est="$pageNo!=pageCounter">       <a href="getAllGoods?pageNo=$pageNo+1">下一页</a>       <a href="getAllGoods?pageNo=$pageCounter">最后一页</a></c:if><br><table width="2

48、00" border="1" height="56">       <tbody>              <tr>                 

49、0;   <td>                            物品编号                 &

50、#160;   </td>                     <td>                       &#

51、160;    物品名称                     </td>                     <td> 

52、;                           物品价格                     </td>&

53、#160;             </tr>              <c:forEach var="g" items="$goods">            

54、         <tr>                            <td>           &#

55、160;                       $g.goodsid                         

56、60;  </td>                            <td>                 

57、0;                 $g.goodsname                            </td>  

58、60;                         <td>                       

59、0;           $g.price                            </td>         &

60、#160;                  <td>                              &#

61、160;    <a href="addToCart?goodsid=$g.goodsid">添加到购物车</a>                            </td>     &#

62、160;               </tr>              </c:forEach>       </tbody></table>3.2 控制器代package servlet;import javabea

63、n.*;public class GetAllGoods extends HttpServlet   public void doGet(HttpServletRequest request,HttpServletResponse response)     throws IOException,ServletException         /response.setContentType("text/html;charset=gb2312"

64、);      /PrintWriter out = response.getWriter();              / 第一步:获取用户的输入信息      String pageNo=request.getParameter("pageNo");      int iPageNo

65、=1;      if(pageNo!=null)                iPageNo = Integer.parseInt(pageNo);            / 第二步:调用JavaBean      Goods g = new G

66、oods();      ArrayList goods=null;      goods = g.getGoodsByPage(iPageNo);      int pageCount=g.getPageCount();           / out.println("记录数:"+users.size(); 

67、60;    / out.println("当前页码:"+iPageNo);      / out.println("总页码:"+pageCount);           / 第三步:传值      request.setAttribute("goods",goods);  &

68、#160;   request.setAttribute("pageNo",new Integer(iPageNo);      request.setAttribute("pageCounter",new Integer(pageCount);      / 第四步:选择一个界面对用户进行响应      String forward="goodslist.jsp&q

69、uot;      RequestDispatcher rd = request.getRequestDispatcher(forward);      rd.forward(request,response);      public void doPost(HttpServletRequest request,HttpServletResponse response)     throws IOException

70、,ServletException         doGet(request,response);   4、 显示购物车中信息该功能直接从session中获取购物车信息,所以不需要控制器和模型部分,只需要编写显示购物车信息的JSP文件即可,文件名为cart.jsp,参考代码如下:<% page contentType="text/html;charset=gb2312"%>购物车中的信息<br><table border=1> 

71、  <tr>      <td>物品编号</td>      <td>物品名称</td>      <td>价格</td>      <td>数量</td>   </tr><c:forEach var="item" item

72、s="$cart">   <tr>      <td>$item.quantity</td></c:forEach></table>5、 向购物车中添加物品采用MVC模式。首先考虑输入和输出,添加物品的输入就是物品信息列表界面,输出应该是添加后的购物车信息界面(也可以重新回到物品信息界面),这两个界面都不需要编写。考虑模型部分,需要编写购物车管理JavaBean,完成处理。考虑控制器部分,需要获取用户选择的物品,然后添加到调用购物

73、车管理Bean,完成添加。下面是参考代码。5.1 模型部分文件名CartManager.javapackage javabean;public class CartManager   / 表示购物车   private ArrayList cart;   public void setCart(ArrayList cart)         this.cart = cart;      public ArrayLis

74、t getCart()         return cart;        / 添加的物品数量   public ArrayList addToCart(Goods g,int quantity)         if(cart=null)         / 实例化购物车对

75、象         cart=new ArrayList();         / 添加到购物车         Item item = new Item(g,quantity);         cart.add(item);   

76、60;        else               / 转换成数组         Object items = cart.toArray();         boolean find=false; / 表示是否查找到&

77、#160;                 for(int i=0;i<items.length;i+)                      Item temp = (Item)itemsi;   

78、          / 判断购物车中是否存在要添加的物品             if(temp.getGoods().getGoodsid().equals(g.getGoodsid()                 

79、;            temp.setQuantity(temp.getQuantity()+quantity);                find=true;              &

80、#160; break;                               if(!find)                   

81、;  / 添加到购物车            Item item = new Item(g,quantity);           cart.add(item);                   

82、;  return cart;   5.2 控制器部分文件名:AddToCart.javapackage servlet;import javabean.*;public class AddToCart extends HttpServlet   public void doGet(HttpServletRequest request,HttpServletResponse response)     throws IOException,ServletException   /

83、60;      response.setContentType("text/html;charset=gb2312");/       PrintWriter out = response.getWriter();    try      / 得到要添加的物品的编号      String goodsid = request.

84、getParameter("goodsid");      / 创建JavaBean对象      CartManager cartManager=new CartManager();      / 得到session对象      HttpSession session = request.getSession(true);  

85、0;   / 得到购物车对象     ArrayList cart = (ArrayList)session.getAttribute("cart");      / 用cart初始化cartManager      cartManager.setCart(cart);      / 构造物品对象   

86、60;  Goods g = new Goods();      g = g.findGoodsById(goodsid);      / out.println(g.getGoodsid();      cartManager.addToCart(g,1);      / 先把购物车重新存到session      sessi

87、on.setAttribute("cart",cartManager.getCart();    catch(Exception e)      / out.println(e.toString();            response.sendRedirect("cart.jsp");        &

88、#160;  public void doPost(HttpServletRequest request,HttpServletResponse response)     throws IOException,ServletException         doGet(request,response);   6、 Servlet的配置web.xml文件内容如下:<?xml version="1.0" encodin

89、g="UTF-8"?><servlet>        <servlet-name>getAllGoods</servlet-name>        <servlet-class>servlet.GetAllGoods</servlet-class></servlet><servlet-mapping>   

90、0;    <servlet-name>getAllGoods</servlet-name>        <url-pattern>/getAllGoods</url-pattern></servlet-mapping><servlet>        <servlet-name>addToCart</servlet

91、-name>        <servlet-class>servlet.AddToCart</servlet-class></servlet><servlet-mapping>        <servlet-name>addToCart</servlet-name>        <url-patte

92、rn>/addToCart</url-pattern></servlet-mapping></web-app>7、 运行编译所有文件,然后先访问getAllGoods Servlet,然后在物品信息界面上选择物品添加到购物车,之后就可以看到购物车中的信息了。主要内容:l   完成购物车的其他基本功能;l   生成订单;l 小结1、购物车的其它功能对购物车的物品数量修改和物品删除功能是两外两个基本功能。实现过程与添加工程比较类似,这里只给出参考代码:1.1 模型部分文件名:C

93、artManager.java(在上一讲的基础上修改,红色部分为添加的内容)package javabean;public class CartManager   / 表示购物车   private ArrayList cart;   public void setCart(ArrayList cart)         this.cart = cart;      public ArrayList getCart(

94、)         return cart;        / 添加的物品数量   public ArrayList addToCart(Goods g,int quantity)         if(cart=null)         / 实例化购物车对象 

95、60;       cart=new ArrayList();         / 添加到购物车         Item item = new Item(g,quantity);         cart.add(item);     

96、      else               / 转换成数组         Object items = cart.toArray();         boolean find=false; / 表示是否查找到  

97、;                for(int i=0;i<items.length;i+)                      Item temp = (Item)itemsi;    

98、0;        / 判断购物车中是否存在要添加的物品             if(temp.getGoods().getGoodsid().equals(g.getGoodsid()                  

99、60;          temp.setQuantity(temp.getQuantity()+quantity);                find=true;                brea

100、k;                               if(!find)                     /&

101、#160;添加到购物车            Item item = new Item(g,quantity);            cart.add(item);                    re

102、turn cart;      public void delete(String goodsid)         / 转换成Iterator对象      Iterator i = cart.iterator();      while(i.hasNext()          

103、60;    / 得到一个购物项         Item temp = (Item)i.next();         if(temp.getGoods().getGoodsid().equals(goodsid)                &

104、#160;    cart.remove(temp);            break;                     public void update(String goodsid,int quantity)      &

105、#160;  Iterator i = cart.iterator();      while(i.hasNext()               / 得到一个购物项         Item temp = (Item)i.next();       

106、;  if(temp.getGoods().getGoodsid().equals(goodsid)                     temp.setQuantity(quantity);            break;     

107、;                        1.2 修改视图部分文件名:cart.jsp(在上一讲的基础上修改,红色部分为添加的内容)<% page contentType="text/html;charset=gb2312"%>购物车中的信息<br><table border=1>   <

108、tr>      <td>物品编号</td>      <td>物品名称</td>      <td>价格</td>      <td>数量</td>   </tr><c:forEach var="item" items="$ca

109、rt">   <tr><form action="processCart">      <td><input type="text" name="quantity" value="$item.quantity"></td>      <td><input type="submit" n

110、ame="action" value="修改"></td>      <td><input type="submit" name="action" value="删除"></td></form>   </tr></c:forEach></table>1.3 控制器删除和修改功能使用相同的控制器,会根据提交按钮的值确定要完成的功

111、能,参考代码如下:文件名:ProcessCart.javapackage servlet;import javabean.*;public class ProcessCart extends HttpServlet   public void doGet(HttpServletRequest request,HttpServletResponse response)     throws IOException,ServletException        

112、60; /response.setContentType("text/html;charset=gb2312");       /PrintWriter out = response.getWriter();     try                     &#

113、160;                     / request.setCharacterEncoding("gb2312");      / 得到要添加的物品的编号      String goodsid = request.getParameter("

114、goodsid");      / 得到执行命令:删除还是修改      String action = request.getParameter("action");                        &#

115、160;                 action=new String(action.getBytes("8859_1");      /out.println(action);           String quantity=null;  

116、;    if(action.equals("修改")               quantity = request.getParameter("quantity");            / 创建JavaBean对象      Ca

117、rtManager cartManager=new CartManager();      / 得到session对象      HttpSession session = request.getSession(true);      / 得到购物车对象      ArrayList cart = (ArrayList)session.getAttribute("cart");      / 用cart初始化cartManager      cartManager.setCart(cart);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论