最近看了csnd学院汤小洋老师的视频课程《基于SSM技术的在线商城系统》[实战视频],跟着做了一遍,弥补了之前写的商城项目的许多缺陷,并做了如下笔记,mark一下。后续会整理代码,以及使用到的相关框架。
第一章 项目功能介绍及环境搭建
第一节 环境配置
Tip1父工程的打包方式必须为pom
Tip2父工程进行依赖的管理,使用dependencyManagement
Tip3按层划分工程
分为:
zshop_common,
zshop_pojo,
zshop_dao,
zshop_service,
zshop_frontweb,
zshop_backweb工程
Tip4工程间依赖关系
第二节 页面展示
Tip1 静态资源
静态资源可以放在WEB-INF下,也可以放在webapp下。放在WEB-INF的资源默认是无法直接访问的,需要配置映射关系。
/ 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url;
/* 会匹配所有url:路径型的和后缀型的url(包括/login,.jsp,.js和*.html等。
Tip2配置spring-mvc.xml
包括注解驱动,扫包,配置视图解析器,给静态文件添加映射路径
第二章 商品类型管理
第一节 商品类型管理-查询所有
Tip1创建数据库表
在zshop_pojo中创建ProductType类(要实现序列化)(实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复。所以你想如果你的对象没实现序列化怎么才能进行网络传输呢,要网络传输就得转为字节流,所以在分布式应用中,你就得实现序列化,如果你不需要分布式应用,那就没那个必要实现序列化)
第二节 商品类型管理-分页
Tip1 后台分页插件pagehelper
使用分页插件Pagehelper后端分页插件。将需要传入页面的信息封装到PageInfo对象中,PageInfo中不仅包含了当前页面的信息,还包含了当前页码,页面大小,下一页,上已页,总页数等信息。
Tip2 前台分页插件bootstrap paginator
在jsp正文body中添加<ul id=”” />,然后js使用paginator操作,实现前台分页。
当页面为空时,bootstrapPaginator的PageInfo的当前页为1,总页数为0。
第三节 商品类型管理-添加
Tip1 Ajax
使用Ajax实现添加商品类型,这里使用fastjson,注意在spring-mvc.xml中添加fastjson的配置。
Tip2 console
可以在前端js使用console.log(result)来判断是否接受到返回的jackson数据。
Tip3 layer前台框架
此外可以使用layer框架来实现好看的弹框功能。下载layer框架(文件夹),将其放在WEB-INF文件夹下面,在项目中引入layer.js,然后在js中使用。
第四节 商品类型管理-删除
Tip1 input元素的type=”hiden”属性
可以将一些信息放在隐藏的input中,方便调用。
第三节 商品类型管理-启用和禁用
第三章 商品管理
第一节 商品管理-添加
Tip1 文件上传功能实现
使用表单提交数据时如果包含了上传文件,那么enctype=multipart/form-data;
可以创建vo包用来封装商品信息;
Springframework定义了一个CommonsMutipartFile对象用于文件类。
文件上传还需要在spring-mvc中配置文件解析器;
ProductVo对象使用了Web层特有组件,不能直接往Service层中传,解决办法:创建dto对象。
Tip2 DTO VO POJO
DTO(Data Transfer Object)数据传输对象:用于视图层和服务层的数据传输。
VO(view object) 视图对象:用于视图层向后端传输数据
POJO(plain ordinary java object) 普通java对象
可以使用数据拷贝工具Apache Commons BeanUtils中的PropertyUtils类的copyProperties来拷贝VO对象到DTO对象中,DTO对象到POJO对象中
在common工程中添加StringUtil类,实现方法renameFileName(String fileName);
在dao工程中使用pojo类对象,不要使用dto,dto用在服务层;
Tip3 forward转发请求
在返回页面时可以使用forward来实现转发请求。
第二节 商品管理-客户端表单数据
Tip1 表单校验框架bootstrapvalidator
使用表单校验jar包:bootstrapvalidator,这里只使用bootstrapValidator.min.js和bootstrapValidator.min.css;
使用notEmpty来检测商品名称是否为空;
使用remote来检测商品名称是否已经存在;
第三节 商品管理-查询和修改
Tip1 表的关联:inner join,left join,right join
inner join 内连:在两张表进行连接查询时,只保留两张表中完全匹配的结果集。
left join 左连:在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录
right join 右连:在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录
full join :在两张表进行连接查询时,返回左表和右表中所有没有匹配的行
当两个关联表之间存在同名列,需要对其中一个取别名。
第四节 商品管理-删除
第四章 系统用户管理
第一节 系统用户管理-查询
第二节 系统用户管理-添加
Tip1 serialize()方法的使用
可以使用表单然后在js中调用serialize()方法一次性获取需要传入后台的元素值,实例:$(‘#from-admin‘).serialize()。
第三节 系统用户管理-多条件查询
Tip1 mysql动态查询
多条件查询需要使用到mysql动态查询语句
第四节 系统用户管理-启用和禁用
比较简单,代码暂时未写。
第五章 其他功能的实现
第一节 验证码的实现
可以去网上找别人验证码代码,复制粘贴过来使用。
Tip1 bootstrapValidator的threshold
使用bootstrapValidator的threshold可以使得在输入4位及以上的验证码后才进行校验,更人性化。
第二节 后台登陆的实现
第三节 前台商品展示
ftp服务器暂时未使用。
第四节 用名名密码登录
Tip1 jsp:include
将前端页面相同的页头页尾单独作为一个jsp文件保存,然后使用jsp:include来引入页头页尾,去除冗余代码。
第五节 登录局部刷新
Tip1 artTemplate框架
这里使用artTemplate框架来实现。然后script标签的type属性可以设置为text/html(默认值为:text/javascrpt)用来写模板。
模板中参数传递:通过json字符串实现,首先通过template(‘模板’,json串)方法传入参数,然后在script type=text/javascript 中通过‘{{属性名}}’来取值。
第六节 短信快捷登录
Tip1 www.juhe.cn 聚合数据(用于发送验证码)
Tip2 httpclient框架
httpclient发送请求,使用htttClientUtils工具类封装httpclient发送请求方法
Tip3 sms(short message service)
Tip4 6位随机验证码的生成
生成6位随机验证码:
String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);
第七节 使用Redis设置短信验证码有效期
暂时未学习redis。= =