学习Java Web实训项目:西蒙购物网

一、网站功能需求

1、只有注册用户成功登录后才可查看商品类别,查看商品,选购商品,生成订单、查看订单
2、只有管理员才有权限进入购物网后台管理(用户管理 + 类别管理 + 商品管理 + 订单管理)

二、网站设计思路

(一)设计模式

分层架构:展现层(JSP)<——>控制层(Controller)<——>业务层(Service)<——>数据访问层(Dao)<——>数据库(DB)

(二)网站前台

登录——显示商品类别——显示某类商品信息——查看购物车——生成订单——支付
注册<——>登录
(三)网站后台
1、用户管理
查看用户
添加用户
修改用户
删除用户
2、类别管理
查看类别
添加类别
修改类别
删除类别
3、商品管理
查看商品
添加商品
修改商品
删除商品
4、订单管理
查看订单
删除订单

(四)购物流程图

管理员登录成功,进入后台管理
普通用户登录成功,进入前台购物

三、网站运行效果

在这里插入图片描述

四、网站实现步骤

(一)创建数据库与表
1、创建数据库
数据库 - simonshop
在这里插入图片描述

2、创建用户表
创建用户表结构 - t_user
在这里插入图片描述

在用户表里插入记录
在这里插入图片描述

查看用户表
在这里插入图片描述

3、创建类别表
创建类别表结构 - t_category

在这里插入图片描述

在类别表里插入记录

在这里插入图片描述

查看类别表记录
在这里插入图片描述

4、创建商品表
创建商品表结构 - t_product
在这里插入图片描述

在商品表里插入记录

在这里插入图片描述

查看商品表记录
在这里插入图片描述

5、创建订单表
创建订单表结构 - t_order
在这里插入图片描述

在订单表里插入记录
在这里插入图片描述

查看订单表记录
在这里插入图片描述

(二)创建Web项目

1、创建Web项目
创建Java Enterprise项目,添加Web Application功能
在这里插入图片描述

设置项目名称与保存位置
在这里插入图片描述

单击【Finish】按钮
在这里插入图片描述

2、修改Artifact名称
将Artifact名称改为simonshop
在这里插入图片描述

3、重新部署项目
先移除,后添加,重新部署项目
在这里插入图片描述

切换到【Server】选项卡
在这里插入图片描述

4、编辑首页
首页 - index.jsp
在这里插入图片描述

5、启动应用,查看效果
启动服务器,显示首页
在这里插入图片描述

(三)创建实体类

创建四个实体类:User、Category、Product与Order,与四张表t_user、t_category、t_product与t_order一一对应。ORM(Object Relation Mapping)——对象关系映射。
1、创建用户实体类
创建net.huawei.shop.bean包,在包里创建User类
在这里插入图片描述

2、创建类别实体类
在net.huawei.shop.bean包里创建Category类
在这里插入图片描述

3、创建商品实体类
在net.huawei.shop.bean包里创建Product类
在这里插入图片描述

4、创建订单实体类
在net.huawei.shop.bean包里创建Order类
在这里插入图片描述

(四)创建数据库工具类
1、添加数据库驱动程序包
在\WEB-INF里创建lib子目录,添加MySQL驱动程序的jar包
在这里插入图片描述

将数据库驱动程序包作为库添加到项目

在这里插入图片描述

2、创建数据库连接管理类
创建net.huawei.shop.dbutil包,在里面创建ConnectionManager类
在这里插入图片描述

3、测试数据库连接是否成功
运行程序,查看结果
在这里插入图片描述

4、数据库连接的常见错误
(1)数据库驱动程序名称错误
数据库驱动程序名称写错
在这里插入图片描述

(2)未知数据库没错误
数据库名称写错
在这里插入图片描述

(3)数据库连接密码错误
数据库密码写错
在这里插入图片描述

(五)创建数据访问接口

1、创建用户数据访问接口
在net.huawei.shop根包里创建dao子包,在子包里创建UserDao接口
在这里插入图片描述

2、创建类别数据访问接口
在net.huawei.shop.dao包里创建CategoryDao接口

在这里插入图片描述

3、创建商品数据访问接口
在net.huawei.shop.dao包里创建ProductDao接口

在这里插入图片描述

4、创建订单数据访问接口
在net.huawei.shop.dao包里创建OrderDao接口
在这里插入图片描述

(六)创建数据访问接口实现类

1、创建用户数据访问接口实现类
在net.huawei.shop.dao包里创建impl子包,在子包里创建UserDaoImpl类
在这里插入图片描述

实现UserDao接口
在这里插入图片描述

按 + + <-> 收拢代码
在这里插入图片描述

1_、对用户数据访问接口实现类做单元测试
我们需要对用户数据访问接口实现类的各个方法进行单元测试,采用JUnit来进行单元测试。
在项目根目录创建一个test文件夹,然后在项目结构窗口里将其标记为"Tests",这样文件夹颜色变成绿色。
在这里插入图片描述

于是项目里有了一个绿色的测试文件夹 - test
在这里插入图片描述

在test文件夹里创建net.huawei.shop.dao.impl包,在里面创建TestUserDaoImpl类
在这里插入图片描述

(1)编写测试登录方法
给测试方法添加@Test注解,会报错
在这里插入图片描述

添加单元测试JUnit到项目,将光标移到@Test注解上,按Alt + Enter组合键
在这里插入图片描述

单击【Add ‘JUnit4’ to classpath】
在这里插入图片描述

单击【OK】按钮
在这里插入图片描述

运行testLogin()方法,查看结果
在这里插入图片描述

修改登录密码,再进行单元测试,会显示登录失败
在这里插入图片描述

(2)编写按标识符查询用户方法

运行testFindById()方法,查看结果
在这里插入图片描述

修改标识符变量,再运行测试方法,查看结果
在这里插入图片描述

(3)编写按用户名查询用户方法

运行testFindByUsername()方法,查看结果
在这里插入图片描述

修改待查用户名,再运行测试方法,查看结果
在这里插入图片描述

(4)编写查询全部用户方法

运行testFindAll()方法,查看结果
在这里插入图片描述

(5)编写测试插入用户方法

运行testInsert()方法,查看结果
在这里插入图片描述

在Navitcat里查看用户表
在这里插入图片描述

(6)编写测试更新用户方法

运行testUpdate()方法,查看结果
在这里插入图片描述

在Navicat里查看用户表
在这里插入图片描述

如果不设置用户的标识符,那么更新用户记录就会失败
在这里插入图片描述

(7)编写测试按标识符删除用户方法

运行testDeleteById()方法,查看结果

在Navicat里查看用户表,看还有没有id = 5的用户记录

再次运行testDeleteById()方法,查看结果

思考题
如何避免插入同名用户?插入同名用户时,提示用户名已存在。
如何避免更新用户记录时注册时间在当前时间之后的问题?
2、创建类别数据访问接口实现类
在net.huawei.shop.dao.impl包里创建CategoryDaoImpl类

实现CategoryDao接口

(1)编写插入类别方法

(2)编写按标识符删除类别方法

(3)编写更新类别方法

(4)编写按标识符查询类别方法

(5)编写查询全部类别方法

2_、对类别数据访问接口对象做单元测试
在测试文件夹的net.huawei.shop.dao.impl包里创建TestCategoryDaoImpl类

(1)编写测试按标识符查询类别方法

运行testFindById()方法,查看结果

修改标识符变量值,再运行测试方法,查看结果

判断集合categories是否为空,可以有两种处理方式

运行testFindAll()方法,查看结果

(3)编写测试插入类别方法

运行testInsert()方法,查看结果

在Navicat里查看类别表

(4)编写测试更新类别方法

运行testUpdate()方法,查看结果

在Naviat里查看类别表

如果传入更新方法的类别对象没有设置id值,更新就会失败

(5)编写测试删除类别方法

运行testDeleteById()方法,查看结果

在Navicat里查看类别表

3、编写商品数据访问接口实现类
在net.huawei.shop.dao.impl包里创建ProductDaoImpl类

实现ProductDao接口

(1)编写插入商品方法

(2)编写按标识符删除商品方法

(3)编写更新商品方法

(4)编写按标识符查询商品方法

(5)编写按类别标识符查询商品方法

(6)编写查询全部商品方法

3_、对商品数据访问接口对象做单元测试
在test里的net.huawei.shop.dao.impl包里创建TestProductDaoImpl类

(1)编写按标识符查询商品方法

运行testFindById()方法,查看结果

修改标识符变量值,再运行testFindById()方法,查看结果

(2)编写测试按类别标识符查询商品方法
@Test // 按类别标识符查询商品
public void testFindByCategoryId() {
// 定义类别标识符变量
int categoryId = 2;
// 创建商品数据访问接口对象
ProductDao productDao = new ProductDaoImpl();
// 调用商品数据访问接口对象的按类别标识符查询商品方法
List products = productDao.findByCategoryId(categoryId);
// 判断指定类别里是否有商品
if (products.size() > 0) { // 有商品
products.forEach(product -> System.out.println(product));
} else { // 没商品
System.out.println(“类别编号为[” + categoryId + “]的商品未找到~”);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
运行testFindByCategoryId()方法,查看结果

修改类别标识符变量值,再运行testFindByCategoryId()方法,查看结果

(3)编写测试查询全部商品方法

运行testFindAll()方法,查看结果

(4)编写测试插入商品方法

运行testInsert()方法,查看结果

在Navicat里查看商品表

(5)编写测试更新商品方法

运行testUpdate()方法,查看结果

在Navicat里查看商品表

如果不设置商品标识符,那么就会更新失败

(6)编写测试删除商品方法

运行testDeleteById()方法,查看结果

在Navicat里查看商品表

4、创建订单数据访问接口实现类
在net.huawei.shop.dao.impl包里创建OrderDaoImpl类

实现OrderDao接口

(1)编写插入订单方法

(2)编写按标识符删除订单方法

(3)编写更新订单方法

(4)编写按标识符查询订单方法

(5)编写查询最后一个订单方法

(6)编写查询全部订单方法

4_、对订单数据访问接口对象做单元测试
在test里的net.huawei.shop.dao.impl包里创建TestOrderDaoImpl类

(1)编写按标识符查询订单方法

运行testFindById()方法,查看结果

(七)创建数据访问服务类
1、创建用户服务类
在net.huawei.shop包里创建service子包,在子包里创建UserService类

在这里插入图片描述

2、创建类别服务类
在net.huawei.shop.service包里创建CategoryService类

在这里插入图片描述

3、创建商品服务类
在net.huawei.shop.service包里创建ProductService类
在这里插入图片描述

4、创建订单服务类
在net.huawei.shop.service包里创建OrderService
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值