JWT令牌
JSON Web Token
作用:以json格式在各方之间安全传递信息,是数字签名的。
格式:标头Header.有效载荷Payload.签名Signature
前两部分用Base64编码,可以被前端翻译并理解。第三部分使用编码后的前两部分,加上一个密钥,用头部声明的加密算法进行签名,保证令牌没有被篡改。
swagger生成接口文档
注解 | 意义 |
---|---|
@Api | 用在类上,例如Controller,表示对类的说明 |
@ApiModel | 用在类上,例如entity、DTO、VO |
@ApiModelProperty | 用在属性上,描述属性信息 |
@ApiOperation | 用在方法上,例如Controller的方法,说明方法的用途、作用 |
注意项目启动类需要加@EnableTransactionManagement注解
navicat设置某字段唯一
字段索引设置为UNIQUE
mySQL模糊查询
and name like concat('%',#{name},'%')
模糊查询,防止sql注入。
concat()
函数作用是字符串拼接,只要有一个参数为null,返回值就是null。
为什么能防止sql注入?
注入的本质是把用户提交的参数直接当代码运行。
#{}
用了PreparedStatement预编译,输入的参数只在sql编译时起作用,当sql预编译完后,传入的参数就仅仅是参数,不会参与sql语句的生成;&{}
不使用预编译,传入的参数会直接与sql语句进行拼接。
切面注解中的通知注解
@Before: 前置通知, 在方法执行之前执行
@After: 后置通知, 在方法执行之后执行
@AfterReturning: 返回通知, 在方法返回结果之后执行
@AfterThrowing: 异常通知, 在方法抛出异常之后
@Around: 环绕通知, 围绕着方法执行
left outer join & left join
用法相同,都是返回左表的全部行。
@Transactional
声明式事务管理编程的注释,由于AOP特性,该注解只能用于public方法。用于注解接口实现类或接口实现方法。
配置该注解表示该方法需要AOP拦截和事务处理。
BeanUtils的坑
spring和apache的commons都有BeanUtils,引入包时一定要注意。因为spring的参数前面是src,commons的后面是src。
session类
session用于存储用户会话所需的属性及配置信息。
客户端第一次请求服务器时,服务器会为该客户创建一个session和一个cookie,并在cookie中保存sessionId。(未关闭浏览器)第二次请求服务器时,客户端会把保存sessionId的cookie发给浏览器,也就是说多次请求使用的都是同一个session。
关闭浏览器窗口后,这个cookie会和sessionId一起消失。即使不关闭,session也会因为超过了保留时间而自动失效。