[Project]-Part1-参数校验

2022-08-19  本文已影响0人  唔哒喂

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
上一篇 下一篇

猜你喜欢

热点阅读