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 相关文章推荐
Extjs学习笔记之六 面版
Jan 08 Javascript
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
jQuery的one()方法用法实例
Jan 19 Javascript
JS实现超精简响应鼠标显示二级菜单代码
Sep 12 Javascript
js如何实现淡入淡出效果
Nov 18 Javascript
Vue结合原生js实现自定义组件自动生成示例
Jan 21 Javascript
基于javascript的异步编程实例详解
Apr 10 Javascript
微信小程序实现轮播图效果
Sep 07 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
Oct 20 Javascript
vue 点击其他区域关闭自定义div操作
Jul 17 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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
用mysql内存表来代替php session的类
2009/02/01 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
window.opener用法和用途实例介绍
2013/08/19 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Python读取yaml文件的详细教程
2020/07/21 Python
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
医院门卫岗位职责
2013/12/30 职场文书
安全生产活动月方案
2014/03/09 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
简短清晨问候语
2015/11/10 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang