美文网首页
Ajax使用Demo---异步校验用户名是否存在

Ajax使用Demo---异步校验用户名是否存在

作者: itzhouq的笔记 | 来源:发表于2019-03-22 14:51 被阅读0次

    前台的页面校验中Ajax使用广泛,Ajax能在不更新整个网页的前提下维护数据。这使得web应用程序更为迅捷地回应用户动作,并避免了网络上发送那些没有改变得信息。
    <-- more -->
    jQuery封装后的Ajax操作方法简洁,功能强大,实际开发中经常用到的有三种。get、post和ajax,这里使用post做一个小demo。

    1. 前台页面

    写一个前台页面,用来校验用户在文本框中输入的用户名


    前台页面

    2. Ajax异步校验

    根据jQuery的Ajax异步请求访问数据库,根据数据库返回的结果判断能否使用用户输入的用户名。

    3. 代码

    • index.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>AjaxDemo</title>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function(){
            //为输入框绑定事件
            $("#username").blur(function(){
                //1. 失去焦点获得数据框的内容
                var usernameInput = $("#username").val();
                //2. 去服务器端校验用户名是否存在----Ajax
                $.post(
                "${pageContext.request.contextPath}/checkUsername",
                {"username":usernameInput},
                function(data){
                    var isExist = data.isExist;
                    //3. 根据返回的isExist动态的显示数据
                    var usernameInfo = "";
                    if(isExist){
                        //该用户存在
                        usernameInfo = "该用户名已经存在";
                        $("#usernameInfo").css("color","red");
                    }else{
                        
                        usernameInfo = "该用户名可以使用";
                        $("#usernameInfo").css("color","green");
                    }
                    $("#usernameInfo").html(usernameInfo);
                },
                "json"
                );          
            });
        });
    </script>
    </head>
    <body>
        <h3>用户名校验</h3>
        <div>
            <label for="username">用户名</label>
            <input type="text" id="username" placeholder="请输入用户名" >
            <span id="usernameInfo"></span>
        </div>
    </body>
    </html>
    
    
    • web层
    package com.itzhouq.web;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.itzhouq.service.UserService;
    /**
     * 异步校验用户名是否存在demo
     * @author itzhouq
     *
     */
    public class CheckUsernameServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获得要校验的用户名
            String username = request.getParameter("username");
            //将username传递给service层
            UserService service = new UserService();
            boolean isExist = service.checkUsername(username);
            //返回给前台
            response.getWriter().write("{\"isExist\":"+isExist+"}");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }
    
    • service层
    package com.itzhouq.service;
    
    import java.sql.SQLException;
    
    import com.itzhouq.dao.UserDao;
    
    public class UserService {
    
        //校验用户名是否存在
        public boolean checkUsername(String username) {
            UserDao dao = new UserDao();
            Long isExist = 0L;
            try {
                isExist = dao.checkUsername(username);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return isExist > 0 ? true : false;
        }
    
    }
    
    • dao层
    package com.itzhouq.dao;
    
    import java.sql.SQLException;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.ScalarHandler;
    
    import com.itzhouq.utils.DataSourceUtils;
    
    public class UserDao {
    
        //校验用户名是否存在
        public Long checkUsername(String username) throws SQLException {
            QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());  
            String sql = "select count(*) from user where username = ?";
            Long query = (Long) runner.query(sql, new ScalarHandler(), username);
            return query;
        }
    
    }
    

    4. 测试

    数据库中有两个测试的用户名,分别为lucy和jack。当用户输入这两个用户名时,提示不能使用该用户名,否则能使用。


    测试1
    测试2

    当然这一个小demo是有BUG的,比如用户可以不输入任何内容也可以通过,这样程序很容易崩溃的。

    相关文章

      网友评论

          本文标题:Ajax使用Demo---异步校验用户名是否存在

          本文链接:https://www.haomeiwen.com/subject/yyolvqtx.html