BootstrapValidator验证用户名已存在(ajax)


Posted in Javascript onNovember 08, 2019

Java web项目:bootstrap实现注册页面,mvc模式联合mysql数据库检查用户名的唯一性。

一、实现效果:

BootstrapValidator验证用户名已存在(ajax)

重置这里有bug,bootstrapValidator验证不能重置,待解决。

二、代码准备:

引入bootstrap,bootstrapValidator和jquery。

<link rel="stylesheet" href="<%=request.getContextPath() %>/css/bootstrap.min.css" rel="external nofollow" />
<link rel="stylesheet" href="<%=request.getContextPath() %>/css/bootstrapValidator.min.css" rel="external nofollow" />
<script src="<%=request.getContextPath() %>/js/jquery.min.js"></script>
<script src="<%=request.getContextPath() %>/js/bootstrap.min.js"></script> 
<script src="<%=request.getContextPath() %>/js/bootstrapValidator.min.js"></script>

三、部分代码:

register.jsp注册部分代码。 

<form id="registerForm" action="<%=request.getContextPath() %>/UserServlet" method="post">
 <input type="hidden" name="method" value="register"/>
 <div class="form-group">
  <label>用户名</label>
  <input type="text" class="form-control" name="userName" placeholder="用户名由2-12位字符组成" />
 </div>

 <div class="form-group">
  <label>邮箱</label>
  <input type="text" class="form-control" name="userEmail" placeholder="邮箱" />
 </div>

 <div class="form-group">
  <label>密码</label>
  <input type="password" class="form-control" name="userPassword" placeholder="密码由6-10位字母数字组成" />
 </div>

 <div class="form-group">
  <label>确认密码</label>
  <input type="password" class="form-control" name="confirmUserPassword" placeholder="再次输入密码" />
 </div>

 <div class="form-group">
  <button type="submit" class="btn btn-primary">注册</button>
  <input type="reset" class="btn btn-primary" value="重置">
 </div>
</form>

利用bootstrapValidator表单验证代码。 ajax部分有详细注释

<script type="text/javascript">
 $(function() {
  $('#registerForm').bootstrapValidator({
   message: 'This value is not valid',
   feedbackIcons: {
    valid: 'glyphicon glyphicon-ok',
    invalid: 'glyphicon glyphicon-remove',
    validating: 'glyphicon glyphicon-refresh'
   },
   fields: {
    userName: {
     message: 'The username is not valid',
     validators: {
      notEmpty: {
       message: '用户名不能为空'
      },
      stringLength: {
       min: 2,
       max: 12,
       message: '用户名由2-12位字符组成'
      },
      threshold: 2,//有2字符以上才发送ajax请求
      remote: {//ajax验证。server result:{"valid",true or false} 
       url: "/ImageShare/UserServlet",
       message: '用户名已存在,请重新输入',
       delay: 1000,//ajax刷新的时间是1秒一次
       type: 'POST',
       //自定义提交数据,默认值提交当前input value
       data: function(validator) {
       return {
        userName : $("input[name=userName]").val(),
         method : "checkUserName"//UserServlet判断调用方法关键字。
        };
       }
      }
     }
    },
    userEmail: {
     validators: {
      notEmpty: {
       message: '邮箱不能为空'
      },
      emailAddress: {
       message: '输入不是有效的电子邮件地址'
      }
     }
    },
    userPassword: {
     validators: {
      notEmpty: {
       message: '密码不能为空'
      },
      stringLength: {
       min: 6,
       max: 10,
       message: '密码由6-10位字符组成'
      },
      identical: {
       field: 'confirmUserPassword',
       message: '密码输入不一致'
      }
     }
    },
    confirmUserPassword: {
     validators: {
      notEmpty: {
       message: '密码不能为空'
      },
      stringLength: {
       min: 6,
       max: 10,
       message: '密码由6-10位字符组成'
      },
      identical: {
       field: 'userPassword',
       message: '密码输入不一致'
      }
     }
    }
   }
  });
 });
</script>

UserServlet.java检查用户名唯一性部分代码。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 // TODO Auto-generated method stub
 request.setCharacterEncoding("UTF-8");
 //0、获取method判断执行操作
 String method = request.getParameter("method");
 if ("checkUserName".equals(method)) {
 //验证用户名是否已存在
 checkUserName(request,response);
 }
}

//根据用户名称查询,检查用户名称的唯一性(用户注册)
public void checkUserName(HttpServletRequest request, HttpServletResponse response) throws IOException{
 response.setCharacterEncoding("UTF-8");
 //返回json数据,格式为{"valid",true} 表示合法,验证通过。{"valid":false} 表示不合法,验证不通过
 String jsonResult = "";
 String userName = request.getParameter("userName");
 //去数据进行唯一性确认
 if (userName!=null) {
 //服务层service调用数据库访问层dao中的searchUserName方法。
 boolean b = UserServiceImpl.searchUserName(userName);
 if (b) {
 //如果名称存在
 jsonResult = "{\"valid\":false}";
 }else{
 //如果该名称不存在
 jsonResult = "{\"valid\":true}";
 }
 } else {
 jsonResult = "{\"valid\":false}";
 }
 //response把jsonResult打到前台
 response.getWriter().write(jsonResult);
}

四、总结:

1.利用bootstrapValidator的ajax表单验证用户名已存在关键是自定义提交的数据。

2.将当前input的value值和判断操作方法的method关键字提交

3.注意当server必需返回形如:{“valid”,true or false} 的json数据格式

4.servlet通过 response.getWriter().write(jsonResult) 返回响应的内容jsonResult到前台页面。

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是关于本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
js结合正则实现国内手机号段校验
Jun 19 Javascript
Javascript实现鼠标框选操作  不是点击选取
Apr 14 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
JS防止网页被嵌入iframe框架的方法分析
Sep 13 Javascript
简单理解Vue条件渲染
Dec 03 Javascript
分分钟玩转Vue.js组件(二)
Mar 01 Javascript
JavaScript数据结构之链表的实现
Mar 19 Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 Javascript
Vue-cli中为单独页面设置背景色的实现方法
Feb 11 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 10 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 #Javascript
浅谈vuex的基本用法和mapaction传值问题
Nov 08 #Javascript
微信小程序select下拉框实现源码
Nov 08 #Javascript
使用kbone解决Vue项目同时支持小程序问题
Nov 08 #Javascript
在VUE中实现文件下载并判断状态的方法
Nov 08 #Javascript
vue中在vuex的actions中请求数据实例
Nov 08 #Javascript
vue 组件内获取actions的response方式
Nov 08 #Javascript
You might like
PHP 数字左侧自动补0
2008/03/31 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
python处理json数据中的中文
2014/03/06 Python
Python XML RPC服务器端和客户端实例
2014/11/22 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python人民币小写转大写辅助工具
2018/06/20 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Django之腾讯云短信的实现
2020/06/12 Python
Python执行时间的几种计算方法
2020/07/31 Python
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
金士达面试非笔试
2012/03/14 面试题
广告学专业应届生求职信
2013/10/01 职场文书
会计应聘求职信范文
2013/12/17 职场文书
社团活动策划书范文
2014/01/09 职场文书
2014年清明节寄语
2014/04/03 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang