SpringMVC输入校验

    使用JSR-303进行校验
    额外的jar包:hibernate-validator-5.1.3.Final-dist.zip中dist/hibernate-validator-5.1.3.Final.jar和dist/ lib/*.jar

需要校验的Bean:
public class Client {
	@NotEmpty(message = "not null")//也可以注解在getXXX方法上,一样可以校验
	private String name;
	@NotEmpty(message = "not null")
	@Size(min = 3, max = 10, message = "密码的长度必须大于3小于10")
	private String password;
	@Pattern(regexp = "(\\w+\\.*)\\w+@\\w+\\.[a-zA-z]{2,6}", message = "邮箱的格式不正确!")
	private String email;

	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
}

MyController.java
@Controller
@RequestMapping(value = "/hello")
public class MyController {
        // GET时不用校验
	@RequestMapping(value = "/h1", method = RequestMethod.GET)
	public String print1(Client client) {
		return "welcome";
	}

        // POST时需要校验
	@RequestMapping(value = "/h1", method = RequestMethod.POST)
	public String print3(@Valid Client client, BindingResult result) {
		System.out.println(client.getName());
		System.out.println(client.getPassword());
		System.out.println(client.getEmail());
		return "welcome";
	}
}
    这里一个@Valid的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常

welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<%@taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'welcome.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>
<sf:form method="post" modelAttribute="client"><!-- 用client接收 -->
		姓名:<input type="text" name="name" />
		<sf:errors path="name" />
		<br /> Password:<input type="password" name="password" />
		<sf:errors path="password" />
		<br /> Email:<input type="text" name="email" />
		<sf:errors path="email" />
		<br /> <input type="submit" />
	</sf:form>
</body>
</html>

<mvc:annotation-driven /> 会自动开启spring的Valid功能,所以不需要额外配置


JSR303定义的校验类型

空检查
   @Null            验证对象是否为null
   @NotNull      验证对象是否不为null, 无法查检长度为0的字符串
   @NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
   @NotEmpty  检查约束元素是否为NULL或者是EMPTY.
 
Booelan检查
   @AssertTrue     验证 Boolean 对象是否为 true  
   @AssertFalse   验证 Boolean 对象是否为 false  
 
长度检查
   @Size(min=, max=)       验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
   @Length(min=, max=)   Validates that the annotated string is between min and max included.
 
日期检查
   @Past        验证 Date 和 Calendar 对象是否在当前时间之前  
   @Future     验证 Date 和 Calendar 对象是否在当前时间之后  
   @Pattern    验证 String 对象是否符合正则表达式的规则
 
数值检查,建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null
   @Min                 验证 Number 和 String 对象是否大等于指定的值  
   @Max                验证 Number 和 String 对象是否小等于指定的值  
   @DecimalMax   被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
   @DecimalMin    被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
   @Digits              验证 Number 和 String 的构成是否合法  
   @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
 
   @Range(min=, max=) Checks whether the annotated value lies between (inclusive) the specified minimum and maximum.
   @Range(min=10000,max=50000,message="range.bean.wage")  private BigDecimal wage;
 
   @Email  验证是否是邮件地址,如果为null,不进行验证,算通过验证。
   @URL(protocol=,host=, port=,regexp=, flags=)

你可能感兴趣的:(SpringMVC输入校验)