springboot整合JSR303参数校验与全局异常处理的方法

下面我将详细讲解“springboot整合JSR303参数校验与全局异常处理的方法”的完整攻略。

一、JSR303参数校验

JSR303,又称Bean Validation,是一个JavaEE标准的框架,可以很方便地对JavaBean的字段进行校验,以保证数据的有效性和安全性。在springboot中,我们可以通过集成hibernate-validator来实现JSR303参数校验。

1、添加依赖

在pom.xml文件中添加以下依赖:

<!-- JSR303参数校验 -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.2.Final</version>
</dependency>

2、编写JavaBean

在JavaBean的字段上添加相应的校验注解,例如:

public class User {
    @NotNull(message = "用户名不能为空")
    private String username;

    @Size(min = 6, max = 10, message = "密码长度必须为6-10个字符")
    private String password;

    //getter和setter方法
}

3、在Controller中使用参数校验

在Controller的方法中,可以直接加上@Valid注解,表明要进行参数校验,例如:

@RestController
public class UserController {
    @PostMapping("/login")
    public String login(@Valid @RequestBody User user) {
        //处理用户登录逻辑
        return "success";
    }
}

4、处理校验不通过的异常

如果校验不通过,会抛出MethodArgumentNotValidException异常。为了更友好的提示用户错误信息,我们可以自定义全局异常处理器来处理这个异常,并返回自定义的错误信息。

二、全局异常处理

在前面的JSR303参数校验中,当校验不通过时,会抛出MethodArgumentNotValidException异常,为了更好地用户体验,我们需要对异常进行处理,并返回友好的错误信息。下面介绍如何利用@ControllerAdvice和@ExceptionHandler来实现全局异常处理。

1、编写全局异常处理器

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public String handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
        FieldError error = e.getBindingResult().getFieldError();
        String message = error.getDefaultMessage();
        return message;
    }
}

2、测试Controller

@RestController
public class UserController {
    @PostMapping("/login")
    public String login(@Valid @RequestBody User user) {
        //处理用户登录逻辑
        return "success";
    }
}

三、完整示例

我来给出一个完整的例子,包括JSR303参数校验和全局异常处理的代码。

1、添加依赖

在pom.xml文件中添加以下依赖:

<!-- JSR303参数校验 -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.2.Final</version>
</dependency>

<!-- 全局异常处理 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2、编写JavaBean

public class User {
    @NotNull(message = "用户名不能为空")
    private String username;

    @Size(min = 6, max = 10, message = "密码长度必须为6-10个字符")
    private String password;

    //getter和setter方法
}

3、编写Controller和全局异常处理器

@RestController
public class UserController {
    @PostMapping("/login")
    public String login(@Valid @RequestBody User user) {
        //处理用户登录逻辑
        return "success";
    }
}

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public String handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
        FieldError error = e.getBindingResult().getFieldError();
        String message = error.getDefaultMessage();
        return message;
    }
}

4、测试

启动springboot应用程序,并使用Postman发送HTTP POST请求,请求url为“/login”,请求体为:

{
    "username": "",
    "password": "123"
}

此时返回的响应体为:

用户名不能为空

另外,当请求体为:

{
    "username": "admin",
    "password": "123"
}

则返回的响应体为:

success

以上就是关于“springboot整合JSR303参数校验与全局异常处理的方法”的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot整合JSR303参数校验与全局异常处理的方法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • spring boot输入数据校验(validation)的实现过程

    下面我来给您讲解关于spring boot输入数据校验(validation)的实现过程的完整攻略。 1. 简介 Spring Boot提供了一种简单的方法来在Web应用程序中轻松实现输入数据的校验。它可以通过使用声明式注解进行实现,这些注解在处理表单输入时特别有用。 1.1 常用的校验注解 Spring Boot中常用的校验注解包括: @NotNull:验…

    Java 2023年5月20日
    00
  • SpringBoot中Dozer的使用小结

    《SpringBoot中 Dozer 的使用小结》 什么是 Dozer? Dozer是一个JavaBean与JavaBean之间的映射框架,它简化了JavaBean之间的转换,并且可以使用注解或XML文件定义映射规则。 Dozer的使用 引入依赖 在Maven中,我们需要添加以下依赖: <dependency> <groupId>co…

    Java 2023年5月20日
    00
  • 苹果Mac中如何安装java应用?java mac版安装教程

    苹果Mac系统中安装Java应用需要经过以下几步: 1. 下载Java 首先需要下载Java,可以在Oracle官网下载最新版本的JDK(Java Development Kit)安装包,或者根据自己需要选择较旧的版本。下载完成后,双击安装包运行即可。 2. 设置环境变量 安装完JDK后,需要在系统环境变量中设置Java的HOME路径和可执行路径。打开终端(…

    Java 2023年5月26日
    00
  • SpringBoot自定义启动器Starter流程详解

    Spring Boot自定义启动器Starter是一种将多个依赖项打包成一个单独的依赖项的方式,以便在应用程序中轻松引入和配置这些依赖项。以下是Spring Boot自定义启动器Starter的详细攻略: 创建Starter项目 首先,我们需要创建一个Maven项目,并将其打包成一个jar文件。在项目中,我们需要创建一个名为“spring-boot-star…

    Java 2023年5月15日
    00
  • jdk6安装说明 在windows xp中安装JAVA环境办法分享

    下面是“jdk6安装说明 在windows xp中安装JAVA环境办法分享”的完整攻略: 环境准备 首先,你需要下载JDK6的安装包并准备好你的Windows XP电脑。 安装JDK6 双击JDK6安装程序,选择“安装”,然后点击“下一步”按钮。 阅读许可协议,选择“我接受”选项,然后点击“下一步”按钮。 选择JDK软件的安装路径,然后点击“下一步”按钮。 …

    Java 2023年5月24日
    00
  • JAVA文件读取常用工具类(8种)

    为了方便在Java中读取文件,我们通常使用Java文件读取工具类。下面是8种常用的Java文件读取工具类: BufferedReader、Scanner、InputStreamReader、FileInputStream、FileReader、LineNumberReader、RandomAccessFile和BufferedInputStream。 Buf…

    Java 2023年5月20日
    00
  • Resty极简restful框架快速接入Spring

    Resty是一个基于Java的类似于JAX-RS的RESTful框架,它提供了核心的RESTful应用层框架,可以快速搭建RESTful应用程序。在这里,我将详细介绍如何将Resty快速整合到Spring框架中。 准备工作 在整合Resty之前,请确认已经安装好以下环境: JDK 1.8或更高版本 Maven 3.0或更高版本 Spring框架 添加Mave…

    Java 2023年5月19日
    00
  • 实现将Web应用部署到Tomcat根目录的三种方法

    当我们开发一个Web应用并且想要将其部署到Tomcat服务器的根目录时,可以采用以下三种方法: 方法一:部署WAR包到Tomcat的webapps目录下 使用Maven或Gradle等构建工具将Web应用打包成WAR包,或手动打包成WAR包。 将WAR包重命名为ROOT.war,并将其复制到Tomcat的webapps目录下。 启动Tomcat服务器,Tom…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部