电商项目

DAO方法汇总

增加

每张表都有增加操作

删除

物理删除:购物车,收货地址
逻辑删除:类别表,商品表,用户表,订单表
订单明细表不能删,不能改

修改

类别表,商品表,用户表,订单表,购物车,收货地址,利用动态sql根据条件修改

查询

  1. 根据id查询单个实体:除了订单明细、购物车都需要
  2. 根据条件查列表:商品表、订单表、用户表、评论表
  3. 查询所有数据:类别表
  4. 根据用户ID查询:收货地址、购物车
  5. 特殊查询:根据价格区间查商品,根据订单id查订单项

业务方法

为了代码的后期维护,service层应当用service接口+serviceImpl实现类的方式

地址

  1. 添加地址
  2. 修改默认地址
  3. 删除地址
  4. 修改地址
  5. 用户查看所有地址

购物车

  1. 增加购物车
  2. 删除购物车
  3. 修改购物车(商品数量,商品价格)
  4. 查看购物车所有商品(同时查出商品名称,图片,商品价格)

类别

  1. 展示所有分类
  2. 增加新的分类
  3. 修改类别名
  4. 类别下架(同时该类别所有商品下架)
  5. 类别上架

商品

  1. 查看某一类别所有商品(分页)
  2. 添加新商品
  3. 商品上架
  4. 修改商品信息(价格,图片,描述,评分,是否最新,是否热卖)
  5. 商品下架
  6. 根据价格区间查商品(分页)
  7. 最新商品推荐(分页)
  8. 热卖商品推荐(分页)
  9. 查看单个商品详细信息

订单与订单明细

  1. 下订单同时添加订单明细(下单同时将相应商品库存减少,添加用户默认地址,若无则为空)
  2. 取消订单(将相应商品的库存恢复)
  3. 支付订单
  4. 查看订单与订单项(带出地址信息:收货人,地址,收货电话;商品信息:商品名称,商品价格)
  5. 修改订单信息(地址,支付方式)
  6. 发货
  7. 订单异常(无法联系收货人)
  8. 确认收货
  9. 订单结束(收货后超出期限)
  10. 退货
  11. 确认退货(退款,商品数量恢复,若由账户余额支付余额恢复)

用户

  1. 注册
  2. 登录
  3. 注销账户
  4. 冻结账户
  5. 修改邮箱
  6. 修改密码
  7. 修改邮箱
  8. 充值

自定义异常

业务异常

自定义一个异常父类(ServiceException),继承自运行时异常(RuntimeException)【运行时异常在语法上可以省略try-catch,但在业务逻辑上无法对异常做出不同反馈】。
每一个异常类都包含四个构造器:无参,参数为异常信息,参数为异常原因(Throwable类型),参数为异常信息和原因
可以通过有参构造器将异常的信息抛出给用户

业务异常列表

  1. 账号存在异常
  2. 邮箱存在异常
  3. 库存不足异常
  4. 商品下架异常
  5. 余额不足异常
  6. 账户注销异常
  7. 账户冻结异常
  8. 登录异常
  9. 类别下架异常
  10. 商品下架异常
  11. 商品存在异常
  12. 账户不存在异常

异常捕获的两种方式

  1. 子类业务异常先捕获,最后捕获父类异常
  2. 直接捕获父类异常,在处理中做判断,对不同的子类异常进行不同的反馈

MyBatis异常

MyBatis在底层数据处理中抛出的异常为PersistenceException在业务层当处理底层数据异常,讲业务层异常向上抛

cglib动态代理

通过代理工厂的形式,在service层添加代理工厂,为上层调用时提供代理

web层(展示层)

servlet的设计

  1. 为了防止类爆炸,每个service对应一个servlet,而不是每个操作对应一个servlet,每个请求添加一个opr参数,参数值为请求的类型,然后在servlet中获取该参数的值来找到对应的doXXX方法,实现每一个doXXX方法即可。如:注册表单添加一个隐藏的表单项,name为opr,value为regist,在servlet中实现doRegist方法,判断opr参数的值为regist时调用doRegist方法。这样,一个方法对应一个操作,所有属于同一个service的操作写在一个servlet中,减少了大量的类的书写
  2. 对于主页这样数据基本没有大的改变的页面,使用Thymeleaf生成静态页面,每隔一段时间刷新一次静态页面的数据,减少服务器的压力,对于静态资源的访问可以在前端直接进行
  3. 前端js整合jquery,对数据的访问使用js提交请求,再交由后台处理,后台封装一个统一响应各式的实体类,包含一个响应码、一个响应信息、一个对象的引用

开发过程中遇到的问题

1. logback不打印mybatis日志

在dao层面开发时出现logback+slf4j配置完成后,mybatis的日志却没有打印,是由于logback和slf4j的jar包版本不匹配的原因,之后使用thymeleaf的时候导入的依赖中含有slf4j发现之前未打印出来的mybatis日志打印了

2. cglib代理问题

cglib中拦截器方法含有object、method、args、proxy四个参数,其中第一个参数为被代理的实例对象,第二个为拦截的方法,第三个为方法参数,第四个为生成的代理对象;cglib代理的原理是生成一个子类的增强对象proxy然后用这个对象调用父类的方法并进行完善

3. mybatis报错连接已关闭问题

对mybatis的sqlsession使用了threadlocal保证每一次操作使用的是同一个sqlsession,而之后释放时却仅仅对session进行了close并未将threadlocal中的sqlsession移除,这就造成了多个线程的sqlsession是同一个,所以当某一个线程将session关闭之后其他线程无法使用该session

4. 验证码刷新问题

直接将图片src属性指向servlet即可,同时需要传入一个随机数以免从本地缓存中直接读取

5. Thymeleaf静态化th:fragment问题

使用thymeleaf静态化时,th:fragment与th:replace是捆绑使用的,就相当于代码的拷贝,开发中发现非静态化页面无法获取静态话页面的th:fragment是由于静态化时存放数据的req是同一个所以所有静态化页面可以获取到数据,而非静态化页面并没有共享到staticServlet中的req所以未做静态化的页面没有数据

6. html文件编码问题

tomcat默认不是utf-8编码的,所以utf8编码的文件在经过服务器的访问后会乱码,当我在tomcat配置中配置为utf-8编码却发现thymeleaf的静态页面乱码了,是由于thymeleaf为配置utf-8编码导致的,所以我将所有文件都改为了gbk编码并将tomcat中的utf8编码配置去掉

7. 二进制文件上传问题

前端通过ajax上传二进制文件时,需要使用到formdata对象,通过$()[0].files[0]获取到文件然后append到formdata中,进行上传,在servlet通过part接收,注意@multipartconfig注解

电子商务购物平台 概要设计说明书 1引言 作为互联网战略的延伸,电子商务的热潮一度兴起,但是一直以来,很多企业网站都局限在信息发布等一些基本的功能,而越来越深入的实践表明,这些仅仅代表了企业网站的一个起点功能。随着企业网络环境的发展成熟,企业门户网站可以帮助企业把现有的业务系统整合起来,集中优势资源为客户提供个性化服务,并为企业创建一个良好的收入渠道。 1.1编写目的 锻炼本阶段学校的成果,让我们更加的熟练运用所学的知识,对应web开发的流程更加的清晰,增加了我们对servlet的理解。 1.2背景 网上购物是电子商务的重要组成部分。网上购物就是通过互联网检索商品信息,并通过电订购单发出购物请求,然后填上私人支票帐号或信用卡的号码,厂商通过邮购的方式发货,或是通过快递公司送货上门。国内的网上购物,一般付款方式是款到发货(直接银行转帐,在线汇款)。担保交易(淘宝支付宝,百度百付宝,腾讯财付通等的担保交易),货到付款等 2总体设计 2.1运行环境 Jdk1.7 Tomcat7.0.61 Oracle 11g 2.2软件功能框架图 基于jsp+servlet开发的电子商务购物平台 3相关设计 3.1类框图(必须包括DAO相关类框图) 基于jsp+servlet开发的电子商务购物平台 1.1编写目的 锻炼本阶段学校的成果,让我们更加的熟练运用所学的知识,对应web开发的流程更加的清晰,增加了我们对servlet的理解。 2未完成功能说明 重置用户所有密码 3安装与初始化 3.1可执行程序安装运行说明 前台登录url:http://localhost:8080/EbProject/ 后台管理登录url:http://localhost:8080/EbProject/admin/AdminIndex.jsp 3.2数据库安装说明 百度安照教程去操作http://jingyan.baidu.com/article/ed15cb1b785b1c1be3698105.html 3.3初始数据说明 前台登录账号与密码, 账户0002密码2222 后台登录账号与密码 账户Admin密码8888 普通管理员: 账户0008密码8888 4操作简要说明 结合项目效果图说明操作步骤,每一个功能对应一张效果图 基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值