关于 注册信息表单的验证

来源:互联网 发布:张龙java百度网盘 编辑:程序博客网 时间:2024/05/03 00:52
<span style="font-family: Arial, Helvetica, sans-serif;">//1.对提交过来的表单进行验证  </span>
//1.对提交过来的表单进行验证  <span style="white-space:pre"></span>request.setCharacterEncoding("UTF-8");  //设置编码  不设置的话 校验中文会因为乱码而失败 !!<span style="white-space:pre"></span>FormBean formBean = WebUtils.request2Bean(request, FormBean.class);  //将request参数存在bean中 <span style="white-space:pre"></span>boolean b = formBean.validate();  //返回表单提交信息是否合法  主要判断的是表单是否符合格式<span style="white-space:pre"></span>if(!b){<span style="white-space:pre"></span>//验证失败  说明表单信息提交不合法  跳回表单界面 并提示信息<span style="white-space:pre"></span>request.setAttribute("form", formBean);<span style="white-space:pre"></span>request.getRequestDispatcher("/WEB-INF/jsp/register.jsp").forward(request, response);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else {<span style="white-space:pre"></span>// 如果验证成功  则通过service进行注册处理   也就是判断用户名是否重复 不重复则注册入数据库<span style="white-space:pre"></span>BusinessServiceImpl businessServiceImpl = new BusinessServiceImpl();<span style="white-space:pre"></span>User user = new User();<span style="white-space:pre"></span>WebUtils.copyBean(formBean, user);    //将表单信息 拷贝到user对象中<span style="white-space:pre"></span>user.setId(WebUtils.getOnlyId());   //获取唯一id值赋入<span style="white-space:pre"></span>try {<span style="white-space:pre"></span>businessServiceImpl.register(user);   //注册用户  如果注册失败 则会抛出异常 在下面捕获<span style="white-space:pre"></span>//5. 如果处理成功 则 跳转到一个页面 显示 注册成功  <span style="white-space:pre"></span>request.setAttribute("message", "注册成功!");<span style="white-space:pre"></span>request.getRequestDispatcher("/message.jsp").forward(request, response);<span style="white-space:pre"></span>} catch (ExistUserException e) {<span style="white-space:pre"></span>//如果处理失败  跳转到 注册界面显示 用户已存在  <span style="white-space:pre"></span>formBean.getErrors().put("username", "用户名已存在!");  <span style="white-space:pre"></span>request.setAttribute("form", formBean);<span style="white-space:pre"></span>request.getRequestDispatcher("/WEB-INF/jsp/register.jsp").forward(request, response);<span style="white-space:pre"></span>}catch (Exception e) {<span style="white-space:pre"></span>request.setAttribute("message", "出现其他未知错误!");<span style="white-space:pre"></span>request.getRequestDispatcher("/message.jsp").forward(request, response);<span style="white-space:pre"></span>}<span style="white-space:pre"></span><span style="white-space:pre"></span>}


2. 对表单信息的合法化校验:

public boolean validate(){boolean isOk = true;//验证用户名是否是 6-8位  且全是字母或数字   if(this.username==null||this.username.trim().equals("")){isOk = false;errors.put("username", "用户名不能为空!");}else {if(!this.username.matches("[A-Za-z0-9]{3,8}")){isOk=false;System.out.println("------->"+this.username+"---"+"密码空");errors.put("username", "用户名输入不合法!");}}//验证密码是否为6-8位   且为数字或字母 if(this.password==null||this.password.trim().equals("")){isOk = false;System.out.println("------->"+this.password+"---"+"密码空");errors.put("password", "密码不能为空!");}else {if(!this.password.matches("[A-Za-z0-9]{3,8}")){isOk=false;errors.put("password", "密码输入不合法!");}}//验证确认密码是否与密码相同if(this.password2==null||this.password2.trim().equals("")||!this.password.equals(this.password2)){isOk = false;errors.put("password2", "确认密码错误!");}//验证邮件格式 if(this.email==null||this.email.equals("")){isOk = false;errors.put("email", "邮箱不能为空!");}else{// xxxxx@aaa.com if(!this.email.matches("\\w+@\\w+(\\.\\w+)+")){isOk = false;errors.put("email", "邮箱格式错误!");}}//验证日期格式  if(this.birthday==null||this.birthday.trim().equals("")){isOk = false;//验证日期的方法try {DateLocaleConverter date = new DateLocaleConverter();date.convert(this.birthday, "yyyy-MM-dd");} catch (Exception e) {isOk = false;errors.put("birthday", "生日输入格式错误!");}}//验证昵称 必须为中文if(this.nickname==null||this.nickname.equals("")){isOk = false;errors.put("nickname", "昵称不能为空!");}else{// 中文if(!this.nickname.matches("[\u4e00-\u9fa5]+")){isOk = false;errors.put("nickname", "昵称必须为中文!");}}return isOk;}
上述中  用了正则表达式   汉字unicode范围为
\u4e00-\u9fa5

//验证日期的方法 由于SimpleDateFormat 方法无法判断 类似  1995-12-35 这样的日期  所以要试用下述方法try {DateLocaleConverter date = new DateLocaleConverter();date.convert(this.birthday, "yyyy-MM-dd");} catch (Exception e) {isOk = false;errors.put("birthday", "生日输入格式错误!");}


0 0