1.用户注册接口的参数校验:
①添加validation依赖
②参数前加上@Pattern注解
③controller类前面加上@Validated注解
2.登录认证 ①使用拦截器统一验证令牌
②登录和注册接口需要放行
3.TreadLocal
多个用户访问时,当请求到达Tomcat之后,服务器会为每一个用户开辟一个线程用来来提供服务,这样①可以减少参数的传递(参数无需声明)②可以在同一个线程执行的代码间进行共享数据,例如可以把拦截器中的数据共享到controller,service和dao等进行使用 例如在为1提供服务时,会把拦截器中的prehandle方法加载到黑色线程进行执行,拦截器放行后,会依次调用controller,service和dao中的add方法进栈执行,绿色同理,从而做到线程隔离。
使用TreadLocal来优化 获取用户详细信息 的代码 ①用来存取数据的方法:get()/set() ②使用TreadLocal存储的数据,是线程安全的 ③用完记得调用remove方法释放,不然可能发生内存泄漏
4.更新用户基本信息 1)主要逻辑 浏览器给我们携带id,username,email等数据,并且是在请求体中以json格式携带过来的,因此可以把这些数据封装到一个实体类对象User中进行接收,此时为了让框架能够自动的把请求体里的json数据转化为实体类对象,需要在参数前面添加一个@RequestBody注解,方法声明好之后,只需要在方法体内调用service层的方法完成更新即可。
2)参数校验
实体类参数校验的步骤:
A.在实体类的成员变量上添加注解①NotNull②NotEmpty③Email
B.接口方法的时提参数上添加@Validated注解
5.@PathVariable注解的作用
6.为了在运行的时候让不同的请求都能按照对应的规则校验参数,需要把这样的规则进行分组
7.自定义注解的校验过程 ①自定义注解State ②自定义校验数据类StateValidation实现ConstraintValidator接口 ③在需要校验的地方使用自定义注解
8.文件上传第三方服务通用思路
9.令牌主动失效机制 ①登录成功后,给浏览器响应令牌的同时,把该令牌存储到redis当中 ②LoginInterceptor拦截器中,需要验证浏览器携带的令牌,并同时需要获取到redis中存储的与之相同的令牌 ③当用户修改密码成功后,删除redis中存储的旧令牌
10.项目部署
11.springboot属性配置方式,修改端口号( 优先级:命令行参数 > 环境变量 > jar包所在目录下的application.yml > resources目录下的application.yml ) (1)命令行参数方式,在命令行jar包名字后面加上--server.port=9999 (2)环境变量方式(修改完重新启动cmd)
(3)外部配置文件方式( jar包所在目录下的application.yml )
(4)resources目录下的application.yml
12.SpringBoot多环境开发-基本使用
13.SpringBoot多环境开发-profiles-分组