SpringMVC10数据验证

在之前的案例上面! 引入需要的验证jar包

创建index.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML>
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  
  <body>
      <form action="student/addStudent"  method="post">
     年龄:<input type="text" name="age"/> ${ageE} <br/>
     姓名:  <input type="text" name="userName"/>${userNameE}<br/>
   电话:<input type="text" name="phone"> ${phoneE}<br/> 
       <input type="submit" value="新增"/>
      </form>
  </body>
</html>

对应的Student类

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotBlank;

/**
 * 
 * @NotNull   作用在基本数据类型上
 * @NotBlank  作用在String上
 * @NotEmpty  作用在集合上
 *  @Min  最小值
 *  @Max  最大值
 *  @Size  字符串的长度
 * @Pattern  自定义验证规则 
 * 
 */
public class Student {

      @NotNull(message="年龄不能为空")
      @Min(value=0,message="年龄不能低于{value}")
      @Max(value=150,message="年龄不能高于{value}")
      private  Integer  age; //年龄
      @NotBlank(message="姓名不能为空")
      @Size(min=6,max=10,message="长度必须在{min}---{max}之间")
      private  String  userName;  //姓名
      @NotBlank(message="手机号不能为空")
      @Pattern(regexp="^1[345789]\d{9}$",message="手机格式不正确")
      private  String  phone;  //电话
      
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public Student(Integer age, String userName, String phone) {
        super();
        this.age = age;
        this.userName = userName;
        this.phone = phone;
    }
    public Student() {
        super();
    }
       
    

}

对应的controller

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import sun.util.calendar.BaseCalendar;

import cn.bdqn.bean.Student;

@Controller
@RequestMapping("/student")
public class StudentController  {
    
    /**
     * 
     *@Validated  :会对student对象中所有标注 注解的属性进行验证!
     *BindingResult:如果 验证出现错误 ,就会把错误信息给这个result
     *
     *result.getFieldError("age").getDefaultMessage()
     *获取我们设置的错误 信息!
     *
     */
    @RequestMapping("/addStudent")
    public ModelAndView  addStudent(@Validated Student student,BindingResult result) {
        System.out.println("进入了  addStudent");
        ModelAndView mv=new ModelAndView();
        if (result.hasErrors()) {  //出现了验证错误
            if (result.getFieldError("age")!=null) {  //证明age验证有错误
                mv.addObject("ageE", result.getFieldError("age").getDefaultMessage());
            }
            if (result.getFieldError("userName")!=null) {  //证明userName验证有错误
                mv.addObject("userNameE", result.getFieldError("userName").getDefaultMessage());
            }
            if (result.getFieldError("phone")!=null) {  //证明phone验证有错误
                mv.addObject("phoneE", result.getFieldError("phone").getDefaultMessage());
            }
            mv.setViewName("/index.jsp");
            return   mv;
        }
        mv.setViewName("/success.jsp");
       return   mv;
    }
    
    
    
    
}

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:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    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/tx 
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        ">
  <!-- 配置springmvc的组件  -->
  <context:component-scan base-package="cn.bdqn.controller"/>
  <!-- 开启 注解的方式-->
  <mvc:annotation-driven validator="myValidator"/>
  <!-- 生成我们的验证器 -->
  <bean  id="myValidator"  class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
  </bean>
  
</beans>
原文地址:https://www.cnblogs.com/999-/p/6163643.html