业务流程图:
控制器 只做和 前台页面的交互,① 接收表单信息 ② 把结果返回给前台页面
(其它的一概不管,控制器只需要调业务逻辑层的方法 )
在业务逻辑层主要写代码,业务逻辑层中再调 mapper(mapper 就是接口 )
就这几个层,先写哪个无所谓,不用在意顺序,就和先洗脸 先刷牙一样
企业中开发项目编写业务流程
最基本的调用格式就是
- 前端发起请求到控制器
- 控制器接收信息后 调用业务逻辑层方法
- 业务逻辑层中调用数据访问层方法,并接收数据访问层的返回值
- 业务逻辑层将接收到的返回值返回给控制层
- 控制层将信息响应给前端
企业中的开发业务流程:
区别:
(1)要是有表单,就要先写控制器controller,因为要 控制器接收表单信息
实现的功能:
用户登录、学生注册、显示学生首页、学生提问、完善学生首页、显示讲师首页、显示问题详情页、讲师回复、显示讲师回复列表、讲师或学生评论(增、删、改、查)、学生采纳答案
- 用户登录(Spring-Security 实现密码加密,权限管理等,并进行 登录验证 与 授权控制)
- 学生注册(Spring-Validation 前后端双重验证,防黑客)
- 学生首页(包含显示所有标签,显示当前登录学生的问题列表,PageHelper分页)
- 学生提问(模板复用所有标签,加载标签和讲师,富文本编辑器,v-select,文件上传,学生提问)
- 完善首页(显示问题状态,用户信息面板,以及复用)
- 讲师首页(查询讲师任务列表,技术基本和学生问题列表一致)
- 问题详情页(显示当前问题信息)
- 讲师回复(新增并将讲师回复的问题显示在回答列表中)
- 显示讲师回复列表(将新增的回答显示在回答列表中)
- 评论的增删改查(将新增的评论显示在评论列表中、同步页面删除效果)
- 问题的采纳
项目流程: (技术点是加粗、业务功能是红色)
1、创建达内知道项目
(1)创建父项目 knows
(2)创建子项目 knows-portal
(3)父子相认
2、复制静态资源文件 (原型网页 复制到 knows-portal\src\main\resources\static)
浏览器输入localhost:8080/index_student.html测试访问
3、将数据导入数据库(knows_v3.sql 代码复制到heidisql中)
4、使用 Lombok 插件简化开发(14个表对应的实体类,get/set方法;注解@Data、@Slf4)
5、使用 MyBatis Plus框架 简化开发 ( 对数据库表进行 代码生成;)
功能一: 每个实体类都会有最基本的连库操作需求;
MyBatis Plus框架 能够在接口中编写继承一个MyBatis Plus提供的父接口(BaseMapper),
这个父接口中已经编写好了 对一个实体类基本的增删改查的操作
省去了这些基本操作:如:新增一个对象到数据库,按id删除一个数据,按id查询一个数据,查询全部数据,修改数据…等
功能二: 代码生成器
项目中所有表对应的所有类和接口
创建子项目 knows-generator
6、用户登录(Spring-Security)
使用 Spring Security实现密码加密,权限管理等,并进行 登录验证 与 授权控制
(1)密码加密: Bcrypt 算法
(2)权限管理: 用户和权限的关系,那5张表,不同用户有不同权限
要实现用户登录,需要 根据用户名获得用户信息 和 根据用户id获得用户所有权限
(3)实现登录业务(一)(登录验证): 返回的UserDetails
Spring-Security安全框架内部封装了登录验证的过程,无需我们编写,我们只用 将登录需要的数据或信息传递给Spring-Security,它就会自动进行判断并返回登录成功还是失败的结果
传递到Spring-Security框架中信息的格式是UserDetails接口类型的对象,UserDetails类型是Spring-Security提供的,我们要想实现登录就需要获得这个对象 并对它 赋必要值
(4)授权控制: 控制当前网站哪些页面资源可以直接访问,哪些需要登录才能访问
(5)自定义登录页面
7、业务(功能)二:注册
-
用户访问注册页面,并填写表单信息
-
用户点击注册按钮,注册信息发送到SystemController
-
SystemController调用Service层的方法,将用户注册信息发送过去
-
业务逻辑层中处理注册逻辑,包括验证邀请码,验证用户名是否已经被注册和密码加密等操作
-
业务逻辑层执行新增用户到数据库
-
业务逻辑层返回注册结果到控制层
-
控制层将注册结果返回页面,页面做相应处理
8、业务三:显示学生首页