转载

SpringMVC数据校验

一、数据校验

在web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对 数据进行验证。输入验证分为客户端验证与服务器端验证。 客户端验证主要通过JavaScript脚本 进行,而 服务器端验证则主要通过Java代码 进行验证。 为了保证数据的安全性,一般情况下,客户端和服务器端验证都是必须的

二、关键步骤:

①、导入JAR包

SpringMVC支持JSR(Java Specification Result,Java规范提案)303-Bean Validation数据验证规范。而该规范的实现者很多,其中较常用的是Hibernate Validator。需要注意的是,Hibernate Validator是与Hibernate ORM并列的Hibernate的产品之一。这一点从Hibernate官网上所提供的资源形式可以看出他们之间的关系。

SpringMVC数据校验

②applicationContext.xml中配置验证器

SpringMVC数据校验

SpringMVC数据校验

③定义实体类,打注解标记

public class UserInfo {
    @NotEmpty(message="用户名不能为空")
    @Size(min=3,max=6,message="姓名长度应在{min}-{max}")
    private String username;
     
    @NotNull(message="成绩最大值为100")
    @Min(value=0,message="成绩不能小于{value}")
    @Max(value=100,message="成绩不能大于{value}")
    private Integer score;
     
    @NotEmpty(message="手机号码不允许为空")
    @Pattern(regexp="^1[34578]//d{9}$",message="手机号码格式不正确")
    private String phone;
}

注:

下面是主要的验证注解及说明:

注解

适用的数据类型

说明

@AssertFalse

Boolean, boolean

验证注解的元素值是false

@AssertTrue

Boolean, boolean

验证注解的元素值是true

@DecimalMax (value=x)

BigDecimal, BigInteger, String, byte,short, int, long and the respective wrappers of the primitive types. Additionally supported by HV: any sub-type of Number andCharSequence.

验证注解的元素值小于等于@ DecimalMax指定的value值

@DecimalMin (value=x)

BigDecimal, BigInteger, String, byte,short, int, long and the respective wrappers of the primitive types. Additionally supported by HV: any sub-type of Number andCharSequence.

验证注解的元素值小于等于@ DecimalMin指定的value值

@Digits(integer= 整数位数, fraction=小数位数)

BigDecimal, BigInteger, String, byte,short, int, long and the respective wrappers of the primitive types. Additionally supported by HV: any sub-type of Number andCharSequence.

验证注解的元素值的整数位数和小数位数上限

@Future

java.util.Date, java.util.Calendar; Additionally supported by HV, if theJoda Time date/time API is on the class path: any implementations ofReadablePartial andReadableInstant.

验证注解的元素值(日期类型)比当前时间晚

@Max (value=x)

BigDecimal, BigInteger, byte, short,int, long and the respective wrappers of the primitive types. Additionally supported by HV: any sub-type ofCharSequence (the numeric value represented by the character sequence is evaluated), any sub-type of Number.

验证注解的元素值小于等于@Max指定的value值

@Min (value=x)

BigDecimal, BigInteger, byte, short,int, long and the respective wrappers of the primitive types. Additionally supported by HV: any sub-type of CharSequence (the numeric value represented by the char sequence is evaluated), any sub-type of Number.

验证注解的元素值大于等于@Min指定的value值

@NotNull

Any type

验证注解的元素值不是null

@Null

Any type

验证注解的元素值是null

@Past

java.util.Date, java.util.Calendar; Additionally supported by HV, if theJoda Time date/time API is on the class path: any implementations ofReadablePartial andReadableInstant.

验证注解的元素值(日期类型)比当前时间早

@Pattern(regex= 正则表达式, flag=)

String. Additionally supported by HV: any sub-type of CharSequence.

验证注解的元素值与指定的正则表达式匹配

@Size(min= 最小值, max=最大值)

String, Collection, Map and arrays. Additionally supported by HV: any sub-type of CharSequence.

验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小

@Valid

Any non-primitive type(引用类型)

验证关联的对象,如账户对象里有一个订单对象,指定验证订单对象

@NotEmpty

CharSequence , CollectionMap and Arrays

验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

@Range(min= 最小值, max=最大值)

CharSequence, Collection, Map and Arrays,BigDecimal, BigInteger, CharSequence, byte, short, int, long and the respective wrappers of the primitive types

验证注解的元素值在最小值和最大值之间

@NotBlank

CharSequence

验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

@Length(min= 下限, max=上限)

CharSequence

验证注解的元素值长度在min和max区间内

@Email

CharSequence

验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

④书写Controller方法

SpringMVC数据校验

SpringMVC数据校验

⑤搭建jsp页面

<form action="${pageContext.request.contextPath }/first.do" method="post">
   <h1>数据验证</h1>
                姓名:<input name="username"/>${namemsg }<br/><br/>
                成绩:<input name="score" />${scoremsg}<br/><br/>
                电话:<input name="phone" />${phonemsg }<br/><br/>
      <input type="submit" value="注册"/>
   </form>

实现效果:

若都不进行输入:

SpringMVC数据校验

若输入合法:

SpringMVC数据校验

SpringMVC数据校验

SpringMVC+MyBatis集成配置 http://www.linuxidc.com/Linux/2016-09/135212.htm

SpringMVC总结篇 http://www.linuxidc.com/Linux/2016-06/132659.htm

Spring+SpringMVC企业快速开发架构搭建 http://www.linuxidc.com/Linux/2015-09/122942.htm

SpringMVC的乱码处理 http://www.linuxidc.com/Linux/2015-07/120542.htm

Spring MVC+Spring3+Hibernate4开发环境搭建 http://www.linuxidc.com/Linux/2013-07/87119.htm

Spring MVC整合Freemarker基于注解方式 http://www.linuxidc.com/Linux/2013-02/79660.htm

基于注解的Spring MVC简单介绍 http://www.linuxidc.com/Linux/2012-02/54896.htm

SpringMVC详细示例实战教程 http://www.linuxidc.com/Linux/2015-06/118461.htm

SpringMVC错误页面配置 http://www.linuxidc.com/Linux/2016-12/138097.htm

SpringMVC 异常处理 http://www.linuxidc.com/Linux/2015-06/119049.htm

SpringMVC框架入门配置 IDEA下搭建Maven项目 http://www.linuxidc.com/Linux/2016-09/134918.htm

本文永久更新链接地址 : http://www.linuxidc.com/Linux/2017-01/139333.htm

原文  http://www.linuxidc.com/Linux/2017-01/139333.htm
正文到此结束
Loading...