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. leecode刷题(22)-- 反转数组

    leecode刷题(22)-- 反转数组 反转数组 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3-> ...

  2. 【bzoj 2716】[Violet 3]天使玩偶 (CDQ+树状数组)

    题目描述 Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把 Ayu 生活的 ...

  3. linux中创建一个回收站

      1. mkdir /tmp/trash_tmp 建立一个回收站目录 2. vi /bin/trash 编辑一个文件     mv $@ /tmp/trash_tmp     :wq 保存退出 3. ...

  4. python科学计算与可视化

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

  5. Windows10 安装 .Net 3.5 失败的解决方案

    最近因为使用一个公司内部的工具,需要安装.Net 3.5 SP1, 却发现无论如何都安装不上,无论是通过在线和离线安装包,还是通过Windows自带的feature安装功能,每次都是会提示错误0x80 ...

  6. 论文分享NO.1(by_xiaojian)

    论文分享第一期-2019.03.14: 1. Non-local Neural Networks  2018 CVPR的论文 2. Self-Attention Generative Adversar ...

  7. vue.js - axios Get、Post方法传参给 .net core webapi。

    一:axios中是 Get请求: 1:在vue项目中通过params属性携带数据: let _self = this; axios({ method:'get', url:'http://localh ...

  8. (转)mysql主从切换步骤

    原文:http://6226001001.blog.51cto.com/9243584/1723273 1> 正常切换 1)从服务器检查SHOW PROCESSLIST语句的输出,直到你看到Ha ...

  9. 第一个hibernate程序HelloWorldHibernate

    HelloWorldHibernate步骤: HelloWorld 1,新建java项目hibernate_0100_HelloWorld 2,学习User-library-hibernate,并加入 ...

  10. erlang尾递归练习

    1 %%计算链表长度尾递归实现 2 lez(N) -> lez(N, 0). 3 4 lez([], Acc) -> Acc; 5 lez([_ | T], Acc) -> lez( ...