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 相关文章推荐
Ajax搜索结果页面下方的分页按钮的生成
Apr 05 Javascript
引用外部js乱码问题分析及解决方案
Apr 12 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
Sep 02 Javascript
吐槽一下我所了解的Node.js
Oct 08 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
卸载安装Node.js与npm过程详解
Aug 15 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
Nov 24 Javascript
详解webpack异步加载业务模块
Jun 23 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 Javascript
vue中用 async/await 来处理异步操作
Jul 18 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切割页面div内容的实现代码分享
2012/07/31 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
Python深入学习之对象的属性
2014/08/31 Python
创建Django项目图文实例详解
2019/06/06 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
办公室人员先进事迹
2014/01/27 职场文书
物流专业自荐信
2014/05/23 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python