jQuery+Ajax实现用户名重名实时检测
程序员文章站
2023-12-30 19:45:10
利用jquery框架,封装了底层的ajax异步技术,通过简单的方法调用即可实现。这篇博客是针对用户注册时出现的用户名重名问题的自动检测,利用的技术是ajax异步传输。
r...
利用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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。