B站搜高并发的项目,记录下学习过程。
同时将最近项目上同事编写的登录加入上述代码,丰富一下。
2022年08月17日23:19:57 - 01、编写参数校验
可能遇到问题
1、maven导入validated问题。需要exclution部分包,根据实际情况进行操作。
2、要注意SpringBoot版本
参数校验
核心Jar包
exclution看情况
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<exclusions>
<exclusion>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.el</artifactId>
</exclusion>
</exclusions>
</dependency>
Controller
在接口代码中添加@Validated
@CrossOrigin
@Controller
@RequestMapping("/sys/user")
public class LoginController {
@Resource
UserService userService;
/**
* 登录
* @param loginVO
* @return
*/
@ResponseBody
@PostMapping("/login")
public String doLogin(@RequestBody @Validated LoginVO loginVO){
// System.out.println(loginVO);
userService.verifyPassword(loginVO);
return "success";
}
}
LoginVO实体类,编写参数和校验信息
属性上的注解百度一下validated 可进行了解
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginVO {
/** 手机号 */
@NotNull(message = "手机号不可为空")
@Pattern(regexp = "^((13[0-9])|(14(0|[5-7]|9))|(15([0-3]|[5-9]))|(16(2|[5-7]))" +
"|(17[0-8])|(18[0-9])|(19([0-3]|[5-9])))\\\\d{8}$",
message = "请输入正确的中国区手机号")
private String mobile;
/** 密码 */
@NotNull(message = "密码不可为空")
private String password;
}
接下来需要编写统一异常处理类,来答应出message
来接收参数校验后抛出的异常信息,并处理返回结果。
JsonResult就是个简单结果返回类
/**
* 统一异常处理
*/
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
/**
* 处理前端传值异常 @Validated
* @param e 异常
* @return
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public JsonResult bindException(HttpServletRequest req, MethodArgumentNotValidException e)throws Exception{
String defaultMessage = Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage();
JsonResult<Object> result = new JsonResult<>(999, defaultMessage, null);
return result;
}
}
🌰子
image.png