📜  Spring MVC验证

📅  最后修改于: 2020-12-04 08:43:00             🧑  作者: Mango

Spring MVC验证

Spring MVC验证用于限制用户提供的输入。为了验证用户的输入,Spring 4或更高版本支持并使用Bean验证API。它可以验证服务器端和客户端应用程序。

Bean验证API

Bean验证API是Java规范,用于通过注释将约束应用于对象模型。在这里,我们可以验证长度,数字,正则表达式等。除此之外,我们还可以提供自定义验证。

由于Bean验证API只是一个规范,因此需要实现。因此,为此,它使用了Hibernate Validator。 Hibernate Validator是完全兼容的JSR-303 / 309实现,允许表达和验证应用程序约束。

验证注释

让我们看看一些常用的验证注释。

Annotation Description
@NotNull It determines that the value can’t be null.
@Min It determines that the number must be equal or greater than the specified value.
@Max It determines that the number must be equal or less than the specified value.
@Size It determines that the size must be equal to the specified value.
@Pattern It determines that the sequence follows the specified regular expression.

Spring MVC验证示例

在此示例中,我们创建一个包含输入字段的简单表单。在此,(*)表示必须输入相应的字段。否则,表格会产生错误。

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

pom.xml



    org.springframework
    spring-webmvc
    5.1.1.RELEASE



    org.apache.tomcat
    tomcat-jasper
    9.0.12

    
  
    javax.servlet  
    servlet-api  
    3.0-alpha-1  



    javax.servlet
    jstl
    1.2

 

    org.hibernate.validator
    hibernate-validator
    6.0.13.Final

2.创建bean类

Employee.java

package com.javatpoint;
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.创建控制器类

在控制器类中:

  • @Valid批注将验证规则应用于提供的对象。
  • BindingResult接口包含验证结果。
package com.javatpoint;

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



  SpringMVC
     
    spring  
    org.springframework.web.servlet.DispatcherServlet  
    1    
  
  
    spring  
    /  
  

5.在xml文件中定义bean

spring-servlet.xml



    
    
    
    
    
     
        
             
     

6.创建请求的页面

index.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>


Click here...


7.创建其他视图组件

viewpage.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>






Username:  

Password(*):

final.jsp



Username: ${emp.name} 

Password: ${emp.pass}

输出:

让我们提交表单而不输入密码。

现在,我们输入密码,然后提交表单。


下载Hibernate Validator Jar文件

如果您不使用Maven,请下载休眠验证程序jar。