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实现百度登录框的动态切换效果
Apr 21 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
jquery append与appendTo方法比较
May 24 jQuery
jquery中有哪些api jQuery主要API
Nov 20 jQuery
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
jQuery动态生成的元素绑定事件操作实例分析
May 04 jQuery
jquery检测上传文件大小示例
Apr 26 jQuery
jQuery实现开关灯效果
Aug 02 jQuery
使用jquery实现轮播图效果
Jan 02 jQuery
jquery插件实现悬浮的菜单
Apr 24 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连接SQLServer2005方法及代码
2013/12/26 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
Python生成随机密码
2015/03/10 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Python生成器generator用法示例
2018/08/10 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
Python argparse模块应用实例解析
2019/11/15 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
卖房授权委托书样本
2014/10/05 职场文书
刘公岛导游词
2015/02/05 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
python状态机transitions库详解
2021/06/02 Python
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python