JSP购物车实例.docx

上传人:b****5 文档编号:6142721 上传时间:2023-01-04 格式:DOCX 页数:22 大小:21.65KB
下载 相关 举报
JSP购物车实例.docx_第1页
第1页 / 共22页
JSP购物车实例.docx_第2页
第2页 / 共22页
JSP购物车实例.docx_第3页
第3页 / 共22页
JSP购物车实例.docx_第4页
第4页 / 共22页
JSP购物车实例.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

JSP购物车实例.docx

《JSP购物车实例.docx》由会员分享,可在线阅读,更多相关《JSP购物车实例.docx(22页珍藏版)》请在冰豆网上搜索。

JSP购物车实例.docx

JSP购物车实例

目标:

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

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

主要内容:

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

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

l         编写购物界面;

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

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

在浏览物品的过程中如果对某件物品感兴趣,会添加到购物车(购物篮)中,随时可以查看购物车中的信息,如果不想要某件物品的话,可以删除,或者修改某种物品的数量,或者整个清空购物车,可以继续选择物品向购物车中添加。

最后用户可以购物这些物品,经过输入个人的送货地址信息和设定交易方式之后,可以生成订单。

网站的管理员可以对订单进行管理。

本实例模拟这个过程,但是进行了简化:

只能在物品列表中选择物品向购物车中添加。

确定购买后,不需要设置交易方式以及付款等。

实际处理过程,可以使用我们前面介绍的功能完成。

2、 购物车信息组织

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

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

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

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

参考代码如下:

2.1物品类

    该类中包含两个与分页显示相关的方法。

其中用到的DBBean是前面介绍的。

packagejavabean;

import;

importjava.sql.*;

publicclassGoods

{

  privateStringgoodsid;

  privateStringgoodsname;

  privatefloatprice;

  // 物品编号

  publicvoidsetGoodsid(Stringgoodsid)

  {

     this.goodsid=goodsid;

  }

  publicStringgetGoodsid()

  {

     returngoodsid;

  }

  // 物品名称

  publicvoidsetGoodsname(Stringgoodsname)

  {

     this.goodsname=goodsname;

  }

  publicStringgetGoodsname()

  {

     returngoodsname;

  }

  // 物品价格

  publicvoidsetPrice(floatprice)

  {

     this.price=price;

  }

  publicfloatgetPrice()

  {

     returnprice;

  }

      publicArrayListgetGoodsByPage(intpageNo){

             intnumber=10;

             // 每一页显示的记录数

             intbegin=(pageNo*number)-9;

             intend=pageNo*number;

             intindex=1;

             DBBeandb=newDBBean();

             // 要返回的结果对象

             ArrayListgoods=newArrayList();

             Stringsql="select*fromgoods";

             ResultSetrs;

             try{

                    rs=db.executeQuery(sql,null);

                    while(rs.next()){

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

                           if(index

                                  index++;

                                  continue;

                           }

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

                           if(index>end)

                                  break;

                           index++;

                           Stringgoodsid=rs.getString

(1);

                           Stringgoodsname=rs.getString

(2);

                           floatprice=rs.getFloat(3);

                           Goodsg=newGoods();

                           g.setGoodsid(goodsid);

                           g.setGoodsname(goodsname);

                           g.setPrice(price);

                           goods.add(g);

                    }

             }catch(Exceptione){

                    e.printStackTrace();

             }finally{

                    db.close();

             }

             returngoods;

      }

      publicGoodsfindGoodsById(Stringgoodsid)

       {

          try{

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

           Stringsql="select*fromgoodswheregoodsid=?

";

             DBBeandb=newDBBean();

             ArrayListparams=newArrayList();

             params.add(goodsid);

             ResultSetrs=db.executeQuery(sql,params);

             if(rs.next())

             {

                 //Stringgoodsid=rs.getString

(1);

                 Stringgoodsname=rs.getString

(2);

                 floatprice=rs.getFloat(3);

                 Goodstemp=newGoods();

                 temp.setGoodsid(goodsid);

                 temp.setGoodsname(goodsname);

                 temp.setPrice(price);

                 db.close();

                 returntemp;

             }else{

                 returnnull;

             }

         }catch(Exceptione){

            ;

            returnnull;

      }

    }

      publicintgetPageCount(){

             try{

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

                    Stringsql="selectcount(*)fromgoods";

                         DBBeandb=newDBBean();

                       ResultSetrs=db.executeQuery(sql,null);

                       intnumber=0;

                       if(rs.next())

                          number=rs.getInt

(1);

                       db.close();

                    return(number-1)/10+1;

             }catch(Exceptione){

                    return0;

             }

      }

}

2.2Item类

packagejavabean;

//购物项

publicclassItem

{

  privateGoodsgoods;

  privateintquantity;

  publicItem(Goodsd,intquantity)

  {

     this.goods=d;

     this.quantity=quantity;

  }

  publicvoidsetGoods(Goodsgoods){

     this.goods=goods;

  }

  publicGoodsgetGoods()

  {

     returngoods;

  }

  publicvoidsetQuantity(intquantity)

  {

     this.quantity=quantity;

  }

  publicintgetQuantity()

  {

      returnquantity;

  }

}

3、 物品信息显示功能

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

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

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

参考代码分别如下:

3.1界面代码

文件名:

goodslist.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<%@taglibprefix="c"uri="/jstl/core"%>

iftest="${pageNo!

=1}">

      

pageNo=1">第一页

      

pageNo=${pageNo-1}">上一页

if>

iftest="${pageNo!

=pageCounter}">

      

pageNo=${pageNo+1}">下一页

      

pageNo=${pageCounter}">最后一页

if>


      

             

                    

                            物品编号

                    

                    

                            物品名称

                    

                    

                            物品价格

                    

             

             

forEachvar="g"items="${goods}">

                    

                           

                                  ${g.goodsid}

                           

                           

                                  ${g.goodsname}

                           

                           

                                  ${g.price}

                           

                           

                                  

goodsid=${g.goodsid}">添加到购物车

                           

                    

             

forEach>

      

3.2控制器代

packageservlet;

importjava.io.*;

importjavax.servlet.*;

import;

importjavabean.*;

importjava.util.*;

publicclassGetAllGoodsextendsHttpServlet

{

  publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

    throwsIOException,ServletException

  {

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

     //PrintWriterout=response.getWriter();

     // 第一步:

获取用户的输入信息

     StringpageNo=request.getParameter("pageNo");

     intiPageNo=1;

     if(pageNo!

=null)

     {

         iPageNo=Integer.parseInt(pageNo);

     }

     // 第二步:

调用JavaBean

     Goodsg=newGoods();

     ArrayListgoods=null;

     goods=g.getGoodsByPage(iPageNo);

     intpageCount=g.getPageCount();

     //out.println("记录数:

"+users.size());

     //out.println("当前页码:

"+iPageNo);

     //out.println("总页码:

"+pageCount);

     // 第三步:

传值

     request.setAttribute("goods",goods);

     request.setAttribute("pageNo",newInteger(iPageNo));

     request.setAttribute("pageCounter",newInteger(pageCount));

     // 第四步:

选择一个界面对用户进行响应

     Stringforward="goodslist.jsp";

     RequestDispatcherrd=request.getRequestDispatcher(forward);

     rd.forward(request,response);

  }

  publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

    throwsIOException,ServletException

  {

     doGet(request,response);

  }

}

4、 显示购物车中信息

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

<%@pagecontentType="text/html;charset=gb2312"%>

<%@taglibprefix="c"uri="/jstl/core"%>

购物车中的信息

  

     物品编号

     物品名称

     价格

     数量

  

forEachvar="item"items="${cart}">

  

     ${

     ${

     ${

     ${item.quantity}

forEach>

5、 向购物车中添加物品

采用MVC模式。

首先考虑输入和输出,添加物品的输入就是物品信息列表界面,输出应该是添加后的购物车信息界面(也可以重新回到物品信息界面),这两个界面都不需要编写。

考虑模型部分,需要编写购物车管理JavaBean,完成处理。

考虑控制器部分,需要获取用户选择的物品,然后添加到调用购物车管理Bean,完成添加。

下面是参考代码。

5.1模型部分

文件名CartManager.java

packagejavabean;

import;

publicclassCartManager

{

  // 表示购物车

  privateArrayListcart;

  publicvoidsetCart(ArrayListcart)

  {

     this.cart=cart;

  }

  publicArrayListgetCart()

  {

     returncart;

  }

  // 添加的物品&数量

  publicArrayListaddToCart(Goodsg,intquantity)

  {

     if(cart==null){

        // 实例化购物车对象

        cart=newArrayList();

        // 添加到购物车

        Itemitem=newItem(g,quantity);

        cart.add(item);

     }

     else

     {

        // 转换成数组

        Objectitems[]=cart.toArray();

        booleanfind=false;// 表示是否查找到

        for(inti=0;i

        {

            Itemtemp=(Item)items[i];

            // 判断购物车中是否存在要添加的物品

            if(temp.getGoods().getGoodsid().equals(g.getGoodsid()))

            {

               temp.setQuantity(temp.getQuantity()+quantity);

               find=true;

               break;

            }

        }

        if(!

find)

        {

           // 添加到购物车

           Itemitem=newItem(g,quantity);

          cart.add(item);

        }

     }

     returncart;

  }

}

5.2控制器部分

文件名:

AddToCart.java

packageservlet;

importjava.io.*;

importjavax.servlet.*;

import;

importjavabean.*;

import

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1