JQuery 프레임워크를 사용하여 기본 Ajax 비동기 기술을 캡슐화하면 간단한 메서드 호출을 통해 구현할 수 있습니다. 이 블로그에서는 사용자 등록 시 사용자 이름이 중복되는 문제를 자동으로 감지하는 방법에 대해 설명합니다. 사용된 기술은 Ajax 비동기 전송입니다. 이 글에서는 주로 중복된 사용자 이름을 실시간으로 감지하는 jQuery 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="用户名" /> <p id="message"></p> </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结果附加到p中 }); } }); }); </script> </html>
UserServlet 로직 처리 서블릿 클래스로, 사용자의 중복된 이름을 판별하고 응답 처리 결과 등을 출력하는 데 사용됩니다. 데이터베이스에서 중복된 이름을 감지하는 데 사용되는 방법이 생략됩니다(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); } }
관련 권장 사항:
AJAX를 사용하여 사용자 이름 존재 여부에 대한 비동기 확인 예제 완성 자세한 설명
위 내용은 jQuery 및 Ajax를 사용한 중복 사용자 이름에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!