最近换了一家公司,项目要求必须用人人快速开发平台写代码,这个平台是可以前后端分离的,刚开始不懂,整个过程痛苦的感觉头发稀少了一大半,后来不停的在网上找关于这方面的资料,下来我就把我最近找的资料分享一下;

  这块有一个官方能给的具体一点的开发文档:https://www.renren.io/guide/#func

1、配置

1) 从pom.xml 开始 parent 依赖包(包括springboot的所有依赖及Spring-Mybatis 的整合包,常用工具包);
2)Java环境依赖   Java-version
3) 数据库驱动包 MySQL包;
4) 任务调度依赖 quartz 
5) 系统权限框架依赖   shiro 框架集成  
6) 配置文件  
(1)xml 文件 
MySQL 数据库和实体的驼峰映射配置
日志文件输出   Dev(开发环境) test(测试环境) pro(生产环境:俗称正式环境)
(2)yml 文件(SpringBoot 开始引入的一种json格式的配置文件 功能类似于properties)
以生产环境为例(DEV)
首先配置数据库驱动DataSource 分布式数据库设计(这里只使用一个)
整体yml 文件开始
配置内置Tomcat 项目名,端口号,最大连接数等;
激活dev.yml 配置文件;
格式化输出 jackson
指定静态资源路径(只针对静态资源,不针对请求)
配置Mybatis *.xml 文件扫描(可称之为指定路径)

2、项目开发
1)创建数据库 -->MySQL 数据库 指定主键ID
2)modules 文件下创建包名(一般为业务名 如 business )
(1) 包括entity(实体)  对应MySQL 数据库 和 resource 文件夹下 mapper 下的.xml 文件
(2) Service (接口类)  对外暴露接口
(3) implements (接口实现类) 实现接口的方法
(4) dao (dao层接口) 映射mapper 文件  接口实现接口的形式  去实现Service的 接口在实现类中调用
3) 控制器(拿出来另说)
(1) 请求处理、权限管理、业务数据处理
(2) 基于注解形式 
@Autowired 注入Service
@RestController 指定为控制器
@RequestMapping 或 @PostMapping 或 @GetMapping  指定数据接口路径
@RequiresPermissions 指定 shiro 权限   根据页面配置的 权限标识
(3) 返回实体基于 R (实体) 实现了Map接口  这里的 HashMap也是实现了Map 接口  所以整体是实现了Map 接口
可以扩展  重写  error 方法  或者  OK 方法
(4) 请求参数封装
Query  将所有的param 在接受的时候 全部封装在map 集合中  再整体封装在Query中 (期间计算一些分页所需数据)  
(5) 请求过滤  ShiroConfig  --> shirFilter  所有的请求都会在这个过滤器中过滤   filterMap 中的请求可以在无token时进行直接请求  无论是post还是get  否则会报401 权限不足的错误
(6) 登录模块
验证码 随机生成   IOUtils.closeQuietly(out); 输出图片  
登录的时候验证用户名、密码、和session中的验证码  通过用户名(登录名) 取出 用户密码  再跟用Sha256Hash 加密算法加密的字符串进行比对
(7) token 所有的请求都会验证token(除被ShiroConfig过滤掉的 ) AuthorizationInterceptor.preHandle(验证token 然后转发请求)  token 会有一个过期时间  12个小时  判断token是用户请求的一个关键点,token在Header 中   不在请求的请求体中
  (8) 重写AuthenticatingFilter 中的方法  isAccessAllowed 这个方法直接废掉  原来是在这里面可以处理直接转发请求  但是引入shiro 后则所有请求都首先经过onAccessDenied,获取请求token,如果token不存在,直接返回401(从header中获取token,如果header中不存在token,则从参数中获取token)  
4) 前端界面  前后端完全分离的情况  可以说用另外的一个web项目发布所有的 html 文件   来请求后台也是OK的   HTML 作为静态资源存在于项目中   HTML 代码比jsp的优点在于  纯静态  加载速度快   易于优化
(1)  新闻栏为例
整体构思: bootstrap 样式 + jqgrid (表格) + Vue.js (对象数据) 让你同学去了解一下VUEJS 的基本语法就OK了
页面初始化的时候加载JS文件 然后渲染出JqGrid 所绑定的 ID 对应的 Table (有点绕 你理解一下) 
Vue 通过绑定 指定的参数赋值  指定的click 方法  指定的model 赋值或取值   等
至此 项目开发就OK了