English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Validación MVC de Spring

La validación de Spring MVC se utiliza para limitar la entrada proporcionada por el usuario. Para validar la entrada del usuario, Spring 4o una versión más alta que admite y utiliza el API de validación de Bean. Puede validar tanto aplicaciones del lado del servidor como del lado del cliente.

API de validación de Bean

El API de validación de Bean es una especificación de Java que se puede usar para aplicar restricciones al modelo de objetos a través de comentarios. Aquí podemos validar la longitud, los números, las expresiones regulares, etc. Además, podemos proporcionar validaciones personalizadas.

Dado que el API de validación de Bean es solo una especificación, se necesita una implementación. Por lo tanto, para esto, utiliza Hibernate Validator. Hibernate Validator es completamente compatible con JSR-303/309Implementación que permite expresar y validar las restricciones de la aplicación.

Comentarios de validación

Veamos algunos comentarios de validación comunes.

ComentarioDescripción
@NotNullEl valor no puede estar vacío.
@MinLa cifra debe ser igual o mayor al valor especificado.
@MaxLa cifra debe ser igual o menor al valor especificado.
@Size@Size
确定大小必须等于指定的值。@Pattern

它确定序列遵循指定的正则表达式。

Spring MVC验证示例*在此示例中,我们创建了一个包含输入字段的简单表单。在此,(

1)表示必须输入相应的字段。否则,表格会产生错误。

、将依赖项添加到pom.xml文件。

<!-- .//https:/mvnrepository.com/pom.xml/spring-org.springframework -->
validator
    webmvc/<groupId>org.hibernate.validator<
    <groupId>org.springframework<-<artifactId>spring/<artifactId>validator<
    <version>5<artifactId>jstl<1<artifactId>jstl<1webmvc</version>
</dependency>
<!-- .//https:/mvnrepository.com/.RELEASE</org.apache.tomcat-tomcat -->
validator
    jasper/<groupId>org.hibernate.validator<
    <groupId>org.apache.tomcat<-<artifactId>tomcat/<artifactId>validator<
    <version>9.0.12</version>
</dependency>
    <!-- .//https:/mvnrepository.com/alpha/alpha-jasper< -->
validator  
    jstl/<groupId>org.hibernate.validator<  
    api-<artifactId>servlet/<artifactId>validator<  
    <version>3api<-.0-1</version>  
</dependency>
<!-- .//https:/mvnrepository.com/alpha/javax.servlet -->
validator
    jstl/<groupId>org.hibernate.validator<
    <groupId>javax.servlet</<artifactId>validator<
    <version>1<artifactId>jstl<2</version>
</dependency>
 <!-- .//https:/mvnrepository.com/artifact/org.hibernate.validator-hibernate -->
validator
    <dependency>/<groupId>org.hibernate.validator<
    groupId>-<artifactId>hibernate/<artifactId>validator<
    <version>6.0.13.Final</version>
</dependency>

2、创建bean类

Employee.java

package com.w3codebox;
import javax.validation.constraints.Size;
public class Employee {
  private String name;
  @Size(min=1,message="required")
  private String pass;
  
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getPass() {
    return pass;
  }
  public void setPass(String pass) {
    this.pass = pass;
  } 
}

3、Crear la clase del controlador

En la clase del controlador:

@validoLos comentarios aplican las reglas de validación al objeto proporcionado. BindingResult La interfaz contiene los resultados de la validación.

package com.w3codebox;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class EmployeeController {
  @RequestMapping("/hello")
  public String display(Model m)
  {
    m.addAttribute("emp", new Employee());
    return "viewpage";
  }
  @RequestMapping("/helloagain")
  public String submitForm( @Valid @ModelAttribute("emp") Employee e, BindingResult br)
  {
    if(br.hasErrors())
    {
      return "viewpage";
    }
    else
    {
    return "final";
    }
  }
}

4、在web.xml文件中提供控制器的条目

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3"_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVC</display-name>
   <servlet>  
    <servlet-name>spring</servlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>    
</servlet>  
<servlet-mapping>  
    <servlet-name>spring</servlet-name>  
    <url-pattern>/</url-pattern>  
</servlet-mapping>  
</web-app>

5、在xml文件中定义Bean

spring-servlet.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
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  <!-- Provide support for component scanning -->
  <context:component-scan base-package="com.w3codebox" />
  <!--Provide support for conversion, formatting and validation -->
  <mvc:annotation-driven/>
  <!-- Define Spring MVC view resolver -->
     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/></property>
        <property name="suffix" value=".jsp"></property>     
     </bean>
</beans>

6、Crear la página de solicitud

index.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<body>
<a href="hello">Haga clic aquí...</a>
</body>
</html>

7、Crear otros componentes de vista

viewpage.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<style>
.error{color:red}
</style>
</head>
<body>
<form:form action="helloagain" modelAttribute="emp">
Nombre de usuario: <form:input path="name"/> <br><br>
Contraseña(*): <form:password path="pass"/>  
<form:errors path="pass" cssClass="error"/><br><br>
<input type="submit" value="submit">
</form:form>
</body>
</html>

final.jsp

<html>
<body>
Nombre de usuario: ${emp.name} <br><br>
Contraseña: ${emp.pass}
</body>
</html>

Salida:


Enviamos el formulario sin ingresar la contraseña.


Ahora, ingresamos la contraseña y luego enviamos el formulario.