SpringMVC_数据校验

一:数据校验的分类

数据校验分为前台校验和后台校验,前台校验主要是利用JavaScript来完成的,后台校验主要利用Java代码来完成的,可以使用SpringMvc和Hibernate validator来完成数据校验

二:后台数据校验

1:导入Maven相关Jar包(在父pom.xml文件中)

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>6.0.9.Final</version>
</dependency>

2:创建Java类需要校验的数据属性上添加相应的注解

package com.doaoao.check;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;

public class testUser {
    
    @NotEmpty(message = "用户名不能为空")
    @Size(min = 5,max = 10,message = "用户名的长度为{min}-{max}之间")  // 会将{min}替换为前面设置的min值
    private String username;
    
    @Min(value = 0,message = "年龄的大小不能小于{vlaue}")
    @Min(value = 150,message = "年龄的大小不能大于{vlaue}")
    private int age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 3:修改配置文件 springmvc.xml中的内容

<!--验证器-->
<bean id="doaoaoValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean>

<!--注册注解驱动-->
<mvc:annotation-driven validator="doaoaoValidator"/>

4:创建一个Controller

package com.doaoao.check;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
public class UserController {
    @RequestMapping("/register.do")
    public ModelAndView register(@Validated testUser user, BindingResult br){
        ModelAndView m = new ModelAndView();
        List<ObjectError> allError = br.getAllErrors();
        // 当格式校验出错时执行 alllError不为空时
        if(allError != null && allError.size() > 0){
            FieldError nameError = br.getFieldError("name");
            FieldError ageError = br.getFieldError("age");

            // 当用户名输入出现问题
            if(nameError != null){
                m.addObject("nameError",nameError.getDefaultMessage());
            }

            // 当年龄输入出现问题
            if(ageError != null){
                m.addObject("ageError",ageError.getDefaultMessage());
            }
            m.setViewName("/register");
            return m;
        }
        m.addObject("name",user.getUsername());
        m.setViewName("/user");
        return m;
    }
}

5:jsp中的内容

 <form action="/register.do" method="get">
    用户名:<input type="text" name="username">${nameError}<br>
    年龄:<input type="text" name="age">${ageError}<br>
    <input type="submit" value="提交">
</form>

# 注:hibernate validator中常用注解

 ...

本笔记参考自:小猴子老师教程 http://www.monkey1024.com

原文地址:https://www.cnblogs.com/Doaoao/p/10669968.html