网上商城客户端首页:http://localhost:8080

网上商城后台首页:http://localhost:8080/admin/index.jsp

网上商城绕过后台首页:http://locallhost:8080/admin/home.jsp

 

多表操作,将类的对象做为属性是为了体现面向对象的思想,数据库中保存的还是外键ID

 

注册:

0.有前端数据验证(为了给客户更好的体验,前端响应时间短)

1.后台异步验证用户名是否存在

2.提交之后发送激活邮件给用户,点击链接激活账户

 

查询相关热门商品与最新商品

0.商品表里有热门字段和最新字段

 

商品的类别查询

  1. 放在头部导航栏里

  2. 动态显示商品类别信息

  3. 为了保证所有页面可以用头部导航栏,所以要用异步请求查询

  4. 由于商品类别变化不大,可以将数据存入缓存区,如Redis里面

 

商品类别子商品列表

  1. 根据商品类别ID查询所有子商品,并分页显示出来

 

单个商品的详细信息

  1. 根据商品ID查询

 

在商品页返回列表页时,能查看历史浏览记录

  1. 利用cookie技术将商品ID拼接保存(也可以用Redis)

  2. 然后在历史记录里查询商品

  3. 注意:cookie里面字符串的拼接操作;如果刚开始商品ID排列为3-2-1;

那么再次浏览1后:1-3-2;再浏览8为:8-1-3-2

 

Servlet的抽离

  1. 将同一个对象的不同操作抽离成同一个servlet

  2. 创建映射,根据不同的方法名找不同的方法执行

 

购物车

  1. 购物车包含购物项;购物项包含商品

  2. 添加购物项到购物车时用重定向,防止转发刷新时总计重复的叠加

  3. 难点在于价钱的逻辑计算

  4. 要判断购物车是否有该购物项,有就加数量,没有直接加该购物项

  5. 购物车的单独删除与清空购物车操作

  6. 购物车里的数据不用保存到数据库

 

订单提交

  1. 用户没有登录不能提交订单

  2. 订单信息要保存于数据库

  3. 难点在于事务的处理,因为要将订单和订单项数据同时传入数据库才行

  4. 订单包含订单项;订单项包含商品信息

  5. 订单项与购物项数据一样,但是意义不同

在将订单加入数据库时遇到的问题

java.sql.SQLException: Data truncation: Incorrect datetime value: '' for column 'ordertime' at row 1 Query: insert into orders values(?,?,?,?,?,?,?,?) Parameters: [30c33bd4-3809-4140-8db6-553fa8546742, Mon Aug 20 22:31:18 CST 2018, 9287.0, 0, null, null, null, dffd2494-4b9b-4996-8025-90b5b29d161d]

这是mysq_JDBC驱动包版本引起的,将其引用最新版即可解决

 

支付平台

0.选择三方平台提供的接口进行付款

 

获取我的订单

0.先根据用户ID获取用户的订单

1.再根据订单ID获取订单项

2.注意:在查询订单项时,因为订单项与商品是1对1的关系,所以可以多表查询,所以查询返回的不能

是单表的集合,所以用List<Map<String,Object>>接收

3.要避免加入分页时的数据传输错误

 

关于权限过滤器的使用

0.可以创建一个文件夹,将需要过滤的文件放到里面,这样只有满足过滤器里面的条件,才能访问相应的

文件;如:用户只有登录才能访问我的订单功能以及提交订单功能

 

用户退出

0.从session里删除用户

1.从cookie里删除用户,不然勾选了自动登录会退出后还显示用户名

 

后台管理系统

0.注意:登录页如果cookie保存有用户数据,会自动填充,要避免用户接触到后台,更要注重后台的

安全性

 

异步获取商品分类信息

0.将 list 对象转为 json 对象

 

添加商品操作

0.注意:因为是post提交,所以不能用

${pageContext.request.contextPath}/admin?method=findAllCategory 这种格式;

因为多次提交,注射会使method值为空,所以也不能用隐藏域来写

1.这里直接转到对应select即可

2.添加完去到列表页面显示商品

3.目前遇到的问题:上传图片时,只有绝对路径才能将文件拷到文件夹,相对路径会找不到路径

4.删除商品,修改商品,查询商品,增加分类,删除分类,修改分类,查询分类

 

经验之谈:修改代码之后,加注释(功能+名字+时间),后期维护可以通过软件搜索名字找到所有

自己改过的内容

 

查询订单

0.多表查询,查询显示之后,单击订单详情,获取所有订单项,并且弹窗显示

 

解耦:(面向接口编程):使用工厂模式+反射+配置文件