网上商城客户端首页:http://localhost:8080
网上商城后台首页:http://localhost:8080/admin/index.jsp
网上商城绕过后台首页:http://locallhost:8080/admin/home.jsp
多表操作,将类的对象做为属性是为了体现面向对象的思想,数据库中保存的还是外键ID
注册:
0.有前端数据验证(为了给客户更好的体验,前端响应时间短)
1.后台异步验证用户名是否存在
2.提交之后发送激活邮件给用户,点击链接激活账户
查询相关热门商品与最新商品
0.商品表里有热门字段和最新字段
商品的类别查询
-
放在头部导航栏里
-
动态显示商品类别信息
-
为了保证所有页面可以用头部导航栏,所以要用异步请求查询
-
由于商品类别变化不大,可以将数据存入缓存区,如Redis里面
商品类别子商品列表
-
根据商品类别ID查询所有子商品,并分页显示出来
单个商品的详细信息
-
根据商品ID查询
在商品页返回列表页时,能查看历史浏览记录
-
利用cookie技术将商品ID拼接保存(也可以用Redis)
-
然后在历史记录里查询商品
-
注意:cookie里面字符串的拼接操作;如果刚开始商品ID排列为3-2-1;
那么再次浏览1后:1-3-2;再浏览8为:8-1-3-2
Servlet的抽离
-
将同一个对象的不同操作抽离成同一个servlet
-
创建映射,根据不同的方法名找不同的方法执行
购物车
-
购物车包含购物项;购物项包含商品
-
添加购物项到购物车时用重定向,防止转发刷新时总计重复的叠加
-
难点在于价钱的逻辑计算
-
要判断购物车是否有该购物项,有就加数量,没有直接加该购物项
-
购物车的单独删除与清空购物车操作
-
购物车里的数据不用保存到数据库
订单提交
-
用户没有登录不能提交订单
-
订单信息要保存于数据库
-
难点在于事务的处理,因为要将订单和订单项数据同时传入数据库才行
-
订单包含订单项;订单项包含商品信息
-
订单项与购物项数据一样,但是意义不同
在将订单加入数据库时遇到的问题
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.多表查询,查询显示之后,单击订单详情,获取所有订单项,并且弹窗显示
解耦:(面向接口编程):使用工厂模式+反射+配置文件