SpirngMVC 数据校验

201 阅读2分钟

1.配置pom.xml

<!-- validator1 -->
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.3.1</version>
</dependency>
<!-- validator2 -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.17.Final</version>
</dependency>
<!-- validator3 -->
<dependency>
    <groupId>org.jboss.logging</groupId>
    <artifactId>jboss-logging</artifactId>
    <version>3.4.1.Final</version>
</dependency>
<!-- validator4 -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

2.配置servlet-context.xml

<!-- Validator -->
<annotation-driven validator="validator"/>
<beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
	<beans:property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</beans:bean>

3.测试类

以注册qq为例。

import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

public class QQ {
	@NotBlank
	@NotNull
	@Pattern(regexp="\\w{4,10}" , message="nick must be 4-10 chars or numbers.")
	private String nick;
	
	@NotNull
	@Pattern(regexp="\\w{3,20}" , message="password must be 3-20 chars or numbers")
	private String password;
	
	@NotNull
	@Min(value=1, message="age too young")
	@Max(value=150, message="age too old")
	private Integer age;
	
	@NotBlank
	@NotNull
	@Email(message="email can not be blank.")
	private String email;
	
	
	public String getNick() {
		return nick;
	}
	public void setNick(String nick) {
		this.nick = nick;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

controller

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;

import com.cuts.siled.service.impl.entity.QQ;


@Controller
public class TestValidatorController {
	@RequestMapping("validator")
	public String show() {
		return "registQQ";
	}
	
	@RequestMapping("doRegist") 
	public String registHandler(@Valid QQ qq, BindingResult result) {
		if (result.hasErrors()) {
			for (FieldError error : result.getFieldErrors()) {
				String filedName = error.getField();
				String msg = error.getDefaultMessage();
				System.out.println(filedName + ":" + msg);
			}
			return "registQQ";
		}
		return "success";
	}
}

jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>regist QQ</title>
</head>
<body>
  <form action="doRegist" method="post">
    <table>
      <tr>
        <td>姓名:<input type="text" name="nick" placeHolder="请输入4-10位字母或数字跟下划线组合"></td>
      </tr>
      <tr>  
        <td>密码:<input type="password" name="password" placeHolder="请输入3-20位数字、字母、下划线组合"></td>
      </tr>
      <tr>
        <td>年龄:<input type="text" name="age" placeHolder="请输入正确的年龄"></td>
      </tr>
      <tr>  
        <td>邮箱:<input type="text" name="email" placeHolder="请输入邮箱"></td>
      </tr>
      <tr>  
        <td><input type="submit" value="提交" ><input type="reset" value="重置"></td>
      </tr>
    </table>
  </form>
</body>
</html>