课设-图书购物系统-逻辑实现

由于时间紧张,修改之前项目,技术:jsp+springboot+mybatis_plus
项目使用的MVC三层:Controller,service,mapper

主页面:

用户体验流程:
登录商城后,进入主页面,显示最新和热门的图书。
代码逻辑:
在controller中调用service方法,将查到的图书封装到request域中,跳转到主页面然后显示。
Service调用controller
Mapper中查询图书。

验证码模块:

用户体验逻辑:用户在注册和登录时需要输入验证码,验证码对了才能进行下一个
代码逻辑:
用jsp绘制一个验证码,然后把验证码的值放入session域中。
在登录和注册的controller中,需要把用户输入的验证码和jsp绘制的验证码进行判断,如果相同,则通过,不同则报错返回。
客户端如果看不清验证码,可以点击刷新逻辑:在有验证码的标签或一个超链接中添加事件(加入js方法名)在点击图片或超链接时触发事件(也就是执行该js方法)方法内容获取验证码图片的文本节点给文本节点的src属性设置值,在访问的路径后面加一个参数,值为当前时间.

注册模块:

用户体验流程:
注册界面-输入信息和验证码后点击注册
代码逻辑:
Controller中获得数据,调用service方法,成功跳转到注册成功页面。失败跳转到注册页面,显示失败信息。
Service中进行验证码校验,没有问题,调用mapper方法插入数据。
Mapper中插入用户数据。

登录模块:

用户体验流程登录页面-填写表单登录数据-点击登录按钮-到主页面
代码逻辑:
在controller中获得数据,将用户信息放入session域中。调用service方法,成功跳转到登录成功页面。失败跳转到登录页面,显示失败信息。
Service中进行用户名密码验证,验证码判断验证
Mapper中根据用户名密码查询数据

分类显示模块:

用户体验流程:
用户进入主页面后,显示不同的分类,点击不同的分类,显示不同的图书信息
代码逻辑:
前台用了ajax,通过json传输数据。调用后台的controller方法
Controller中,调用service方法,把数据的结果返回主页面。
Service调用mapper
Mapper中查询所有分类
Mapper中根据分类id查询所有图书
图书分页显示模块:
用户体验:用户查询的图书信息是分页的
代码逻辑:
设置一个PageBean
里面的属性
数据集合list
当前页数
数据总数量
每页显示的数量
总页数
其中总页数等于
总数量%每页显示的数量==0?总数量/每页显示的数量:总数量/每页显示的数量+1;

jsp:
需要显示第一页,最后一页,总页数
判断是否为第一页,如果为第一页,则没有上一页这个选项
判断是否为最后一页,如果有最后一页,则没有下一页这个选项

Controller:
1.获取传入的页数
2…通过查询数据库获取pageBean
3.将查到的pageBean放入request域中
4.转发到显示页面

Service
获取传入的页数
调用mapper中的方法,查询出数据集合list
封装pageBean对象
返回pageBean对象

Mapper
查询有关数据。
用到sql语句的limit字段((当前页数-1)*每页显示的数量,每页显示的数量);

购物车模块:

用户体验流程
用户登录后,进入每个图书的具体信息页面,点击加入购物车,然后可以点击我的购物车进行查看,可以在购物车中删除一个条目,也可以清空整个购物车。

购物车是放在session中的,所以还要在每个用户刚开始登录的时候就创建一个购物车,然后放入session域中。

cart和cartitem实体类的创建
cartietm中的属性为book类和count数量
方法:
小计:用数量乘以书的单价
cart中有个map集合,key为book的bid,value为cartitem
cart中的方法;
添加:如果进来的cartitem在购物车中已经有了,那么只须要增加订单数量
如果没有,则map.put(key);
清空:map.clean();
移除一个购物项:map.remove(key);

逻辑代码:
用户进入图书具体信息页面后,点击添加到购物车;跳转到controller中
添加方法:
通过传入的bid和count获取book对象和购买的产品数量
从session中取出cart对象
创建一个cartitem对象
封装cartitem对象
把cartiemt对象封装到cart中
返回到购物车页面

购物车的删除购物项目和清空购物车都是直接调用controller 中对应的方法,
先在session中获取cart,然后调用cart类中对应的方法

订单模块:

用户体验流程:用户在购物车页面,点击购买后,进入订单详细页面。在主页面用户可以点击我的订单查看该用户所有的订单,进入订单列表页面后,可以对订单进行订单的删除,进入付款页面,以及订单的状态修改。
代码逻辑:
查询我的订单:
订单中包含了很多的订单项,每个订单都包含很多订单项
Controller调用service方法查询订单
Service中嗲用mapper的方法,然后封装订单的所有信息,然后返回给controller
Mapper中关联查询orderitem表和book表,结果放入一个List集合中。
Mapper中查询order表。

修改订单:

Controller获取订单信息调用service方法修改订单
Service调用mapper
Mapper中根据订单id修改订单

订单的删除
没有真的删除,而且在数据库加了一个deleted字段,逻辑删除。默认给deleted字段赋值为0。
如果用户点击了删除订单,则只需要改deleted字段的状态为1.
查询订单时加条件where deleted=0;

文件上传模块:

注意:表单类型需要设置
method=“post”
enctype=“multipart/form-data”
Controller中直接使用SpringMVC封装好的MultipartFile
需要获得文件的名字
设置上传路径
如果上传的服务器路径的文件夹没有,需要创建
调用封装好的file.transferTo(“路径+文件名”)方法上传

过滤器和拦截器模块
项目用了过滤器和拦截器,拦截器是用在前台用户点击图书购物的时候,如果没有登录,则会提示去登录。过滤器用在了后台管理主页面,如果后台管理员没有登录,则不允许访问后台的jsp。
代码逻辑:
1.在springboot的@configuratio配置类中实现WebMvcConfigurer接口
2.分别添加过滤器和拦截器的@bean
3.在过滤器和拦截器类中实现逻辑:
在session域中获取相应的值,如果没有,则说明没有登录过,便过滤/拦截。并跳转登录页面。如果有,则放行。

过滤器可以过滤页面和controller类,拦截器只能拦截controller。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值