JSP购物车实例.docx
- 文档编号:12852396
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:28
- 大小:22.81KB
JSP购物车实例.docx
《JSP购物车实例.docx》由会员分享,可在线阅读,更多相关《JSP购物车实例.docx(28页珍藏版)》请在冰豆网上搜索。
JSP购物车实例
目标:
l 掌握购物车得信息如何存储;
l 掌握购物车常用功能得实现。
主要内容:
l 首先分析用户上网购物得一般过程;
l 介绍采用什么样得数据结构存储购物信息;
l 编写购物界面;
l 完成向购物车添加物品得功能。
1、 用户上网购物得一般过程
在浏览物品得过程中如果对某件物品感兴趣,会添加到购物车(购物篮)中,随时可以查瞧购物车中得信息,如果不想要某件物品得话,可以删除,或者修改某种物品得数量,或者整个清空购物车,可以继续选择物品向购物车中添加。
最后用户可以购物这些物品,经过输入个人得送货地址信息与设定交易方式之后,可以生成订单。
网站得管理员可以对订单进行管理。
DoHav。
本实例模拟这个过程,但就是进行了简化:
只能在物品列表中选择物品向购物车中添加。
确定购买后,不需要设置交易方式以及付款等。
实际处理过程,可以使用我们前面介绍得功能完成。
7aBCR。
2、 购物车信息组织
因为在用户访问网站得整个过程中都可以访问购物车信息,所以购物车对象应该存放在session中。
因为用户购买得物品得种类与数量都不确定,所以需要使用一个合适得数据结构存储,我们选择ArrayList。
ecacd。
每一种物品都涉及数量,需要进行封装,把物品与数量封装成购物项,使用Item,每个Item对应一种物品以及该种物品得数量。
vL7JI。
需要编写物品类表示物品得基本信息。
参考代码如下:
2、1物品类
该类中包含两个与分页显示相关得方法。
其中用到得DBBean就是前面介绍得。
packagejavabean;
importjava、util、ArrayList;
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=? ";QOfiv。 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){ System、out、println(e、toString()); 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=""%> iftest="${pageNo! =1}"> pageNo=1">第一页 pageNo=${pageNo-1}">上一页 if> iftest="${pageNo! =pageCounter}"> pageNo=${pageNo+1}">下一页 pageNo=${pageCounter}">最后一页sJ4Wu。 if> 物品编号 物品名称 物品价格 forEachvar="g"items="${goods}"> ${g、goodsid} ${g、goodsname} ${g、price} goodsid=${g、goodsid}">添加到购物车NGMcL。 forEach>
3、2控制器代
packageservlet;
importjava、io、*;
importjavax、servlet、*;
importjavax、servlet、、*;
importjavabean、*;
importjava、util、*;
publicclassGetAllGoodsextendsServlet
{
publicvoiddoGet(ServletRequestrequest,ServletResponseresponse)Nyj7C。
throwsIOException,ServletException
{
//response、setContentType("text/html;charset=gb2312");8DXWB。
//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));BY2VL。
request、setAttribute("pageCounter",newInteger(pageCount));smdvU。
// 第四步:
选择一个界面对用户进行响应
Stringforward="goodslist、jsp";
RequestDispatcherrd=request、getRequestDispatcher(forward);4Qbv2。
rd、forward(request,response);
}
publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)ym6yT。
throwsIOException,ServletException
{
doGet(request,response);
}
}
4、 显示购物车中信息
该功能直接从session中获取购物车信息,所以不需要控制器与模型部分,只需要编写显示购物车信息得JSP文件即可,文件名为cart、jsp,参考代码如下:
F814z。
<%pagecontentType="text/html;charset=gb2312"%>
<%taglibprefix="c"uri=""%>
购物车中得信息
forEachvar="item"items="${cart}"> forEach> 5、 向购物车中添加物品 采用MVC模式。 首先考虑输入与输出,添加物品得输入就就是物品信息列表界面,输出应该就是添加后得购物车信息界面(也可以重新回到物品信息界面),这两个界面都不需要编写。 XBk4G。 考虑模型部分,需要编写购物车管理JavaBean,完成处理。 考虑控制器部分,需要获取用户选择得物品,然后添加到调用购物车管理Bean,完成添加。 下面就是参考代码。 5、1模型部分 文件名CartManager、java packagejavabean; importjava、util、ArrayList; 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()))OgBKn。 { temp、setQuantity(temp、getQuantity()+quantity); find=true; 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1${item、goods、goodsid} ${item、goods、goodsname} ${item、goods、price} ${item、quantity}