spring-webmvc数据校验

1、pom.xml

XML 复制代码
  <dependencies> 
    <dependency> 
      <groupId>org.springframework</groupId>  
      <artifactId>spring-context</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework</groupId>  
      <artifactId>spring-webmvc</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>jakarta.platform</groupId>  
      <artifactId>jakarta.jakartaee-web-api</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId>  
      <artifactId>jackson-databind</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.projectlombok</groupId>  
      <artifactId>lombok</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.hibernate.validator</groupId>  
      <artifactId>hibernate-validator</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.hibernate.validator</groupId>  
      <artifactId>hibernate-validator-annotation-processor</artifactId> 
    </dependency> 
  </dependencies>

2、web.xml

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
	version="4.0">

	<servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

3、springmvc.xml

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="com.atguigu.controller"/>
    <mvc:default-servlet-handler/>
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"><!-- 默认编码是iso-8859-1 -->
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=utf-8</value>
                        <value>text/html;charset=utf-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
</beans>

4、User.java

java 复制代码
package com.atguigu.pojo;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Max(150)
    @Min(0)
    private Integer age;
    @Length(min = 6,max = 20)
    private String name;
    @Email
    private String email;
}

5、ValidateController.java

java 复制代码
package com.atguigu.controller;
import com.atguigu.pojo.User;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/validate")
public class ValidateController {

    @PostMapping
    public Object h01(@Validated @RequestBody User user , BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return bindingResult.getFieldError().toString();
        } else {
            System.out.println(user);
            return user;
        }
    }
}

6、BindingResult

BindingResult 是 Spring MVC 框架中的一个接口,它用于处理数据绑定过程中可能发生的错误。在 Spring MVC 中,当你尝试将请求参数绑定到一个 Java 对象(例如一个表单提交)时,如果发生任何错误,例如类型转换错误、缺少必需的字段等,这些错误将被捕获并存储在一个 BindingResult 对象中。

你可以在你的控制器方法中包含一个 BindingResult 参数,Spring MVC 会自动填充该参数,这样你就可以检查和处理任何在数据绑定过程中发生的错误。

下面是一个简单的例子,演示了如何使用 BindingResult

java 复制代码
@Controller  
public class MyController {  
  
    @RequestMapping(value = "/submitForm", method = RequestMethod.POST)  
    public String submitForm(@ModelAttribute("myForm") MyForm myForm, BindingResult result) {  
        if (result.hasErrors()) {  
            // 数据绑定过程中发生错误,处理错误  
            return "error";  
        } else {  
            // 数据绑定成功,处理表单提交  
            return "success";  
        }  
    }  
}

在这个例子中,我们有一个名为 MyForm 的表单对象,我们尝试将请求参数绑定到这个对象上。如果数据绑定过程中发生任何错误,这些错误将被捕获并存储在 result 对象中。我们可以通过调用 result.hasErrors() 来检查是否有错误发生,如果有,我们可以返回一个错误页面,如果没有,我们可以处理表单提交并返回一个成功页面。

相关推荐
太空眼睛11 天前
【Email】基于SpringBoot3.4.x集成发送邮件功能
spring boot·jdk·html·thymeleaf·模板·mail·email
CoderJia程序员甲1 个月前
重学SpringBoot3-如何发送 Email
java·spring boot·后端·email
慧都小妮子2 个月前
借助Aspose.Email,使用 PowerShell 和 .NET 将 MSG 转换为 EML
.net·aspose·电子邮件·email·aspose.email
bug菌¹3 个月前
滚雪球学MySQL[3.2讲]:MySQL聚合函数与分组详解:COUNT、SUM、AVG、MAX、MIN及GROUP BY与HAVING
数据库·mysql·max·sum·count·min·avg
麻辣香蝈蝈4 个月前
【Java】Spring Boot使用 Email 传邮件 (上手图解)
java·开发语言·spring boot·后端·intellij-idea·email
xianyinsuifeng6 个月前
AWS无服务器 应用程序开发—第七章 邮件服务 发布订阅(Amazon SES)
serverless·aws·email·ses·sns
陌尘(MoCheeen)6 个月前
git配置1-不同的项目使用不同用户名或邮箱
git·config·user·email·邮箱
Damon小智9 个月前
C#进阶-实现邮箱收发功能
c#·asp.net·exchange·smtp·email·imap·pop3
_pass_9 个月前
email + celery+django 异步发送邮件功能的实现
celery·email
core5121 年前
Flink max maxby区别
大数据·flink·max·maxby