package com.ldf.domain;

import java.text.ParseException;

public class UserCheck {

	//从表单获取的数据
private String username;
private String password;
private String repassword;
private String email;
private String birthday; //创建一个存储验证信息的msgMap
Map<String, String> msg = new HashMap<String, String>(); public boolean validata(){
//验证用户名
if ("".equals(username)) {
msg.put("username", "用户名不能为空!!");
}else if(!username.matches("^[a-zA-Z][a-zA-Z0-9]{2,15}$")){
msg.put("username", "用户名长度为3~15之间,必须以字母开头");
}else if (new UserServiceImpl().findUserByName(username)) {//创建一个user服务
msg.put("username", "用户名已经存在!请重新输入!");
} //验证密码
if ("".equals(password)) {
msg.put("password", "密码不能为空!!");
}else if(!password.matches("^[a-zA-Z0-9]{4,10}$")){
msg.put("password", "密码不能含有非法字符,长度在4-10之间");
} //验证确认密码
if ("".equals(repassword)) {
msg.put("repassword", "确认密码不能为空!!");
}else if (!repassword.equals(password)) {
msg.put("repassword", "两次密码不一致");
} //验证邮箱
if ("".equals(email)) {
msg.put("email", "邮箱不能为空!!");
}else if(!email.matches("^\\w+@\\w+(\\.[a-zA-Z]{2,3}){1,2}$")){
msg.put("email", "邮箱格式不正确,例如web@sohu.com");
}
//验证生日
if ("".equals(birthday)) {
msg.put("birthday", "生日不能为空!!");
}else{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
sdf.parse(birthday);
} catch (ParseException e) {
msg.put("birthday", "生日格式不对,正确为yyyy-MM-dd");
}
} return msg.isEmpty();
}
//省略getter和setter方法
}

  1.验证信息包括,表单各项信息是否为空,两次密码是否一致,各项信息格式是否正确,用户名是否存在,验证码是否正确(待更新)

  2.从表单获取的数据,字段定义要与表单中的数据字段定义一致,从表单获得的数据格式都为String,因此BeanFrom中字段定义的时候,数据类型全部为String.

//从表单获取的数据
private String username;
private String password;
private String repassword;
private String email;
private String birthday;

  3.Map集合是用来存储验证的错误信息.错误信息的key要与字段定义一致.判断错误的顺序一般为  空->格式->特有判断.

  4.正则表达式的知识

  5.时间判断上通过SimpleDateFormat类,进行格式判断,如果格式正确,birthday字符串将转换为Date数据,说明符合格式;如果格式不正确,在转换过程中就会产生ParseException,将错误信息,封装到msg中即可.

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  try {
sdf.parse(birthday);
  } catch (ParseException e) {
msg.put("birthday", "生日格式不对,正确为yyyy-MM-dd");
  }

  6.如果msg为空,就说明没有任何错误信息被添加,也就说明验证成功,没有产生任何的错误,验证通过;反之,验证失败,将错误信息封装到msg中,通过一定的方式传到页面中.

新增知识

7.如果相关的变量都存储在properties文件中,可以使用java.util.ResourceBundle进行读取文件

static{
//config为属性文件名,放在包com.test.config下,如果是放在src下,直接用config即可

ResourceBundle resource = ResourceBundle.getBundle("com/test/config/config");
unameed = rb.getString("uname"); 
pwded = rb.getString("pwd");
}

 

后台数据校验-BeanCheck的更多相关文章

  1. spring的后台数据校验

    数据校验对于开发项目来说是必须的.校验一般分为前台校验和后台校验,前台校验是必须要做的,后台校验是可选的.后台校验相对前台校验来说配置起来一般更复杂.前台校验通过js做,前台校验一般非常容易绕过.sp ...

  2. JSR 303 进行后台数据校验

    一.JSR 303 1.什么是 JSR 303? JSR 是 Java Specification Requests 的缩写,即 Java 规范提案. 存在各种各样的 JSR,简单的理解为 JSR 是 ...

  3. 使用JSR-303进行后台数据校验

    一.在SringMVC中使用 使用注解 1.准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口: hibernate-validator-4.2.0.Fina ...

  4. jquery.validate 验证(支持前台js验证通过,然后ajax后台数据校验)二

      jquery.validate  为啥 源码 里面 规定 dataType: "json" 呢 因为 他配套的 是  messages  下面 的 remote  属性 验证失 ...

  5. 用spring的@Validated注解和org.hibernate.validator.constraints.*的一些注解在后台完成数据校验

    这个demo主要是让spring的@Validated注解和hibernate支持JSR数据校验的一些注解结合起来,完成数据校验.这个demo用的是springboot. 首先domain对象Foo的 ...

  6. Struts2数据校验

    Struts2数据校验 1.常见数据校验方法 表单数据的校验方式: 表单中的数据必须被效验以后才能够被使用,常用的效验方式分为两种: 前台校验:也称之为客户端效验,主要是通过JS编程的方式进行表单数据 ...

  7. (转)struts2:数据校验,通过XWork校验框架实现(validation.xml)

    转载自:http://www.cnblogs.com/nayitian/p/3475661.html struts2:数据校验,通过XWork校验框架实现(validation.xml)   根据输入 ...

  8. struts2:数据校验,通过XWork校验框架实现(validation.xml)

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种: 参考:struts2:数据校验,通过Action中的validate()方法实现校 ...

  9. struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)

    前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...

随机推荐

  1. Nodejs Express模块server.address().address为::

    来自 http://blog.csdn.net/medivhq/article/details/74171939 我按照菜鸟教程上的写法为:(http://www.runoob.com/nodejs/ ...

  2. Vmware下Kali设置桥接网络无法上网

    1.检查是否设置桥接 2.编辑>首选项>虚拟网络编辑器>选对本机上网的网卡 3.检查上网的网卡>适配器属性栏有没有 Vmware Bridge Protocol 桥接的服务. ...

  3. HEOI 十二省联考退役记

    Day -1 简要的说了些注意事项 一整天都在刷树套树的水题 退役的感觉近了 Day 0 早上收拾好东西去了火车站之后 火车站居然还没有开门 等了半天 我们是从衡水到德州再到秦皇岛 到了德州之后 去车 ...

  4. 【NOI2018】

    总之国赛已经过了1个月了. 感谢北大当初给我的一本约救我狗命,不然国赛就要没学上了. 铜牌倒数十多名,我觉得我也是混到了一种境界. 虽然对于集训队已经失去梦想,但是,Day1全场堪称最低的21分,也是 ...

  5. python科学计算与可视化

    一.Numpy 库 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 引用: import ...

  6. Jupyter Notebook & Spyder 常用快捷键

    Jupyter Notebook: 1. "shift + enter" notebook单元格内执行代码,并且自动跳至下一个的单元格 2. "tab" 自动补 ...

  7. MySQL设置远程连接服务器

    默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件. 一.修改/etc/mysql/my.conf找到bind-address = 127.0 ...

  8. maevn HelloWorld 基本命令

    总结: Mvn clean compile:编译主代码 Mvn clean test:执行测试代码 Mvn clean package:打包 Mvn clean install: 安装到本地仓库 执行 ...

  9. 利用js对象的特性,去掉数组中的重复项

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  10. python-queue队列通信

    #!/usr/bin/python from multiprocessing import Process,Queue import time l=[] q=Queue() def f(name): ...