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. IntelliJ IDEA 配置JSP & Servlet开发环境

    首先我们要安装和配置好JAVA和TOMCAT,这里不再详细描述 下载地址: JAVA:https://www.oracle.com/technetwork/java/javase/downloads/ ...

  3. canvas绘制简单的霓虹灯效果

    canvas简单动画分为三个步骤: 1.清除画布区域的内容: 2.重绘: 3.执行requestAnimationFrame(); 这个霓虹灯效果的demo,我没有用requestAnimationF ...

  4. Error:(1, 1) 错误: 需要class, interface或enum

    这个东西在Ideal里面报的错误,在控制台提示: Error:(1, 1) 错误: 需要class, interface或enum 网上搜到说是编码问题,我的解决方式: 把出错的文件选中复制一份,再随 ...

  5. python有哪些比较隐藏的知识点?

    一.复用小整数以及小字符串 在Python语言中,设计者在优化Python语言时,为了提高Python的运行效率,所以就将一些小整数保存在系统表,没有释放回收(正常情况下,当Python中一个对象没有 ...

  6. Spring Boot入门教程(1)

    Spring Boot入门教程(1) 本文将使用Spring Boot一步步搭建一个简单的Web项目来帮助你快速上手. 将要用到的工具 JDK 8 IntelliJ IDEA(Ultimate Edi ...

  7. Machine learning第6周编程作业

    1.linearRegCostFunction: function [J, grad] = linearRegCostFunction(X, y, theta, lambda) %LINEARREGC ...

  8. G - Game HDU - 5242 (数链剖分)

    题目链接: G - Game HDU - 5242 题目大意:首先是T组测试样例,给出一颗以1节点为根的树,每个节点有各自的价值,有m次从根节点出发向下走到叶子节点的机会,每次会得到所有经过节点的权值 ...

  9. appium安装与部署

    前提: ①:appium属于C/S架构,代码写在Client端 ②:本章所说的部署讲的是Android设备下的Appium安装与部署 ③:Appium Client的环境是针对python3的 App ...

  10. jsp页面用struts2标签展示List<Object>类型的数据

    今天遇到一个问题,一个List<Object>类型的数据,是直接从sql查出来的数据,要在前端展示,原来的方法不知道为什么不能展示,后来找了好久,找到了一个靠谱的方法,记录一下 <s ...