博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSR303校验
阅读量:5098 次
发布时间:2019-06-13

本文共 4863 字,大约阅读时间需要 16 分钟。

由于Validation框架通过硬编码完成数据校验,在实际开发中会显得比较麻烦,因此现代开发更加推荐使用JSR303完成数据校验。

JSR303是java为bean数据合法性校验锁提供的一个标准规范,叫做Bean Validation。它是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。

JSR303是一个规范,它的核心接口是javax.validation.Validator,该接口根据目标对象类中所标注的校验注解进行数据校验,并得到校验结果。

目前有两个实现,第一个是Hibernate Validator(下载地址http://hibernate.org/validator/),第二个Apache bval

 

package com.domain;import java.io.Serializable;import java.util.Date;import javax.validation.constraints.Pattern;import org.hibernate.validator.constraints.Email;import org.hibernate.validator.constraints.Length;import org.hibernate.validator.constraints.NotBlank;import org.hibernate.validator.constraints.Range;import org.springframework.format.annotation.DateTimeFormat;public class User implements Serializable{        @NotBlank(message="NotBlank.user.loginname")    private String loginname;    @NotBlank(message="NotBlank.user.password")    @Length(min=6,max=8,message="Length.user.password")    private String password;    @NotBlank(message="NotBlank.user.username")    private String username;    @Email(message="Email.user.youxiang")    private String youxiang;    @Range(min=15,max=60,message="Range.user.nianling")    private String nianling;    //日期使用注解方式转换    @DateTimeFormat(pattern="yyyy-MM-dd")    private Date shengri;    @Pattern(regexp="[1],[3,8],[3,6,9][0-9]{8}",message="Patter.user.dianhua")    private String dianhua;    public String getLoginname() {        return loginname;    }    public void setLoginname(String loginname) {        this.loginname = loginname;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getYouxiang() {        return youxiang;    }    public void setYouxiang(String youxiang) {        this.youxiang = youxiang;    }    public String getNianling() {        return nianling;    }    public void setNianling(String nianling) {        this.nianling = nianling;    }    public Date getShengri() {        return shengri;    }    public void setShengri(Date shengri) {        this.shengri = shengri;    }    public String getDianhua() {        return dianhua;    }    public void setDianhua(String dianhua) {        this.dianhua = dianhua;    }        }
package com.controller;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.Errors;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.domain.User;@Controllerpublic class UserController {    @RequestMapping(value="/{formName}")    public String loginForm(@PathVariable String formName,Model model)    {        User user = new User();        model.addAttribute("user", user);        return formName;     }        //使用@Valid注解对提交的数据进行校验    @RequestMapping(value="/login",method=RequestMethod.POST)    public String login(@Valid @ModelAttribute User user,Errors errors,Model model)    {        if(errors.hasErrors())        {            return "registerForm";        }        return "success";    }    }
登录名
密码
用户名
年龄
邮箱
生日
电话
/WEB-INF/content/
.jsp

转载于:https://www.cnblogs.com/tengfeixinxing/p/7043340.html

你可能感兴趣的文章
待整理
查看>>
iOS 6
查看>>
Nginx入门篇-基础知识与linux下安装操作
查看>>
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
1.linux ping:unknown host www.***.***
查看>>
字符串处理函数
查看>>
jenkins修改时区
查看>>
比较git commit 两个版本之间次数
查看>>
jQuery.support
查看>>
【LeetCode】167. Two Sum II - Input array is sorted
查看>>
如何在g++中添加include文件的目录
查看>>
BlockingQueue深入解析
查看>>
网络编程
查看>>
POJ -2236 Wireless Network
查看>>
CentOS6.9安装Filebeat监控Nginx的访问日志发送到Kafka
查看>>
无向图求桥 UVA 796
查看>>
Nginx+Keepalived 实现双击热备及负载均衡
查看>>
五分钟搭建WordPress博客(二)
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>