当前位置: 首页 > news >正文

Ajax--实现检测用户名是否存在功能

目录

(一)什么是Ajax

 (二)同步交互与异步交互

(三)AJAX常见应用情景

 (四)AJAX的优缺点

 (五)使用jQuery实现AJAX

1.使用JQuery中的ajax方法实现步骤(jQuery是js的一个框架)

2.$.ajax()

语法:

 (六)案例:实现光标移开输入框就判断用户名是否存在的功能

思路:

运行结果:


(一)什么是Ajax

        Ajax(Asynchronous Javascript And XML) 翻译成中文就是“异步JavaScript和XML”,即使用JavaScript与服务器进行异步交互,传输的数据为XML。

        AJAX还可以在浏览器实现局部刷新的效果,即不需要刷新整个页面,就比如之前的案例:验证码,这一特点给用户的感受是在不知不觉中完成请求和响应过程。

特点:

  • 与服务器异步交互
  • 实现浏览器页面局部刷新 

 (二)同步交互与异步交互

  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

       通俗来说,同步交互就如同,当你向一个人发消息,你发了一条,必须要等对方回复了才能发下一条,异步交互则不需要等待对方的回复,两人可以同时发送自己想发的信息。

(三)AJAX常见应用情景

当输入用户名后,把光标移动到其他表单项上时,浏览器会使用AJAX技术向服务器发出请求,服务器会查询名为zhangSan的用户是否存在,最终服务器返回true表示名为zhangSan的用户已经存在了,浏览器在得到结果后显示“用户名已被注册!”。

  • 整个过程中页面没有刷新,只是局部刷新了;

  • 在请求发出后,浏览器不用等待服务器响应结果就可以进行其他操作;

 (四)AJAX的优缺点

优点:

  • AJAX使用JavaScript技术向服务器发送异步请求
  • AJAX不需要刷新整个页面
  • 因为服务器不是响应的整个页面,而是局部,所以AJAX能够提高系统的性能

缺点:

  • AJAX并不适用所有场景,有很多情况还是需要用到同步交互
  • AJAX虽然提高了用户的体验,但无形中向服务器发送了太多请求,导致服务器的压力增大
  • 因为AJAX是在浏览器中使用JavaScript技术完成的,所以还需要考虑服务器的兼容性问题

 (五)使用jQuery实现AJAX

        JQuery中已经将AJAX相关的操作进行了封装,使用时只需要在合适的地方调用AJAX相关的方法即可

1.使用JQuery中的ajax方法实现步骤(jQuery是js的一个框架)

  1. 先引入jQuery文件
  2. 调用jQuery中的ajax函数
  3. 编写Servlet方法(接受请求并处理)
  4. 在ajax中接收来自服务端的结果

2.$.ajax()

$.ajax()可以通过发送HTTP请求加载远程数据,是jQuery最底层的AJAX的实现,具有较高灵活性

语法:

$.ajax(

参数1:请求地址url,

参数2:请求类型,

参数3:请求参数,

参数4:请求参数的类型,

参数5:请求成功的回调函数

);

常用设置参数如下:

参 数说 明
String url发送请求的地址,默认为当前页地址
String type请求方式(POST或者GET,默认为GET)
Number timeout设置请求超时时间
Object data 或 String data发送到服务器的数据
String dataType预期服务器返回的数据类型,可用类型有:XML,HTML,Script,JSON,JSONP,Text
function beforeSend(XMLHttpRequest xhr)发送请求前调用的函数参数xhr,可选, XMLHttpRequest对象
function complete(XMLHttpRequest xhr,String ts)请求完成后调用的函数(请求成功或失败时均调用)参数: xhr,可选, XMLHttpRequest对象, ts可选,描述请求类型的字符串
function success(Object result,String ts)请求成功后调用的函数参数result:可选,由服务器返回的数据参数ts可选,描述请求类型的字符串
function error(XMLHttpRequest xhr,String em,Exception e)请求失败时调用的函数参数: xhr,可选, XMLHttpRequest对象, 参数em可选,错误信息参数e:可选 ,捕获的异常对象
boolean global默认为true,表示是否触发全局的AJAX事件

 (六)案例:实现光标移开输入框就判断用户名是否存在的功能

思路:

  1. 绑定事件bluron,实现光标移开聚焦即可检测用户名是否存在
  2. 在jsp中使用ajax函数,湘服务器传递参数
  3. 编写Servlet类,通过response对象得到响应输出流,湘客户端写入用户名是否存在的数据
  4. 编写dao层方法,从数据库中查询该用户名的信息

JSP页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>注册页面</title><script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script>$(function(){$("#uname").blur(function(){var uname = $(this).val();if(uname == ""){$("#remind").html("用户名不能为空");} else {$.ajax({url: "http://localhost:8080/CheckUsername",type: "get",data: "uname=" + uname,dataType: "text",success: function(result) {console.log("Response received: " + result);alert(result);},error: function(xhr, status, error) {console.error("AJAX Error: " + status + error);}});}});});</script>
</head>
<body>
用户名:<input type="text" name="uname" id="uname" /><span id="remind"></span>
</body>
</html>

Servlet方法:

@WebServlet("/CheckUsername")
public class CheckUsernameServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 接收前端输入的用户名String uname = req.getParameter("uname");req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");UserService userService = new UserServiceImpl();if(userService.queryUsername(uname)){resp.getWriter().write("用户名已存在");}else{resp.getWriter().write("用户名不存在");}}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}
}

Dao层方法:

public class UserDaoImpl implements UserDao {@Overridepublic boolean queryUsername(String uname) {Connection conn = null;try {conn= JdbcUtils.getConnection();String sql="select * from users where username = ? ";QueryRunner qr=new QueryRunner();List<User> users = qr.query(conn,sql,new BeanListHandler<User>(User.class),uname);if (users.size()==0){return false;}else {return true;}} catch (SQLException e) {throw new RuntimeException(e);}}
}

运行结果:

用户名不存在:

用户名已存在:

相关文章:

Ajax--实现检测用户名是否存在功能

目录 &#xff08;一&#xff09;什么是Ajax &#xff08;二&#xff09;同步交互与异步交互 &#xff08;三&#xff09;AJAX常见应用情景 &#xff08;四&#xff09;AJAX的优缺点 &#xff08;五&#xff09;使用jQuery实现AJAX 1.使用JQuery中的ajax方法实现步骤&#xf…...

【代码pycharm】动手学深度学习v2-09 Softmax 回归 + 损失函数 + 图片分类数据集

课程链接 1.读取图像分类数据集 import matplotlib.pyplot as plt import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2l d2l.use_svg_display() #读取数据集 transtransforms.ToTensor() mnist_…...

设计模式:24、访问者模式

目录 0、定义 1、访问者模式的五种角色 2、访问者模式的UML类图 3、示例代码 0、定义 表示一个作用于某对象结构中的各个元素的操作。它可以在不改变各个元素的类的前提下&#xff0c;定义作用于这些元素的新操作。 1、访问者模式的五种角色 抽象元素&#xff08;Element…...

基于JAVA的旅游网站系统设计

摘要 随着信息技术和网络技术的迅速发展&#xff0c;人们的生活质量和观念也在发生着改变&#xff0c;各地争相发展旅游业&#xff0c;传统的 旅游社已经无法满足人们的需求&#xff0c;旅游网站将突破传统在时间和地域的限制&#xff0c;成为方便、快捷、安全、可靠的旅游 方…...

网络安全产品之认识防火墙

防火墙是一种网络安全产品&#xff0c;它设置在不同网络&#xff08;如可信任的企业内部网和不可信的公共网&#xff09;或网络安全域之间&#xff0c;通过监测、限制、更改跨越防火墙的数据流&#xff0c;尽可能地对外部屏蔽网络内部的信息、结构和运行状况&#xff0c;以此来…...

nginx反向代理(负载均衡)和tomcat介绍

nginx的代理 负载均衡 负载均衡的算法 负载均衡的架构 基于ip的七层代理 upstream模块要写在http模块中 七层代理的调用要写在location模块中 轮询 加权轮询 最小连接数 ip_Hash URL_HASH 基于域名的七层代理 配置主机 给其余客户机配置域名 给所有机器做域名映射 四层代理…...

Microsoft Azure 在线技术公开课:生成式 AI 基础知识

课程介绍 参加我们的生成式 AI 基础知识公开课&#xff0c;了解如何将最新 AI 进展应用到你的工作中。你将了解有关语言模型和生成式 AI 应用程序的基础知识。此外&#xff0c;你还将了解 Azure OpenAI 服务如何通过文本、代码、图像生成、自然语言摘要和语义搜索助你实现成果…...

lnmp+discuz论坛 附实验:搭建discuz论坛

Inmpdiscuz论坛 Inmp: t: linux操作系统 nr: nginx前端页面 me: mysql数据库 账号密码&#xff0c;等等都是保存在这个数据库里面 p: php——nginx擅长处理的是静态页面&#xff0c;页面登录账户&#xff0c;需要请求到数据库&#xff0c;通过php把动态请求转发到数据库 n…...

谷粒商城—分布式高级①.md

1. ELASTICSEARCH 1、安装elastic search dokcer中安装elastic search (1)下载ealastic search和kibana docker pull elasticsearch:7.6.2 docker pull kibana:7.6.2(2)配置 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data echo "h…...

Unity开发配置不足,卡顿崩溃怎么办?

在游戏开发和虚拟现实等领域&#xff0c;Unity 软件以其强大的功能和广泛的适用性成为了众多开发者的首选。然而&#xff0c;要充分发挥 Unity 的性能&#xff0c;一台高性能的电脑设备是必不可少的。今天&#xff0c;我要向大家介绍川翔云电脑&#xff0c;它为 Unity 开发者提…...

在 Linux 上以 All-in-One 模式安装 kubernetes v1.22.12 kubesphere v3.4.1

KubeSphere4.1安装文档 在 Kubernetes 上快速安装 KubeSphere 在 Linux 上以 All-in-One 模式安装 kubernetes v1.22.12 kubesphere v3.4.1 官方文档&#xff1a;在 Linux 上以 All-in-One 模式安装 KubeSphere 下载文件 KubeKey git地址Releases kubesphere/kubekey 或 …...

网络安全自学是一项需要耐心和恒心的任务

网络安全自学是一项需要耐心和恒心的任务&#xff0c;但只要你按照正确的学习路线图去努力&#xff0c;就能够逐步掌握这一领域的知识和技能。下面是一份详细的学习路线图&#xff0c;它将帮助你从零基础开始&#xff0c;逐步成为网络安全领域的专家。 第一阶段&#xff1a;基…...

Python+OpenCV系列:图像的几何变换

Python OpenCV 系列&#xff1a;图像的几何变换 引言 在图像处理领域&#xff0c;几何变换是一个非常重要的操作&#xff0c;它可以改变图像的位置、大小、方向或形状。在计算机视觉中&#xff0c;这些操作对于图像预处理、特征提取和图像增强至关重要。本文将介绍如何利用 …...

第P1周:Pytorch实现mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 1. 实现pytorch环境配置 2. 实现mnist手写数字识别 3. 自己写几个数字识别试试具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python…...

使用EventLog Analyzer进行Apache日志监控和日志分析

一、什么是Apache日志分析 Apache日志分析是网站管理和维护的重要部分&#xff0c;通过分析Apache服务器生成的日志文件&#xff0c;可以了解网站的访问情况、识别潜在的安全问题、优化网站性能等。 二、Apache日志类型 Apache日志主要有两种类型&#xff1a;访问日志&a…...

PaddleOCR模型ch_PP-OCRv3文本检测模型研究(二)颈部网络

上节研究了PaddleOCR文本检测v3模型的骨干网&#xff0c;本文接着研究其颈部网络。 文章目录 研究起点残注层颈部网络代码实验小结 研究起点 摘取开源yml配置文件&#xff0c;摘取网络架构Architecture中颈部网络的配置如下 Neck:name: RSEFPNout_channels: 96shortcut: True可…...

360极速浏览器不支持看PDF

360安全浏览器采用的是基于IE内核和Chrome内核的双核浏览器。360极速浏览器是源自Chromium开源项目的浏览器&#xff0c;不但完美融合了IE内核引擎&#xff0c;而且实现了双核引擎的无缝切换。因此在速度上&#xff0c;360极速浏览器的极速体验感更佳。 展示自己的时候要在有优…...

【深度学习】深刻理解ViT

ViT&#xff08;Vision Transformer&#xff09;是谷歌研究团队于2020年提出的一种新型图像识别模型&#xff0c;首次将Transformer架构成功应用于计算机视觉任务中。Transformer最初应用于自然语言处理&#xff08;如BERT和GPT&#xff09;&#xff0c;而ViT展示了其在视觉任务…...

解决vue2中更新列表数据,页面dom没有重新渲染的问题

在 Vue 2 中&#xff0c;直接修改数组的某个项可能不会触发视图的更新。这是因为 Vue 不能检测到数组的索引变化或对象属性的直接赋值。为了确保 Vue 能够正确地响应数据变化&#xff0c;你可以使用以下几种方法&#xff1a; 1. 使用 Vue.set() 使用 Vue.set() 方法可以确保 …...

vscode通过ssh连接远程服务器(实习心得)

一、连接ssh服务器 1.打开Visual Studio Code&#xff0c;进入拓展市场(CtrlShiftX)&#xff0c;下载拓展Remote - SSH 2. 点击远程资源管理器选项卡&#xff0c;并选择远程(隧道/SSH)类别 3. 点击ssh配置&#xff1a;输入你的账号主机ip地址 4.在弹出的选择配置文件中&#xf…...

文章标题:专业ASIC FPGA IP加密代码解密工具

专业 ASIC FPGA IP 加密代码解密工具 支持 Xilinx Vivado IP 解密&#xff0c;包括 ip、vp、iip、vip、dw、rtl、run 包等&#xff1b;还支持解密 Verilog、VHDL、SystemVerilog&#xff08;sv、svp、svh、svi&#xff09;等多种语言&#xff0c;能够解密所有加密文件 解密工具…...

第25课:让 Qt 从 GPIO 子系统一路进阶到平台驱动与设备树控制

本节路线图 为什么这一课要把三种GP → 先从GPIO子系统开始: → 再进一步:平台驱动让LE 小猫提醒 这节有分区、烧录或删除类操作,先确认盘符和路径,再按回车。 猫头鹰提示 编译前先对齐目标架构和工具链名字,别让主机程序和板卡程序搞混。 上一课我们已经把 Qt 和字符驱动…...

Multisim中在一个项目中添加多页

Multisim中在一个项目中添加多页 新建多页 新建支电路 参考 Multisim电路模块化设计的三种方式_multisim模块封装-CSDN博客 Multisim创建子电路图-百度经验...

魔兽争霸3终极优化指南:WarcraftHelper让你的经典游戏在现代系统上重焕新生

魔兽争霸3终极优化指南&#xff1a;WarcraftHelper让你的经典游戏在现代系统上重焕新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为…...

模电实战-比较器正反馈接法的窗口电压设计

1. 比较器正反馈接法的核心价值 我第一次接触比较器正反馈接法是在设计工业传感器信号调理电路时。当时遇到一个头疼的问题&#xff1a;环境噪声导致比较器在临界电压附近频繁误触发&#xff0c;整个系统像得了"癫痫"一样不停抖动。直到尝试了正反馈接法&#xff0c;…...

3分钟突破网盘限速!Baiduwp-PHP实现百度网盘链接高速解析

3分钟突破网盘限速&#xff01;Baiduwp-PHP实现百度网盘链接高速解析 【免费下载链接】baiduwp-php A tool to get the download link of the Baidu netdisk / 一个获取百度网盘分享链接下载地址的工具 项目地址: https://gitcode.com/gh_mirrors/ba/baiduwp-php 在数字…...

轨道角动量OAM超表面与自旋-轨道角动量耦合结构设计的FDTD仿真案例

轨道角动量 OAM 超表面 自旋-轨道角动量耦合结构设计 fdtd仿真 复现2017 OE&#xff1a;Spin-to-orbital angular momentum conversion in dieletric metasurface 介绍&#xff1a;自旋-轨道角动量转换超表面&#xff0c;入射自旋角动量光束&#xff0c;即左右旋圆偏振光时&…...

编译原理期末考后复盘:从NFA到DFA最小化,我的Hopcroft算法实战笔记

编译原理期末考后复盘&#xff1a;从NFA到DFA最小化&#xff0c;我的Hopcroft算法实战笔记 刚走出编译原理考场&#xff0c;那种既紧张又兴奋的感觉还萦绕在心头。作为计算机专业的核心课程&#xff0c;编译原理向来以理论抽象、算法复杂著称&#xff0c;而今天的期末考试恰好验…...

Legacy-iOS-Kit全流程指南:让iPad mini 2重获新生的系统降级实践

Legacy-iOS-Kit全流程指南&#xff1a;让iPad mini 2重获新生的系统降级实践 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS…...

智能配置引擎:OpenCore EFI构建效率提升90%的技术突破

智能配置引擎&#xff1a;OpenCore EFI构建效率提升90%的技术突破 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 问题溯源&#xff1a;开源系统硬件适…...