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 进入页面默认给已赋值的复选框打钩
Mar 23 jQuery
JS jQuery使用正则表达式去空字符的简单实现代码
May 20 jQuery
jquery dataTable 后台加载数据并分页实例代码
Jun 07 jQuery
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
jquery实现简单每周轮换的日历
Sep 10 jQuery
jQuery+ajax实现用户登录验证
Sep 13 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运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
基于jquery的15款幻灯片插件
2011/04/10 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
php跨域调用json的例子
2013/11/13 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
PyCharm代码格式调整方法
2018/05/23 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
自我介绍演讲稿
2014/01/15 职场文书
行政办公室岗位职责
2014/03/18 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
十佳家长事迹材料
2014/08/26 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
消费者投诉书范文
2015/07/02 职场文书