SpringBoot常用依赖
web依赖
<!-- 引入web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Mybatis依赖
数据库依赖
<!--引入mybatis依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
MySQL依赖
<!--MySQL驱动依赖-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
Lombok依赖
Lombok 依赖,它在 Spring Boot 项目里主要用来 减少样板代码(getter/setter/构造器/toString 等)。
<!--引入lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
快速提供getter/setter
使用方法:在实体类上添加注解@Data
// Data注解由Lombok提供
@Data
public class User {
private Integer id;//主键ID
private String username;//用户名
private String password;//密码
private String nickname;//昵称
private String email;//邮箱
private String userPic;//用户头像地址
private LocalDateTime createTime;//创建时间
private LocalDateTime updateTime;//更新时间
}
快速提供无参构造与全参构造
//Lombok提供的两个注解:
@NoArgsConstructor//快速添加无参构造
@AllArgsConstructor//快速添加全参构造
public class Result<T> {
private Integer code;//业务状态码 0-成功 1-失败
private String message;//提示信息
private T data;//响应数据
//快速返回操作成功响应结果(带响应数据)
public static <E> Result<E> success(E data) {
return new Result<>(0, "操作成功", data);
}
//快速返回操作成功响应结果
public static Result success() {
return new Result(0, "操作成功", null);
}
public static Result error(String message) {
return new Result(1, message, null);
}
}
JWT依赖
<!--引入JWT依赖-->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>
Jwt令牌生成和验证的实体工具类
JwtUtil.java
package com.itheima.utils;//自己更换
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import java.util.Date;
import java.util.Map;
public class JwtUtil {
private static final String KEY = "itheima";
//接收业务数据,生成token并返回
public static String genToken(Map<String, Object> claims) {
return JWT.create()
.withClaim("claims", claims)
.withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12))
.sign(Algorithm.HMAC256(KEY));
}
//接收token,验证token,并返回业务数据
public static Map<String, Object> parseToken(String token) {
return JWT.require(Algorithm.HMAC256(KEY))
.build()
.verify(token)
.getClaim("claims")
.asMap();
}
}
Jwt令牌的下发与验证
令牌下发
@PostMapping("/login")
public Result<String> login(String username,String password){
//根据用户名查询用户,从数据库拿到一个用户对象
User loginUser = userService.findByUserName(username);
//判断用户是否存在
if(loginUser==null){
return Result.error("用户名错误");
}
//若存在,判断密码是否正确
if(Md5Util.getMD5String(password).equals((loginUser.getPassword()))){
//登陆成功
Map<String,Object> claims = new HashMap<>();
claims.put("id",loginUser.getId());
claims.put("username",loginUser.getUsername());
String token = JwtUtil.genToken(claims);//创建令牌
return Result.success(token);//令牌下发
}
return Result.error("密码错误");
}
令牌验证
@GetMapping("/list")
public Result<String> list(@RequestHeader(name = "请求头名") String token, HttpServletResponse response) {
//验证token,令牌验证
try {
Map<String, Object> claims = JwtUtil.parseToken(token);//报错就验证失败,正常执行就验证成功
} catch (Exception e) {
//http响应码为401
response.setStatus(401);
return Result.error("未登录");
}
return Result.success("所有的文章数据。。。");
}
SpringBoot单元测试依赖
<!--引入SpringBoot单元测试坐标-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

浙公网安备 33010602011771号