image.png

前端ajax

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>欢迎注册</title>
  6. <link href="css/register.css" rel="stylesheet">
  7. </head>
  8. <body>
  9. <div class="form-div">
  10. <div class="reg-content">
  11. <h1>欢迎注册</h1>
  12. <span>已有帐号?</span> <a href="login.html">登录</a>
  13. </div>
  14. <form id="reg-form" action="#" method="get">
  15. <table>
  16. <tr>
  17. <td>用户名</td>
  18. <td class="inputs">
  19. <input name="username" type="text" id="username">
  20. <br>
  21. <span id="username_err" class="err_msg" style="display: none">用户名不太受欢迎</span>
  22. </td>
  23. </tr>
  24. <tr>
  25. <td>密码</td>
  26. <td class="inputs">
  27. <input name="password" type="password" id="password">
  28. <br>
  29. <span id="password_err" class="err_msg" style="display: none">用户名已存在</span>
  30. </td>
  31. </tr>
  32. <tr>
  33. <td>验证码</td>
  34. <td class="inputs">
  35. <input name="checkCode" type="text" id="checkCode">
  36. <img src="imgs/a.jpg">
  37. <a href="#" id="changeImg">看不清?</a>
  38. </td>
  39. </tr>
  40. </table>
  41. <div class="buttons">
  42. <input value="注 册" type="submit" id="reg_btn">
  43. </div>
  44. <br class="clear">
  45. </form>
  46. </div>
  47. <script>
  48. // 1. 给用户名输入框绑定 失去焦点事件
  49. document.getElementById("username").onblur = function () {
  50. // 2. 发送ajax请求
  51. // 获取用户名的值
  52. var username = this.value;
  53. // 2.1. 创建核心对象
  54. var xhttp;
  55. if (window.XMLHttpRequest) {
  56. xhttp = new XMLHttpRequest();
  57. } else {
  58. // code for IE6, IE5
  59. xhttp = new ActiveXObject("Microsoft.XMLHTTP");
  60. }
  61. // 2.2 发送请求
  62. <!-- 前端ajax要发送到后端去,写绝对路径 -->
  63. xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet");
  64. xhttp.send();
  65. // 2.3. 获取响应
  66. xhttp.onreadystatechange = function() {
  67. if (this.readyState == 4 && this.status == 200) {
  68. // alert(this.responseText);
  69. // 判断
  70. // XMLHttpRequest.responseText
  71. // 在一个请求被发送后,从服务器端返回文本。
  72. // XMLHttpRequest.responseText 在一个请求被发送后,
  73. // 从服务器端返回文本。
  74. if (this.responseText == "true"){ // 返回请求得到的文本,
  75. // 如果该文本结果为true,则执行以下代码
  76. // 用户名存在 显示提示信息
  77. document.getElementById("username_err").style.display = '';
  78. }else {
  79. // 用户名不存在 清除提示信息
  80. document.getElementById("username_err").style.display = 'none';
  81. }
  82. }
  83. };
  84. }
  85. </script>
  86. </body>
  87. </html>

后端Servlet代码

  1. package com.itheima.web.servlet;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import javax.servlet.annotation.*;
  5. import java.io.IOException;
  6. @WebServlet("/selectUserServlet")
  7. public class SelectUserServlet extends HttpServlet {
  8. @Override
  9. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  10. // 1. 接收用户名
  11. String username = request.getParameter("username");
  12. // 2. 调用service查询User对象
  13. boolean flag = true;
  14. // 3. 响应标记
  15. response.getWriter().write("" + flag); // 将标记的结果转换成字符串,写在响应的数据中
  16. }
  17. @Override
  18. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  19. this.doGet(request, response);
  20. }
  21. }