JavaWeb购物车项目如何开发(javaweb,开发技术)

时间:2024-05-02 18:27:16 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一、项目前提

1、购物车并不是一直放数据库

2、选择使用的技术:

session:(购物车项目使用session)

好处:快(放在内存当中),存对象的
坏处:占用内存,服务器意外待机数据会丢失

cookie

好处:不占用内存,存储很久
坏处:存在客户端上,只能存String,数据有泄露的风险

二、数据库的创建

用户表

createtableshop_user(idnumberprimarykey,--用户idaccountvarchar2(30)notnull,--用户账户passwordvarchar2(30)notnull--用户密码);

商品表

createtableshop_goods(idnumberprimarykey,--商品idnamevarchar2(50)notnull,--商品名称pricenumberdefault0.0,--商品价格infovarchar2(255)default'三五产品'notnull--商品介绍);

三、eclipse进行创建包和类:

JavaWeb购物车项目如何开发

com.zking.util 帮助类com.zking.pojo 实体类com.zking.dao(放dao接口)com.zking.dao.imp (放dao接口实现类)com.zking.biz (业务逻辑层放dao方法)com.zking.biz.imp(业务逻辑层放dao实现类)com.zking.vo (view object 视图对象 前端用)

四、主要实现功能

1、购物车用户登录

login.jsp

界面效果

JavaWeb购物车项目如何开发

代码如下:

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>Document</title><metaname="viewport"content="width=device-width,initial-scale=1"><linkrel="stylesheet"href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css"rel="externalnofollow"rel="externalnofollow"><scriptsrc="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script><scriptsrc="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script><style>*{outline:none!important;}html,body{background:#1abe9c;}form{width:300px;background:#ebeff2;box-shadow:0px0px50pxrgba(0,0,0,.5);border-radius:5px;padding:20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);}.btn-group{width:100%;}.btn-groupbutton{width:50%;}</style></head><body><formaction="doLogin.jsp"method="post"><h4class="text-center">欢迎光临苡桉超市</h4><divclass="form-group"><inputname="account"type="text"class="form-control"placeholder="请输入您的用户名"></div><divclass="form-group"><inputname="password"type="password"class="form-control"placeholder="请输入您的密码"></div><divclass="btn-group"><buttontype="submit"class="btnbtn-primary">登录</button><buttontype="button"class="btnbtn-danger">没有账号?</button></div></form></body></html>

doLogin.jsp(处理登录界面)

<%@pageimport="com.zking.vo.CarItem"%><%@pageimport="java.util.ArrayList"%><%@pageimport="java.util.List"%><%@pageimport="com.zking.pojo.User"%><%@pageimport="com.zking.biz.impl.UserBizImpl"%><%@pageimport="com.zking.biz.IUserBiz"%><%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%request.setCharacterEncoding("UTF-8");Stringaccount=request.getParameter("account");Stringpassword=request.getParameter("password");IUserBizuserBiz=newUserBizImpl();Useruser=userBiz.login(newUser(0,account,password));if(user==null){ response.sendRedirect("login.jsp");}else{ //首页需要登录数据 session.setAttribute("user",user); //分配购物车 List<CarItem>car=newArrayList<>(); //放到session中(把购物车给我) session.setAttribute("car",car); response.sendRedirect("index.jsp");}%>

用户实体类User.java

packagecom.zking.pojo;publicclassUser{privateIntegerid;privateStringaccount;privateStringpassword; publicIntegergetId(){ returnid; } publicvoidsetId(Integerid){ this.id=id; } publicStringgetAccount(){ returnaccount; } publicvoidsetAccount(Stringaccount){ this.account=account; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicUser(Integerid,Stringaccount,Stringpassword){ super(); this.id=id; this.account=account; this.password=password; } publicUser(){ super(); } @Override publicStringtoString(){ return"User[id="+id+",account="+account+",password="+password+"]"; }}

IUserBiz.java (用户逻辑接口)

packagecom.zking.biz;importcom.zking.pojo.User;/***用户逻辑接口*@authorzjjt**/publicinterfaceIUserBiz{Userlogin(Useruser);}

UserBizImpl.java (用户逻辑接口实现类)

packagecom.zking.biz.impl;importcom.zking.biz.IUserBiz;importcom.zking.dao.IUserDao;importcom.zking.dao.impl.UserDaoImpl;importcom.zking.pojo.User;/***用户逻辑接口实现类*@authorzjjt**/publicclassUserBizImplimplementsIUserBiz{ privateIUserDaouserDao=newUserDaoImpl(); @Override publicUserlogin(Useruser){ Useru=userDao.login(user); if(u!=null){ if(u.getPassword().equals(user.getPassword())){ returnu; } } returnnull; }}

IUserDao.java(用户数据访问接口)

packagecom.zking.dao;importcom.zking.pojo.User;/***用户数据访问接口*@authorzjjt**/publicinterfaceIUserDao{ Userlogin(Useruser);}

UserDaoImpl.java(用户数据访问接口实现类)

packagecom.zking.dao.impl;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.List;importcom.zking.dao.IUserDao;importcom.zking.pojo.User;importcom.zking.util.DBHelper;publicclassUserDaoImplimplementsIUserDao{ privateConnectioncon; privatePreparedStatementps; privateResultSetrs; @OverridepublicUserlogin(Useruser){ try{ con=DBHelper.getCon(); ps=con.prepareStatement("select*fromshop_userwhereaccount=?"); ps.setString(1,user.getAccount()); rs=ps.executeQuery(); if(rs.next()){ Useru=newUser(); u.setId(rs.getInt(1)); u.setAccount(rs.getString(2)); u.setPassword(rs.getString(3));returnu; } }catch(Exceptione){e.printStackTrace(); }finally{ DBHelper.close(con,ps,rs); } returnnull;}}

2、商品显示

实现效果如下:

将数据库存放的数据显示在页面上,尊贵的xxx通过session拿到登录的用户名

JavaWeb购物车项目如何开发

Goods.java(商品实体类)

packagecom.zking.pojo;publicclassGoods{ privateIntegerid; privateStringname; privateIntegerprice; privateStringinfo; publicIntegergetId(){ returnid; } publicvoidsetId(Integerid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicIntegergetPrice(){ returnprice; } publicvoidsetPrice(Integerprice){ this.price=price; } publicStringgetInfo(){ returninfo; } publicvoidsetInfo(Stringinfo){ this.info=info; } publicGoods(Integerid,Stringname,Integerprice,Stringinfo){ super(); this.id=id; this.name=name; this.price=price; this.info=info; } publicGoods(){ super(); } @Override publicStringtoString(){ return"Goods[id="+id+",name="+name+",price="+price+",info="+info+"]"; }}

index.jsp(首页代码)

<%@pageimport="com.zking.pojo.Goods"%><%@pageimport="com.zking.biz.impl.GoodsBizImpl"%><%@pageimport="com.zking.biz.IGoodsBiz"%><%@pageimport="com.zking.pojo.User"%><%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>Document</title><metaname="viewport"content="width=device-width,initial-scale=1"><linkrel="stylesheet"href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css"rel="externalnofollow"rel="externalnofollow"><scriptsrc="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script><scriptsrc="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script><style>td:nth-child(3)::before{content:"$";}</style></head><body><%Objectobj=session.getAttribute("user");if(obj==null){ response.sendRedirect("login.jsp");return;}%><divclass="jumbotron"><divclass="container"><h2>欢迎光临苡桉SuperMarket</h2><p>尊贵的<%=((User)obj).getAccount()%></p></div></div><%=session.getAttribute("car")%><divclass="container"><tableclass="table"><tr><th>商品序号</th><th>商品名称</th><th>商品单价</th><th>商品描述</th><th>操作</th></tr><%IGoodsBizgoodsBiz=newGoodsBizImpl();for(Goodsgoods:goodsBiz.getAll()){%><tr><td><%=goods.getId()%></td><td><%=goods.getName()%></td><td><%=goods.getPrice()%></td><td><%=goods.getInfo()%></td><td><divclass="btn-groupbtn-group-xs"><ahref="doAddCar.jsp?id=<%=goods.getId()%>"rel="externalnofollow"class="btnbtn-primary">添加购物车</a></div></td></tr><%}%></table></div></body></html>

IGoodsBiz.java (商品逻辑接口)

packagecom.zking.biz;importjava.util.List;importcom.zking.pojo.Goods;/***商品逻辑接口*@authorzjjt**/publicinterfaceIGoodsBiz{List<Goods>getAll(); //查询单个 GoodsgetOne(Integerid);}

GoodsBizImpl.java (商品逻辑接口实现类)

packagecom.zking.biz.impl;importjava.util.List;importcom.zking.biz.IGoodsBiz;importcom.zking.dao.IGoodsDao;importcom.zking.dao.impl.GoodsDaoImpl;importcom.zking.pojo.Goods;/***商品逻辑接口实现类*@authorzjjt**/publicclassGoodsBizImplimplementsIGoodsBiz{ privateIGoodsDaogoodsDao=newGoodsDaoImpl(); @Override publicList<Goods>getAll(){ returngoodsDao.getAll(); } @Override publicGoodsgetOne(Integerid){ returngoodsDao.getOne(id); }}

IGoodsDao.java (商品数据访问接口)

packagecom.zking.dao;importjava.util.List;importcom.zking.pojo.Goods;/***商品数据访问接口*@authorzjjt**/publicinterfaceIGoodsDao{ //查询所有 List<Goods>getAll(); //查询单个 GoodsgetOne(Integerid);}

GoodsDaoImpl.java (商品数据访问接口实现类)

packagecom.zking.dao.impl;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importjava.util.List;importcom.zking.dao.IGoodsDao;importcom.zking.pojo.Goods;importcom.zking.pojo.User;importcom.zking.util.DBHelper;/***访问数据接口实现类*@authorzjjt**/publicclassGoodsDaoImplimplementsIGoodsDao{ privateConnectioncon; privatePreparedStatementps; privateResultSetrs; /** *查询全部商品 */ @Override publicList<Goods>getAll(){ List<Goods>list=newArrayList<Goods>(); try{ con=DBHelper.getCon(); ps=con.prepareStatement("select*fromshop_goods"); rs=ps.executeQuery(); while(rs.next()){ Goodsgoods=newGoods(); goods.setId(rs.getInt(1)); goods.setName(rs.getString(2)); goods.setPrice(rs.getInt(3)); goods.setInfo(rs.getString(4)); list.add(goods); } returnlist; }catch(Exceptione){ e.printStackTrace(); }finally{ DBHelper.close(con,ps,rs); } returnlist; } /** *根据id查询商品 */ @Override publicGoodsgetOne(Integerid){ try{ con=DBHelper.getCon(); ps=con.prepareStatement("select*fromshop_goodswhereid=?"); ps.setInt(1,id); rs=ps.executeQuery(); if(rs.next()){ Goodsgoods=newGoods(); goods.setId(rs.getInt(1)); goods.setName(rs.getString(2)); goods.setPrice(rs.getInt(3)); goods.setInfo(rs.getString(4)); returngoods; } }catch(Exceptione){ e.printStackTrace(); }finally{ DBHelper.close(con,ps,rs); } returnnull; }}

3、购物车添加&商品总数和价格的计算

doAddCar.java(处理添加购物车的页面)

<%@pageimport="java.util.List"%><%@pageimport="com.zking.biz.impl.GoodsBizImpl"%><%@pageimport="com.zking.biz.IGoodsBiz"%><%@pageimport="com.zking.vo.CarItem"%><%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%//添加购物车的页面//拿购物车List<CarItem>car=(List<CarItem>)session.getAttribute("car");IGoodsBizgoodsBiz=newGoodsBizImpl();//1、得知道是那件商品Stringstr=request.getParameter("id");intid=-1;if(str!=null){ id=Integer.parseInt(str);}//2-1判断该商品是否存在booleanf=true;for(CarItemitem:car){ //item.getGoods().getId()条目的商品id if(id==item.getGoods().getId()){ //商品应该是已经被添加了[购物车中某个条目的商品id和你需要添加的商品id相同了] item.setCount(item.getCount()+1);//数量+1 item.setSum(item.getCount()*item.getGoods().getPrice()); f=false; break; }}//只要判断f是否发生了改变if(f){//2-2、生成一个CarItem[如果购物车没有该商品]CarItemcarItem=newCarItem();//设置对应的商品数据carItem.setGoods(goodsBiz.getOne(id));//数量carItem.setCount(1);//加车数量*商品单价//carItem.getCount()商品加车的数量//carItem.getGoods().getPrice()商品的单价carItem.setSum(carItem.getCount()*carItem.getGoods().getPrice());//将购物条目carItem绑定到购物车car.add(carItem);}//更新购物车session.setAttribute("car",car);//跳回首页response.sendRedirect("index.jsp");%>

CarItem.java(购物车中的每一项,每一个条目)

packagecom.zking.vo;importcom.zking.pojo.Goods;/***购物车中的每一项,每一个条目*@authorzjjt**/publicclassCarItem{ privateIntegercount;//数量 privateIntegersum;//条目总价 privateGoodsgoods;//对应的商品 publicIntegergetCount(){ returncount; } publicvoidsetCount(Integercount){ this.count=count; } publicIntegergetSum(){ returnsum; } publicvoidsetSum(Integersum){ this.sum=sum; } publicGoodsgetGoods(){ returngoods; } publicvoidsetGoods(Goodsgoods){ this.goods=goods; } publicCarItem(Integercount,Integersum,Goodsgoods){ super(); this.count=count; this.sum=sum; this.goods=goods; } publicCarItem(){ //TODOAuto-generatedconstructorstub } @Override publicStringtoString(){ return"CarItem[count="+count+",sum="+sum+",goods="+goods+"]"; }}

效果先简单打印到页面 之后会进行修改

JavaWeb购物车项目如何开发

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:JavaWeb购物车项目如何开发的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Android怎么实现自定义折线图控件下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18