博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM-SpringMVC-31:SpringMVC中利用hibernate-validator做后台校验
阅读量:7095 次
发布时间:2019-06-28

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

 

 

 

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

 

 

校验有三种:前台页面校验(例如js和h5),后台校验,数据库校验

但是一般能不用数据库校验就不用数据库校验,因为性能损耗严重,

所以,我们用前台和后台俩种,可以说最好,绝大部分情况下,前台后台都要写,如果一个用户比较搞事,直接把它浏览器上的js给禁用掉了,那么如果没有后台校验,他将直接杀向数据库

 

很多人一提hibernate就说,哦,是一个框架,ORM框架,数据库访问层的框架,SSH的那个H!!!!

这个答案其实很一般,HibernateORM是Hibernate框架其中的一个重要的组成部分之一,像其它的例如hibernate-validator这个校验框架其实很不错

 

好了,不扯皮了,说说怎么用。。。。。。。

 

案例:

  一,引入jar包

 

org.hibernate
hibernate-validator
4.3.1.Final
javax.validation
validation-api
1.0.0.GA

 

      也不知道大家看到了没有,由于是maven项目,只需要俩个节点就好,它会自动引入相关联的jar,如果不是maven,或者maven不好用,则还需要再引俩个jar,我把全部jar包的节点放上来

 

org.hibernate
hibernate-validator
4.0.1.GA
org.jboss.logging
jboss-logging
3.3.0.Final
javax.validation
validation-api
1.0.0.GA
org.slf4j
slf4j-api
1.7.21
数据校验全部的jar,合起来

 

  二,自己的大配置文件xml,里面需要新配置一个验证器,并且绑定注解驱动

 

 

  三,修改web.xml中央调度器的上下文配置位置为上面那个配置文件

  四,建一个实体类:里面用注解做校验,很好理解,有些用正则

 

package cn.dawn.day23validator;import org.hibernate.validator.constraints.NotEmpty;import org.springframework.format.annotation.DateTimeFormat;import javax.validation.constraints.Max;import javax.validation.constraints.Min;import javax.validation.constraints.Pattern;import javax.validation.constraints.Size;import java.util.Date;/** * Created by Dawn on 2018/3/31. */public class UserInfo {    @NotEmpty(message = "用户名不能为空")    @Size(min = 6,max = 20,message = "用户名的长度必须在{min}-{max}之间")    private String username;    @Max(value = 150,message = "最老150岁")    @Min(value = 0,message = "最小0岁")    private Integer userage;    @NotEmpty(message = "手机号码不能为空")    @Pattern(regexp = "^1[3|5|7|8|9]\\d{9}$",message = "手机号码格式不正确")    private String userphone;    @NotEmpty(message = "邮箱不能为空")    @Pattern(regexp = "^\\w+@\\w+\\.\\w+$",message = "邮箱格式不正确")    private String email;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public Integer getUserage() {        return userage;    }    public void setUserage(Integer userage) {        this.userage = userage;    }    public String getUserphone() {        return userphone;    }    public void setUserphone(String userphone) {        this.userphone = userphone;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }}

 

  五,自定义的处理器和处理方法

 

package cn.dawn.day23validator;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import javax.validation.Valid;/** * Created by Dawn on 2018/3/31. */@Controllerpublic class ValidatorController {    @RequestMapping("/validatorZC")    public String validatorZC(@Valid UserInfo userInfo, BindingResult br, Model model){        //判定br中错误数是否大于0,如果true,证明有一个验证失败了        if (br.getErrorCount()>0){            FieldError userage=br.getFieldError("userage");            FieldError username=br.getFieldError("username");            FieldError userphone=br.getFieldError("userphone");            FieldError email=br.getFieldError("email");            //哪个验证失败,就回显示哪个            if(userage!=null){                String useragemsg = userage.getDefaultMessage();                model.addAttribute("useragemsg",useragemsg);            }            if(username!=null){                String usernamemsg = username.getDefaultMessage();                model.addAttribute("usernamemsg",usernamemsg);            }            if(userphone!=null){                String userphonemsg = userphone.getDefaultMessage();                model.addAttribute("userphonemsg",userphonemsg);            }            if(email!=null){                String emailmsg = email.getDefaultMessage();                model.addAttribute("emailmsg",emailmsg);            }            //这个if里面就是肯定有错误,回显示名字            model.addAttribute("username",userInfo.getUsername());            /*返回注册页面*/            return "validator";        }        /*注册成功*/        return "success";    }}

 

  六,jsp页面

    6.1validator.jsp页面

 

<%--  Created by IntelliJ IDEA.  User: Dawn  Date: 2018/3/31  Time: 17:21  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>    Title

数据校验

年龄:
${useragemsg }
姓名:
${usernamemsg }
电话:
${userphonemsg }
邮箱:
${emailmsg}

 

    6.2success.jsp页面

 

<%@ page language="java" pageEncoding="utf-8" isELIgnored="false" %><%----%>

Success!

 

  七,启动tomcat,访问validator.jsp页面

 

 

有什么不懂的,联系我,原作者:晨曦Dawn

转载请注明出处    http://www.cnblogs.com/DawnCHENXI/p/8684167.html

 

你可能感兴趣的文章
用Class ID做网络分流
查看>>
nginx配置详解
查看>>
shell脚本之循环结构&函数的使用(二)
查看>>
Java基础学习总结(23)——GUI编程
查看>>
navigationItem标题以及左右button的创建...
查看>>
RabbitMQ学习总结(7)——Spring整合RabbitMQ实例
查看>>
zookeeper初探三 java客户端连接
查看>>
ImportError: Settings cannot be imported 错误处理
查看>>
宝玉论“后生可畏”,存于此以自勉
查看>>
linux mkdir命令
查看>>
可变参数列表
查看>>
网络综合实训学习资料
查看>>
iOS9 App Thinning(应用瘦身)功能介绍
查看>>
LVS(DR) + Keepalive实现负载均衡
查看>>
JavaScript基础教程(一)
查看>>
关于容灾的那些事儿
查看>>
查询?还是计算?这不再是个问题!(二)
查看>>
SQL Server Alwayson读写分离配置
查看>>
【源资讯 第41期】前端项目一言不合就分叉;工程师一言不合就删库??
查看>>
date(时间),timedatectl(时区),cal(日历)的用法
查看>>