目录

项目前提

数据库的创建

用户表

商品表

eclipse进行创建包和类:

主要实现功能

1、购物车用户登录

2、商品显示

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


一、项目前提

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

2、选择使用的技术:

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

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

cookie

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

二、数据库的创建

用户表

create table shop_user (id number primary key,--用户idaccount varchar2(30) not null,--用户账户password varchar2(30)not null--用户密码
);

商品表

create table shop_goods(id number primary key,--商品idname varchar2(50) not null,--商品名称price number default 0.0,--商品价格info varchar2(255) default '三五产品' not null--商品介绍
);

三、eclipse进行创建包和类:

  • 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

界面效果

代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>Document</title><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css"><script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script><script src="${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: 0px 0px 50px rgba(0, 0, 0, .5);border-radius: 5px;padding: 20px;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);}.btn-group {width: 100%;}.btn-group button {width: 50%;}</style>
</head><body>
<form action="doLogin.jsp" method="post"><h3 class="text-center" style="text-shadow: 2px 2px 1px #ed3f3f;">欢迎光临苡桉超市</h3><div class="form-group"><input name="account" type="text" class="form-control" placeholder="请输入您的用户名"></div><div class="form-group"><input name="password" type="password" class="form-control" placeholder="请输入您的密码"></div><div class="btn-group"><button type="submit" class="btn btn-primary">登录</button><button type="button" class="btn btn-danger">没有账号?</button></div>
</form>
</body>
</html>

doLogin.jsp(处理登录界面)

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

用户实体类User.java

package com.zking.pojo;public class User {private Integer id;private String account;private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(Integer id, String account, String password) {super();this.id = id;this.account = account;this.password = password;}public User() {super();}@Overridepublic String toString() {return "User [id=" + id + ", account=" + account + ", password=" + password + "]";}}

IUserBiz.java (用户逻辑接口) 

package com.zking.biz;import com.zking.pojo.User;
/*** 用户逻辑接口* @author zjjt**/
public interface IUserBiz {User login(User user);
}

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

package com.zking.biz.impl;import com.zking.biz.IUserBiz;
import com.zking.dao.IUserDao;
import com.zking.dao.impl.UserDaoImpl;
import com.zking.pojo.User;
/*** 用户逻辑接口实现类* @author zjjt**/
public class UserBizImpl implements IUserBiz{private IUserDao userDao=new UserDaoImpl();@Overridepublic User login(User user) {User u = userDao.login(user);if(u!=null) {if(u.getPassword().equals(user.getPassword())) {return u;}}return null;}
}

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

package com.zking.dao;import com.zking.pojo.User;
/*** 用户数据访问接口* @author zjjt**/
public interface IUserDao {User login(User user);}

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

package com.zking.dao.impl;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;import com.zking.dao.IUserDao;
import com.zking.pojo.User;
import com.zking.util.DBHelper;public class UserDaoImpl implements IUserDao {private Connection con;private PreparedStatement ps;private ResultSet rs;@Overridepublic User login(User user) {try {con=DBHelper.getCon();ps=con.prepareStatement("select * from shop_user where account=?");ps.setString(1,user.getAccount());rs=ps.executeQuery();if(rs.next()) {User u=new User();u.setId(rs.getInt(1));u.setAccount(rs.getString(2));u.setPassword(rs.getString(3));return u;}} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con, ps, rs);}return null;}
}

2、商品显示

实现效果如下:

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

 Goods.java(商品实体类)

package com.zking.pojo;public class Goods {private Integer id;private String name;private Integer price;private String info;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getPrice() {return price;}public void setPrice(Integer price) {this.price = price;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}public Goods(Integer id, String name, Integer price, String info) {super();this.id = id;this.name = name;this.price = price;this.info = info;}public Goods() {super();}@Overridepublic String toString() {return "Goods [id=" + id + ", name=" + name + ", price=" + price + ", info=" + info + "]";}}

index.jsp(首页代码)

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

IGoodsBiz.java (商品逻辑接口) 

package com.zking.biz;
import java.util.List;
import com.zking.pojo.Goods;
/*** 商品逻辑接口* @author zjjt**/
public interface IGoodsBiz {List<Goods>getAll();//查询单个Goods getOne(Integer id);}

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

package com.zking.biz.impl;import java.util.List;import com.zking.biz.IGoodsBiz;
import com.zking.dao.IGoodsDao;
import com.zking.dao.impl.GoodsDaoImpl;
import com.zking.pojo.Goods;
/*** 商品逻辑接口实现类* @author zjjt**/
public class GoodsBizImpl implements IGoodsBiz {private IGoodsDao goodsDao=new GoodsDaoImpl();@Overridepublic List<Goods> getAll() {return goodsDao.getAll(); }@Overridepublic Goods getOne(Integer id) {return goodsDao.getOne(id);}
}

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

package com.zking.dao;
import java.util.List;
import com.zking.pojo.Goods;
/*** 商品数据访问接口* @author zjjt**/
public interface IGoodsDao {//查询所有List<Goods>getAll();//查询单个Goods getOne(Integer id);
}

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

package com.zking.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.zking.dao.IGoodsDao;
import com.zking.pojo.Goods;
import com.zking.pojo.User;
import com.zking.util.DBHelper;
/*** 访问数据接口实现类* @author zjjt**/
public class GoodsDaoImpl implements IGoodsDao{private Connection con;private PreparedStatement ps;private ResultSet rs;/*** 查询全部商品*/@Overridepublic List<Goods> getAll() {List<Goods>list=new ArrayList<Goods>();try {con=DBHelper.getCon();ps=con.prepareStatement("select * from shop_goods ");rs=ps.executeQuery();while(rs.next()) {Goods goods=new Goods();goods.setId(rs.getInt(1));goods.setName(rs.getString(2));goods.setPrice(rs.getInt(3));goods.setInfo(rs.getString(4));list.add(goods);}return list;} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con, ps, rs);}return list;}/*** 根据id查询商品*/@Overridepublic Goods getOne(Integer id) {try {con=DBHelper.getCon();ps=con.prepareStatement("select * from shop_goods where id=? ");ps.setInt(1, id);rs=ps.executeQuery();if(rs.next()) {Goods goods=new Goods();goods.setId(rs.getInt(1));goods.setName(rs.getString(2));goods.setPrice(rs.getInt(3));goods.setInfo(rs.getString(4));return goods; }} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con, ps, rs);}return null;}
}

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

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

<%@page import="java.util.List"%>
<%@page import="com.zking.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.biz.IGoodsBiz"%>
<%@page import="com.zking.vo.CarItem"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%//添加购物车的页面//拿购物车List<CarItem>car=(List<CarItem>)session.getAttribute("car");IGoodsBiz goodsBiz=new GoodsBizImpl();//1、得知道是那件商品String str=request.getParameter("id");int id=-1;if(str!=null){id=Integer.parseInt(str);}//2-1 判断该商品是否存在boolean f=true;for(CarItem item:car){//item.getGoods().getId()  条目的商品idif(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[如果购物车没有该商品]CarItem carItem=new CarItem();//设置对应的商品数据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(购物车中的每一项,每一个条目)

package com.zking.vo;import com.zking.pojo.Goods;/*** 购物车中的每一项,每一个条目* @author zjjt**/
public class CarItem {private Integer count;//数量private Integer sum;//条目总价private Goods goods;//对应的商品public Integer getCount() {return count;}public void setCount(Integer count) {this.count = count;}public Integer getSum() {return sum;}public void setSum(Integer sum) {this.sum = sum;}public Goods getGoods() {return goods;}public void setGoods(Goods goods) {this.goods = goods;}public CarItem(Integer count, Integer sum, Goods goods) {super();this.count = count;this.sum = sum;this.goods = goods;}public CarItem() {// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "CarItem [count=" + count + ", sum=" + sum + ", goods=" + goods + "]";}}

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


今天的分享就到这里结束啦!!

JavaWeb购物车项目相关推荐

  1. JavaWeb 购物车项目

    今天是基于我们所学的服务器存储端和三层架构来完善该项目,今天先完善一部分的功能. 一.购物车项目思路 1.登录 先创建一个用户表,表中有id,name,pwd三个属性首. 需要具备一个登录页面,一个处 ...

  2. JavaWeb 购物车项目(一)

    今天的学习主要是完成一个购物车项目,该项目中使用servlet完成,对于不知道servlet不知道如何使用的去看servlet的使用该篇文章,该文章中有教大家如何使用servlet. 目录 一.项目所 ...

  3. JavaWeb.购物车项目

    前言:本章纯代码,后期会修改. 一.数据库代码 --用户表 create table shop_user(id number primary key,account varchar2(30) not ...

  4. JavaWeb购物车项目二

  5. javaWeb(购物车项目)

    第一步创建表 car_user 用户表 car_order 订单表 car_order_item 订单项表 car_goods 商品表 可以做一个设置编译码的过滤器,让每个界面都进行过滤,就不用每个界 ...

  6. java开发一个购物车实验,JAVAWEB购物车实验报告.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava JAVAWEB购物车实验报告.doc14页 本文档一共 ...

  7. java购物车项目代码_javaweb练手项目jsp+servlet简易购物车系统

    简易购物车项目 这是一个用intellij IDEA做的简易的javaweb项目,开发环境使用的jdk1.8和tomcat8以及mysql数据库. 1.项目开发准备: 创建github仓库 项目框架搭 ...

  8. JavaWeb完整项目要用到的专业技能

    完成JavaWeb项目用到哪些专业技能?在经典的JavaWeb的开发模式中,我们使用Jsp技术来作为展现层的实现,其实也就是所谓的前端.Web开发中经典的MVC模式,Model-View-Contro ...

  9. 基于IDEA搭建JavaWeb入门项目结构(2021版)

    前言:对于很多从eclipse等IDE迁移到IDEA开发工具的小伙伴,对于如何在IDEA上创建JavaWeb入门项目结构不太了解.或者即使创建成功也能勉强使用也不知其所以然.针对于此,写该篇博客予以总 ...

最新文章

  1. 石墨文档技术总监:敏捷思想在产品周期的延伸
  2. 51nod 1435 位数阶乘 (手动计算)
  3. IOS之提示control may reach end of non-void function
  4. win10系统excel2019单元格显示完整的年月日时分秒设置方法
  5. 蔡先生论道大数据之八: 让他在看小说的时候, 看到喜欢的汽车
  6. java插件安装步骤_eclipse插件安装的四种方法
  7. Gstreamer1.18.4编译(二十六)
  8. python转移矩阵_使用Python / Numpy中的单词构建转换矩阵
  9. 网络故障排除连载之四:OSPF故障排除
  10. html如何在手机打开,HTML怎么在手机打开
  11. 虚拟机启动失败-Intel VT-x 处于禁用状态 的解决方案
  12. ABeam Recruiting | ABeam旗下艾宾信息技术开发(大连)2023届校招正式开启
  13. 男人一定要有自己的事业,才有地位,才有话语权
  14. 五款宝藏浏览器插件推荐,一定要看到最后
  15. c++ socket发送string 、char*字符串,客户端接收到乱码
  16. 以太坊学习笔记(持续更新,欢迎指正)
  17. 计算机英语中poke什么意思,poke one是什么意思
  18. XML Publisher介绍
  19. Cimage类处理图像像素(数据)的3种方式
  20. JS--JavaScript数据类型(数值、字符串、布尔值)详解

热门文章

  1. android speex AEC 回音消除
  2. Python第二天(重点为字符串)
  3. 19 个强大、有趣、又好玩的 Linux 命令!
  4. Iconfont 图标大全 样式和代码对齐
  5. HDU 4262 Juggler (模拟+线段树优化)
  6. TDS协议和FreeTDS开源实现
  7. Deep Learning Paper读后简记
  8. favicon.ico图标
  9. 全媒体运营师胡耀文教你:从0到1搭建直播运营体系
  10. 2022年互联网直播行业研究报告