• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Ajax验证用户名是否可用

武飞扬头像
悬在半空
帮助1

1.在做项目的时候,或多或少都会用到ajax来实现注册登录的校验,例如,当你注册时,你输入一个用户名,就会提示你,用户名可用,或者,用户名已被注册 ,等等 ,就像下图这种。

学新通

2.发送 Ajax 请求的五个步骤:

(1)创建异步对象。即 XMLHttpRequest 对象。

(2)设置请求的参数。包括:请求的方法、请求的url。

(3)发送请求。

(4)注册事件。 onreadystatechange事件,状态改变时就会调用。

如果要在数据完整请求回来的时候才调用,我们需要手动写一些判断的逻辑。

(5)获取返回的数据。

readyState状态值的理解:

学新通

对AJAX异步请求的理解:

学新通

3.在Body里面设置一个表框标签和一个span标签(span标签不会独占一行),设置完打开浏览器查看页面初始效果:

学新通

4.设置Ajax请求方式,如果readystate==4则代表请求已完成,且响应已就绪。status==200代表"ok"。onblur()是失去焦点而触发的事件。发送post请求,请求路径为"/ajax1",响应回来的文本信息会返回到span标签中。

  1.  
    <!DOCTYPE html>
  2.  
    <html lang="en">
  3.  
    <head>
  4.  
    <meta charset="UTF-8">
  5.  
    <title>Ajax Post请求验证用户名是否可用</title>
  6.  
    </head>
  7.  
    <body>
  8.  
    <script>
  9.  
    window.onload=function () {
  10.  
    document.getElementById("username").onblur=function () {
  11.  
    //console.log("正在发送Ajax请求验证用户名...")
  12.  
    //1.
  13.  
    var xhr=new XMLHttpRequest()
  14.  
    //2.
  15.  
    xhr.onreadystatechange=function () {
  16.  
    if (this.readyState == 4) {
  17.  
    if (this.status == 200) {
  18.  
    document.getElementById("tipMsg").innerHTML=this.responseText
  19.  
    }else {
  20.  
    alert(this.status)
  21.  
    }
  22.  
    }
  23.  
    }
  24.  
    //3.
  25.  
    xhr.open("POST","/ajax1",true)
  26.  
    //4.
  27.  
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
  28.  
    //获取表单数据
  29.  
    var username=document.getElementById("username").value
  30.  
    //5.
  31.  
    xhr.send("uname=" username)
  32.  
    }
  33.  
    }
  34.  
    </script>
  35.  
    用户名:<input type="text" id="username">
  36.  
    <span id="tipMsg"></span>
  37.  
    </body>
  38.  
    </html>

5.先创建一张数据库表,以便后面创建JDBC连接数据库使用。

学新通

 页面总体类图:

学新通

创建lib目录,把本地的mysql8.0jar包粘贴进目录,并把jar包添加进项目库。

6.创建ajax类,设置注解路径为"/ajax1",用来连接数据库并返回结果 

  1.  
    import javax.servlet.ServletException;
  2.  
    import javax.servlet.annotation.WebServlet;
  3.  
    import javax.servlet.http.HttpServlet;
  4.  
    import javax.servlet.http.HttpServletRequest;
  5.  
    import javax.servlet.http.HttpServletResponse;
  6.  
    import java.io.IOException;
  7.  
    import java.io.PrintWriter;
  8.  
    import java.sql.*;
  9.  
     
  10.  
    @WebServlet("/ajax1")
  11.  
    public class Ajax extends HttpServlet {
  12.  
    @Override
  13.  
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14.  
    //获取用户名
  15.  
    String uname = request.getParameter("uname");
  16.  
    //打布尔标记
  17.  
    boolean flag=false;
  18.  
    //连接数据库验证用户名是否存在
  19.  
    Connection conn=null;
  20.  
    PreparedStatement ps=null;
  21.  
    ResultSet rs=null;
  22.  
    try {
  23.  
    //1.注册驱动
  24.  
    Class.forName("com.mysql.cj.jdbc.Driver");
  25.  
    //2.获取连接
  26.  
    conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT+8","root","123456");
  27.  
    //3.获取预编译的数据库操作对象
  28.  
    String sql="select id,username from user where username=?";
  29.  
    ps=conn.prepareStatement(sql);
  30.  
    ps.setString(1,uname);
  31.  
    //4.执行SQL语句
  32.  
    rs=ps.executeQuery();
  33.  
    //5.处理结果集
  34.  
    if (rs.next()) {
  35.  
    //用户名已存在
  36.  
    flag=true;
  37.  
    }
  38.  
     
  39.  
    } catch (Exception e) {
  40.  
    e.printStackTrace();
  41.  
    }finally {
  42.  
    //6.释放资源
  43.  
    if (rs != null) {
  44.  
    try {
  45.  
    rs.close();
  46.  
    } catch (SQLException e) {
  47.  
    e.printStackTrace();
  48.  
    }
  49.  
    }
  50.  
    if (ps != null) {
  51.  
    try {
  52.  
    ps.close();
  53.  
    } catch (SQLException e) {
  54.  
    e.printStackTrace();
  55.  
    }
  56.  
    }
  57.  
    if (conn != null) {
  58.  
    try {
  59.  
    conn.close();
  60.  
    } catch (SQLException e) {
  61.  
    e.printStackTrace();
  62.  
    }
  63.  
    }
  64.  
    }
  65.  
    //响应结果到浏览器
  66.  
    response.setContentType("text/html;charset=UTF-8");
  67.  
    PrintWriter out = response.getWriter();
  68.  
    if (flag) {
  69.  
    out.print("<font color='red'>用户名已存在</font>");
  70.  
    }else {
  71.  
    out.print("<font color='green'>用户名可以使用</font>");
  72.  
    }
  73.  
    }
  74.  
    }

7.启动Tomcat8.5.83服务器,校验结果:

用户名在数据库存在:学新通

用户名在数据库不存在:学新通

                                          Ajax验证用户名是否可用功能实现成功!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgchjgf
系列文章
更多 icon
同类精品
更多 icon
继续加载