jQuery+Ajax实现用户名重名实时检测


Posted in jQuery onJune 01, 2017

利用jQuery框架,封装了底层的Ajax异步技术,通过简单的方法调用即可实现。这篇博客是针对用户注册时出现的用户名重名问题的自动检测,利用的技术是Ajax异步传输。

register.jsp 注册显示页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
 <form action="login" method="post" id="myform">
  <table align="center">
   <tr>
    <td>用户名:</td>
    <td>
     <input type="text" name="name" id="username" title="用户名" />
     <div id="message"></div>
    </td>
   </tr>
   <tr>
    <td>密码:</td>
    <td><input type="password" name="pwd" id="userpwd" title="密码" />
    </td>
   </tr>
   <tr>
    <td>性别:</td>
    <td><input type="radio" name="sex" value="男" title="性别" />男 <input
     type="radio" name="sex" value="女" title="性别" />女</td>
   </tr>
   <tr>
    <td>年龄:</td>
    <td><input type="text" name="age" title="年龄" />
    </td>
   </tr>
   <tr>
    <td>Email:</td>
    <td><input type="text" name="email" title="Email" />
    </td>
   </tr>
   <tr>
    <td colspan="2" align="center"><input type="button" value="注 册"
     onclick="check()" /> <input type="reset" value="重 置" /></td>
   </tr>
  </table>
 </form>
</body>
<script type="text/javascript" src="${pageContext.request.contextPath }/script/jquery-3.2.1.js"></script>

<script type="text/javascript">
 // 检查表单元素的值是否为空
 function check() {
  var myform = document.getElementById("myform");
  for ( var i = 0; i < myform.length; i++) {
   if (myform.elements[i].value == "") {
    alert(myform.elements[i].title + "不能为空");
    myform.elements[i].focus();
    return;
   }
  }
  myform.submit(); // 表单中最后input提交标签用的是button类型,首先不提交表单,在js判断表单项都不为空时 再提交表单。
 }

 $(function(){
  $(":input[name='name']").blur(function(){
   var val = $(this).val();
   val = $.trim(val);

   if(val != ""){
    var url = "${pageContext.request.contextPath }/UserServlet"; // 将前端的业务转到后端Servlet来处理。最后Servlet再将结果返回给前端JSP页面
    var args = {"userName":val, "time":new Date()};

    $.post(url, args, function(data){ // URL中处理的结果都保存在data数据中,而data中的格式是Servlet中返回的结果格式,即为html
     $("#message").html(data);  //将data结果附加到div中
    });
   }
  });
 });
</script>
</html>

UserServlet 逻辑处理Servlet类,用于对用户重名的判断以及响应处理结果的输出等。其中用于数据库检测重名的方法省略了(LoginDao.getInstance().checkUserName(userName.trim()); // 查找数据库是否存在该用户名)

package com.servlet.user;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.LoginDao;
import com.user.UserInfo;

public class UserServlet extends HttpServlet {

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html; charset=UTF-8"); // 设置响应结果的格式为text/html,字符集为UTF-8
  response.setCharacterEncoding("UTF-8"); // 设置响应结果的字符编码为UTF-8
  // 禁止缓存
  response.setHeader("Cache-Control", "no-store,no-cache,must-revalidate");
  response.setHeader("Cache-Control", "post-check=0,pre-check=0");
  response.setDateHeader("Expires", 0);
  response.setHeader("Pragma", "no-cache");

  PrintWriter out = response.getWriter();
  out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  // 从httpRequest()方法中获得请求参数值
  // 通过httpRequest()方法封装的请求参数被编码为UTF-8格式,此处若想还原原来的编码格式,则需要通过UTF-8格式解码

  String userName = request.getParameter("userName");
  String result = null;
  boolean check = LoginDao.getInstance().checkUserName(userName.trim()); // 查找数据库是否存在该用户名
  if (check) {
   result = "<font color='red'>该用户已经被使用</font>";
  } else {
   result = "<font color='green'>该用户名可以使用</font>";
  }
  response.getWriter().print(result); // 将结果输出到response响应流中
 }

 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  this.doPost(req, resp);
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
简单实现jQuery弹幕效果
May 06 jQuery
jquery replace方法去空格
May 08 jQuery
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
jquery实现直播弹幕效果
Nov 28 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 jQuery
jquery实现有过渡效果的tab切换
Jul 17 jQuery
jQuery实现动态加载瀑布流
Sep 01 jQuery
jQuery插件实现图片轮播效果
Oct 19 jQuery
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
jQuery实现动态删除LI的方法
May 30 #jQuery
jQuery异步提交表单实例
May 30 #jQuery
Angular2使用jQuery的方法教程
May 28 #jQuery
Jquery中attr与prop的区别详解
May 27 #jQuery
jQuery插件imgAreaSelect基础讲解
May 26 #jQuery
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 #jQuery
jQuery导航条固定定位效果实例代码
May 26 #jQuery
You might like
PHP循环获取GET和POST值的代码
2008/04/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
javascript this详细介绍
2016/09/19 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
深入浅出学习python装饰器
2017/09/29 Python
python设置环境变量的原因和方法
2019/06/24 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
毕业生精彩的自我评价分享
2013/10/06 职场文书
《乌塔》教学反思
2014/02/17 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
2014年卫生工作总结
2014/11/27 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
黄河绝恋观后感
2015/06/08 职场文书
公司保密管理制度
2015/08/04 职场文书
小学体育组工作总结
2015/08/13 职场文书
Java 数据结构七大排序使用分析
2022/04/02 Java/Android