Spring(SSM)基础框架结构
1.框架结构(三层结构)
1.controller层:控制层(负责与前端的交互工作),由springMVC控制管理,主要进行前端的数据接收,由于前端收到的数据是json串,必要时候需要转化为对象
注解:@RestController 交给spring容器管理并将json返回对象
@RequestMapping 抽取公共项
@CrossOrigin 解决跨域问题
@Autowired 注入 调用业务层,所以需要注入Service(面向接口开发)
具体流程:接收前端的ajax请求,并将请求按照具体业务分为对象/具体属性进行获取,然后调用业务层
2.service层:业务层(程序猿具体处理业务的地方),直接由spring管理
注解:@Service 交给spring容器管理
@Autowired 注入 调用持久层 注入mapper
具体流程:处理业务,比如将从控制层接收的用户名/密码的数据进行判断处理,或者加密处理,然后去调用持久层mapper
3.mapper:持久层(负责和数据库进行交互),由mybatis直接管理,主要和数据库进行连接,写SQL语句的地方(简单的SQL,比如单表查询),也可以通过XML配置文件的方式进行管理(负责的sql语句,多表查询),一般都是xml文件(映射)
4.补充:POJO(具体的业务对象),属性可以与前端的数据相同,不相同时候需要在xml里面写清楚
注解:@Data 先交给的mybatis的进行管理,然后交给spring容器管理
2.业务流程
一、登录功能的业务流程
1.接收前端的ajax请求,并根据URL/参数/类型/返回值写出对应的方法,前端需要返回值为SysResult(token)的对象——一个凭证,调用业务层,返回一个SysResult对象并告诉用户成功
2.面向接口开发
<1>对控制层获取到的账户密码进行加密,先获取到账户密码
<2>对获取到的账户密码进行加密算法,API——DigestUtils类的md5DigestAsHex(),业务获取到的账户密码是一个串,需要或得字节 getBytes()
<3>把加密过后的账户密码传给用户
<4>查询数据,调用持久层数据库查询,进行判断
有数据就是账户密码正确,
没有数据就是账户密码不正确
<5>UUID就是根据当前毫秒数进行散列,几乎可以保证不重复 防止黑客攻击 返回token对象
<6>最后需要在控制层进行判断取回来的token是否为空的
二、获取页面菜单
<1>接收前端的ajax请求,调用业务层,返回成功界面
<2>查询一级菜单数据 level=1/parent_id=0,调用持久层mapper,得到一级菜单结果数据
<3>持久层执行sql语句,返回到上一层
<4>查询二级菜单 利用循环遍历
通过获取一级菜单对象
然后再次调用sql查询,获取二级菜单
最后将查询到的二级菜单数据封装到Rights对象中的children对象中去
返回一级菜单此时,里面包含封装的二级菜单数据
<5>回到控制层,返回sysesult对象,成功调用
