首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
Ajax验证用户名是否存在的实现方法与代码示例

Ajax验证用户名是否存在的实现方法与代码示例

热心网友
23
转载
2026-05-07

Ajax验证用户名是否存在的实例代码详解

在日常的Web项目开发中,注册功能里的用户名查重,几乎是每个新手必做的练习。这不,为了让大家对Ajax实现实时验证的流程有个透彻的理解,今天咱们就来拆解一个非常典型的例子,看看从前端页面、Ja vaScript逻辑,到后台Servlet、Service层,乃至最终的数据库查询,这整条链路是如何协同工作的。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

JSP页面

首先,我们来看前端的“阵地”。代码很简单,核心就是一个文本输入框,它的使命是捕捉用户的每一次输入。


    

用户名:

这里有几个关键点值得注意:一是通过onblur="CheckUserName()"事件,用户的光标一旦离开这个输入框,验证函数就会被触发。二是那个不起眼的

标签,它可是个“消息公告栏”,后端返回的验证结果就靠它来动态展示了。

JS文件夹下的register.js

重头戏来了。前端的“大脑”逻辑都写在这里,它负责发起请求、处理响应、并更新页面提示。

//创建XMLHttpRequest对象,这是Ajax的基石
function ajaxFunction(){
    var xmlHttp;
    try{
        // 适用于IE7+, Firefox, Chrome, Opera, Safari
        xmlHttp=new XMLHttpRequest();
    } catch(e){
        try{
            //兼容老版本Internet Explorer
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e){
            try{
                // 适用于更古老的IE6, IE5
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e){
                xmlHttp=false;
            }
        }
    }
    return xmlHttp;
}

var flag=true;
function CheckUserName(){
    //获取用户在输入框里填写的值
    var name=document.getElementById("r_name").value;

    //第一关:非空校验
    if(name==""||name==null){
        document.getElementById("p01").innerHTML="用户名不能为空!";
        flag=false;
    }else{
        //1.创建核心的Ajax请求对象
        var request=ajaxFunction();

        //2.配置并发送请求
        request.open("POST","/StudyWeb/CheckUserNameServlet",true); //true表示采用异步模式

        //3.注册一个监听器,专门等着服务器回信
        request.onreadystatechange=function(){
            //readyState==4代表请求完成,status==200代表服务器成功响应
            if(request.readyState==4 && request.status==200){
                var data=request.responseText; //拿到Servlet返回的纯文本数据

                //根据返回的数据,更新页面提示
                if(data == 1){
                    document.getElementById("p01").innerHTML="用户名已存在!";
                    flag=false;
                }else{
                    document.getElementById("p01").innerHTML="";
                    flag=true;
                }
            }
        }

        //如果是POST方式提交额外数据,必须设置这个请求头
        request.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8");

        //4.正式发出请求,并把用户名作为参数带过去
        request.send("name="+name);
    }
    return flag;
}

这段代码清晰地展示了Ajax的核心四步曲:创建对象、配置请求、监听状态、发送数据。特别需要注意那个onreadystatechange事件,它就像是派出去的“信使”,服务器有任何风吹草动,它都能实时感知并处理。

后台StudyWeb项目下的CheckUserNameServlet

请求到了后台,Servlet首先登场,扮演着“ dispatcher(调度员)”的角色。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //拿到前端传过来的用户名参数
    String r_name=request.getParameter("name");
    try {
        //将任务交给Service层进行业务逻辑判断
        boolean isExist=userService.CheckUserName(r_name);
        System.out.println("isExist"+isExist);

        //将判断结果以最简单的文本形式(1或2)返回给前端
        if(isExist){
            response.getWriter().println(1); //1代表用户名已存在
        }else{
            response.getWriter().println(2); //2代表用户名可用
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Servlet的工作非常聚焦:获取参数、调用服务、返回结果。它不关心具体的查询逻辑,只负责流程的衔接与数据的转发。

UserDaoImpl中方法的实现

最后,我们抵达数据持久层,这里是直接与数据库对话的地方。

public boolean CheckUserName(String u_name) {
    boolean flag=false;
    String sql="select u_id,u_name,u_password,u_email,u_phone from user where u_name=?";
    conn=super.getConnection();
    try {
        pstmt=conn.prepareStatement(sql);
        pstmt.setString(1,u_name); //使用预编译语句防止SQL注入
        rs=pstmt.executeQuery();

        //关键判断:如果查询结果集有下一条记录,说明用户名已存在
        if(rs.next()){
            flag=true;
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally{
        super.closeAll(conn, pstmt, stmt, rs); //切记关闭数据库连接,释放资源
    }
    return flag;
}

这里的逻辑直截了当:构造SQL查询,使用PreparedStatement安全地传入参数,然后根据查询结果的有无,返回一个布尔值。安全性和资源清理是这一层的生命线。

总结

走完这一遍,整个Ajax验证用户名的流程就非常清晰了:从页面交互触发,到Ja vaScript发起异步请求;请求经Servlet调度,转给Service与Dao层进行数据库查询;最终的查询结果再沿原路返回,由Ja vaScript动态渲染到页面上。这正是一个经典的前后端分离协作的微型模型。希望这个实例的逐层拆解,能帮助你牢牢掌握其中的每一处细节。如果在实践中遇到任何问题,也欢迎随时交流探讨。

来源:https://www.jb51.net/article/159283.htm
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Ajax接收与处理XML数据的操作实例详解
编程语言
Ajax接收与处理XML数据的操作实例详解

Ajax对xml信息的接收和处理操作实例分析 今天我们来拆解一个经典的前端技术组合应用:如何通过Ajax接收XML信息,并利用DOM技术对其进行处理。这个流程,其实是现代Web应用中数据交互的一个非常典型的范式。 核心角色分工 整个过程可以看作一场精密的“接力赛”: Ajax负责从服务器端请求并接收

热心网友
05.07
Ajax验证用户名是否存在的实现方法与代码示例
编程语言
Ajax验证用户名是否存在的实现方法与代码示例

Ajax验证用户名是否存在的实例代码详解 在日常的Web项目开发中,注册功能里的用户名查重,几乎是每个新手必做的练习。这不,为了让大家对Ajax实现实时验证的流程有个透彻的理解,今天咱们就来拆解一个非常典型的例子,看看从前端页面、Ja vaScript逻辑,到后台Servlet、Service层,乃

热心网友
05.07
PHP AJAX提交后如何实现页面跳转与响应处理
编程语言
PHP AJAX提交后如何实现页面跳转与响应处理

AJAX 本身用于异步请求且不刷新页面,若需在提交数据后跳转并显示 PHP 处理结果,不应混合使用 $ ajax 和 window open,而应改用表单 POST 提交或在 AJAX 成功回调中动态渲染响应内容。 很多开发者都遇到过这个典型的“断层”问题:前端明明通过 AJAX 把数据成功提交给了

热心网友
05.06
HTML Ajax能改善异步请求吗_HTML Ajax优化异步请求方法【收藏】
前端开发
HTML Ajax能改善异步请求吗_HTML Ajax优化异步请求方法【收藏】

原生与现代的对话:异步请求的技术抉择 当我们谈论优化异步请求时,一个常见的误区是混淆了概念。首先要澄清一点:所谓“HTML Ajax”其实是个伪命题。异步 Ja vaScript 和 XML,也就是我们常说的 Ajax,它从来不是 HTML 的特有技术,而是前端 Ja vaScript 发起非阻塞

热心网友
04.27
myeclipse导入本地项目教程
手机教程
myeclipse导入本地项目教程

myeclipse如何导入本地项目?myeclipse10支持java servlet、ajax、jsp、jsf、struts、spring、hibernate、ejb3、jdbc

热心网友
04.28

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

Bitget交易所2026年发展前景与市场排名深度解析
web3.0
Bitget交易所2026年发展前景与市场排名深度解析

2026年,Bitget在交易所排行榜上展现出强劲的竞争力。其表现主要体现在用户资产安全体系的持续加固、多元化产品矩阵的成熟与创新,以及在合规与全球化布局上的显著进展。平台通过优化现货与衍生品交易体验,并深化Web3生态建设,巩固了其在行业中的领先地位,获得了市场与用户的广泛认可。

热心网友
05.07
NET开发中HttpClient使用避坑指南与最佳实践详解
编程语言
NET开发中HttpClient使用避坑指南与最佳实践详解

HttpClient的7个常见陷阱与规避指南 在 NET 生态里进行项目开发,HttpClient 几乎是调用外部 API 绕不开的一个工具。它的上手门槛很低,用起来很顺手,但恰恰是这份“简单”,让不少开发者放松了警惕。如果不清楚它内部的运作机制,一不小心就可能掉进坑里,轻则请求失败,重则引发服务

热心网友
05.07
NETCore与Linux服务器时间同步问题的多种解决方案详解
编程语言
NETCore与Linux服务器时间同步问题的多种解决方案详解

如何解决 NET Core项目与Linux服务器之间的时间同步问题 导语 搞分布式系统的开发者,多少都踩过时间不同步的“坑”。这事说大不大,说小不小——日志对不上、订单乱取消、交易出岔子,追根溯源,往往是几台机器的时间“各走各的”。尤其是在 NET Core应用遇上Linux服务器的场景,时区、格式

热心网友
05.07
NET 4.7 如何使用 NLog 将日志记录到数据库
编程语言
NET 4.7 如何使用 NLog 将日志记录到数据库

1 首先安装必要的NuGet包 第一步,咱们得把项目里需要的“砖瓦”——也就是那几个关键的NuGet包——给准备好。具体是下面这几个: NLog:日志记录的核心库。 NLog Config (可选):如果你想让配置文件自动生成,可以加上这个。 当然,别忘了根据你用的数据库类型,安装对应的提供程序。

热心网友
05.07
NETCore消息队列RabbitMQ实现方法与代码示例
编程语言
NETCore消息队列RabbitMQ实现方法与代码示例

在 NET Core 中玩转 RabbitMQ:从零搭建可靠的消息队列 消息队列是现代应用解耦和异步通信的基石,而 RabbitMQ 无疑是这个领域的明星选手。它基于 AMQP 协议,为不同应用程序间的可靠消息传递提供了强大支持。今天,我们就来深入聊聊,如何在 NET Core 环境中,亲手搭建

热心网友
05.07