企业网站建设板块网站验证码代码

news/2025/9/24 21:45:13/文章来源:
企业网站建设板块,网站验证码代码,洛阳青峰网络公司做网站,目前做哪些网站致富JavaWeb 学习笔记 8#xff1a;AJAX AJAX#xff08;Asynchronous JavaScript And XML#xff0c;异步 js 和 XML#xff09;是一种用 js 代码异步#xff08;或同步#xff09;的方式请求服务端数据#xff0c;并在页面显示或加载的技术。 1.快速入门 先看如何用纯 …JavaWeb 学习笔记 8AJAX AJAXAsynchronous JavaScript And XML异步 js 和 XML是一种用 js 代码异步或同步的方式请求服务端数据并在页面显示或加载的技术。 1.快速入门 先看如何用纯 js 的方式使用 AJAX 定义一个用于响应 AJAX 请求的 Servlet WebServlet(/hello) public class HelloServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().println(Hello World!);} }定义一个 html 页面 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body button onclickdoAjaxRequest()send/button /body scriptfunction doAjaxRequest(){// 创建 XMLHttpRequest 对象const xhttp new XMLHttpRequest();// 定义回调函数xhttp.onreadystatechange function() {if (this.readyState 4 this.status 200) {let result this.responseText;console.log(result);}};// 发送请求xhttp.open(GET, http://localhost:8080/ajax-demo/hello, true);xhttp.send();} /script /htmljs 方法doAjaxRequest负责创建一个 XMLHttpRequest 对象并用其发送 AJAX 请求然后将返回的内容打印在控制台中。 关于原生 AJAX 的详细说明可以阅读这里。 点击按钮可以看到浏览器发送了一个类型为 XHRXMLHttpRequest 的请求到服务端 并且可以看到控制台输出。 2.案例验证用户是否存在 服务端 WebServlet(/user/exist) public class ExistController extends HttpServlet {private UserService userService new UserServiceImpl();Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username req.getParameter(username);boolean exists userService.checkUsernameExists(username);if (exists){resp.getWriter().print(true);}else{resp.getWriter().print(false);}} }在页面表单中输入用户名的元素上设置光标焦点事件 input nameusername typetext idusername onblurcheckUsernameExists()对应的 js // 检查用户名是否存在 function checkUsernameExists() {let username $(input#username).val();const xhttp new XMLHttpRequest();xhttp.onreadystatechange function() {if (this.readyState 4 this.status 200) {let result this.responseText;console.log(result)if (result true){console.log(用户名已存在)$(span#username_err).html(用户名已存在);$(span#username_err).show();}else{$(span#username_err).hide();}}};xhttp.open(POST, http://localhost:8080/login-demo/user/exist?usernameusername, true);xhttp.send(); }3.Axios Axios 是封装好的一个异步调用框架可以运行于浏览器或 Node.js 服务器上。 使用 Axios 可以让我们之前的 AJAX 调用的代码更为简单。 在 html 中添加对 Axios 的引用 headscript srchttps://cdn.jsdelivr.net/npm/axios/dist/axios.min.js/script /head修改 AJAX 部分代码使用 Axios 进行调用 // 检查用户名是否存在 function checkUsernameExists() {let username $(input#username).val();axios({method: post,url: /login-demo/user/exist?username username}).then(function (response) {let result response.data;if (result) {$(span#username_err).html(用户名已存在);$(span#username_err).show();} else {$(span#username_err).hide();}}); }axios对象可以接收一个 js 对象其method属性指定了 HTTP Methodurl指定请求的 url。 需要注意的是这里 Axios 将返回的响应报文体进行了解析所以这里response.data不是一个字符串形式的true或false而是 bool 类型。 除了上边的方式还可以使用一种简化的方式 // 检查用户名是否存在 function checkUsernameExists() {let username $(input#username).val();axios.post(/login-demo/user/exist?username username).then(function (response) {let result response.data;if (result) {$(span#username_err).html(用户名已存在);$(span#username_err).show();} else {$(span#username_err).hide();}}); }4.JSON 通常浏览器和服务端通过异步调用方式传输的数据结构都很复杂所以会使用 JSON 格式的字符串进行传输。 浏览器端 // 检查用户名是否存在 function checkUsernameExists() {let username $(input#username).val();axios.post(/login-demo/user/exist, {username: username}).then(function (response) {let result response.data;if (result.exist) {$(span#username_err).html(用户名已存在);$(span#username_err).show();} else {$(span#username_err).hide();}}); }服务端 WebServlet(/user/exist) public class ExistController extends HttpServlet {private UserService userService new UserServiceImpl();Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {BufferedReader reader req.getReader();StringBuilder sb new StringBuilder();do{String line reader.readLine();if (line null){break;}sb.append(line);}while (true);String content sb.toString();System.out.println(content);JSONObject jsonObject JSON.parseObject(content);String username (String) jsonObject.get(username);boolean exists userService.checkUsernameExists(username);JSONObject resultJO new JSONObject();if (exists){resultJO.put(exist, true);}else{resultJO.put(exist, false);}resp.setContentType(application/json;charsetUTF-8);resp.getWriter().print(resultJO.toJSONString());} }这里使用了一个中间件 FastJSON用于在服务端解析和编码 JSON 字符串 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.75/version /dependency5.案例异步加载品牌列表 可以用 AxiosJSON 异步加载品牌列表。 后端 WebServlet(/brand/list) public class ListController extends HttpServlet {// .../*** 获取品牌列表* param request* param response* throws ServletException* throws IOException*/Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType(text/json;charsetutf-8);ListBrand brands brandService.getAllBrands();response.getWriter().print(JSON.toJSONString(brands));} }前端 % taglib prefixc urihttp://java.sun.com/jsp/jstl/core % % page contentTypetext/html;charsetUTF-8 languagejava % !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlescript typetext/javascript src/login-demo/js/jquery-3.7.1.min.js/scriptscript typetext/javascript src/login-demo/js/axios-0.18.0.js/script /head body h1${username}欢迎您/h1 a href/login-demo/brand/addinput typebutton value新增/abr hr table idbrandsTable border1 cellspacing0 width800trth序号/thth品牌名称/thth企业名称/thth排序/thth品牌介绍/thth状态/thth操作/th/trtr aligncenter classbrandsRow hiddenhiddentd/tdtd/tdtd/tdtd/tdtd/tdtd/tdtda href/login-demo/brand/edit?id# classedit修改/aa href/login-demo/brand/delete?id# classdelete删除/a/td/tr /table /body script typetext/javascript$(document).ready(function () {loadBrandsTable();});function loadBrandsTable() {let table $(table#brandsTable);let demoRow table.find(tr.brandsRow:first);// 获取品牌列表信息axios({method: POST,url: /login-demo/brand/list}).then((resp){let brands resp.data;brands.map((brand){let newRow demoRow.clone();console.log(newRow);fillRowData(newRow, brand);table.find(tr:last).after(newRow);});});}function fillRowData(newRow, data){newRow.children(td:eq(0)).html(data.id);newRow.children(td:eq(1)).html(data.brandName);newRow.children(td:eq(2)).html(data.companyName);newRow.children(td:eq(3)).html(data.ordered);newRow.children(td:eq(4)).html(data.description);let status 禁用;if (data.status 0){status 启用;}newRow.children(td:eq(5)).html(status);newRow.children(td:eq(6)).children(a.edit).attr(href,/login-demo/brand/edit?iddata.id);newRow.children(td:eq(6)).children(a.delete).attr(href,/login-demo/brand/delete?iddata.id);newRow.removeAttr(hidden);} /script /html这里为表格添加了一个用于示例数据的行并使用 JQuery 选择器获取这个行的 DOM 对象并进行拷贝填充数据后依次添加到表格的末尾。 用类似的方式可以将新增品牌也修改为前端异步提交而非表单提交这里不再赘述。 6.Template 在前边的示例中使用一个表单中的“隐藏行”作为模板用于遍历品牌信息并填充数据然后添加到表格 DOM 树中并最终称为一个有数据的表格。 这样做是可行的但是“隐藏行”只是用户看不见实际上依然是存在的并且会影响页面的渲染速度。对此有一个专门用于此类问题的 Html 标签 template可以用它作为模板 Html 代码存放的位置。这样做的好处在于template标签中的内容是一个 DocumentFragment文档片段它不是当前Document文档的一部分不是任何DOM对象的子节点所以它不会参与页面渲染就不影响性能。但同时我们依然可以通过 js 代码获取其内部 DOM 结构作为模板进行使用。 使用 template 标签改写之前的示例 table idbrandsTable border1 cellspacing0 width800trth序号/thth品牌名称/thth企业名称/thth排序/thth品牌介绍/thth状态/thth操作/th/tr /table template idrowTemplatetr aligncentertd/tdtd/tdtd/tdtd/tdtd/tdtd/tdtda href/login-demo/brand/edit?id# classedit修改/aa href/login-demo/brand/delete?id# classdelete删除/a/td/tr /template对应的 js 代码 function loadBrandsTable() {let table $(table#brandsTable);let demoRow $(#rowTemplate).get(0).content.querySelector(tr);// 获取品牌列表信息axios({method: POST,url: /login-demo/brand/list}).then((resp){let brands resp.data;brands.map((brand){let newRow $(demoRow).clone();// console.log(newRow);fillRowData(newRow, brand);table.find(tr:last).after(newRow);});}); }需要注意的是template 标签的内容是文档片段而文档片段并不是当前文档的一部分。如果用开发者工具观察文档结构 template 标签本身是当前文档的一部分是可以通过文档操作的方式获取的比如用 JQuery$(#rowTemplate).get(0)。但是其内部的内容是一个文档片段#document-fragment标记的部分这部分内容并不属于当前文档所以你是没办法用类似$(#rowTemplate).children()的方式获取到的这个筛选项的长度只能是0没有任何内容。 除了上边示例中使用template的content属性获取 DOM 对象外还可以用 JQuery 的方式 let demoRow $($(#rowTemplate).html()).get(0);这里是先获取template标签内的 html 内容然后用 JQuery 解析以生成 DOM 对象。 两者效果是相同的只是写法不同。 本文的完整示例可以从这里获取。 7.参考资料 黑马程序员JavaWeb基础教程AJAX 简介 (w3school.com.cn)jQuery 教程 (w3school.com.cn)DocumentFragment - Web API 接口参考 | MDN (mozilla.org)DOMParser - Web API 接口参考 | MDN (mozilla.org)javascript中html字符串转化为jquery dom对象的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟网站管理系统做网站编辑累吗

本文实例为大家分享了python实现石头剪刀布的具体代码,供大家参考,具体内容如下 概述: 如果你和我一样是一个有着其他语言基础的编程者,那我想这个小程序对于你来说是小case。由于本人初学Python,就先拿这个熟悉熟悉一…

途牛旅行网站建设策划书wordpress水印

说明:本篇博客基于selenium 4.1.0 selenium-css定位 element_css driver.find_element(By.CSS_SELECTOR, css表达式) 复制代码 css定位说明 selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法 css定位优点…

科技信息差(9.22) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

软件技术基础第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/25rjjc这个作业的目标 做自我介绍,对自己有一个初步的认知,进行自我评估,找到学习目标姓名-学号 刘倩妤-20233293010021.自我介绍与自我评估 自我介绍 我…

2025XDOJ个人题解——写在前面

本人是25级计科学生,想要写XDOJ的题单博客以供自己学习和大家交流用,同时也便于使用XDOJ的初学者们学习,大家可在评论里面交流相关内容。其中解题过程并非规范,如果路人大佬看到还请包容。 题目是XDOJ上老师布置的…

适合电子纸屏幕的简易象棋打谱程序

除了海信手机和华为平板外,还有些其他屏幕为电子纸的安卓设备。 在下写了个.html和两个.js,仿印刷品打谱:这个图是截得电脑屏幕,在海信A5上显示效果更好。 为了能在浏览器里加载本地HTML文件而不是还得通过Web服务…

asp网站做安全wordpress 免费电商主题

手机使用过程中经常会遇到第三方软件接收不到信息提醒的状况,常常因此耽误了很多重要的事情,造成损失。特别是刚换新手机或者手机刚升级系统时发生的最多。一般都觉得是手机问题,其实只是手机的系统设置出现了问题,只要跟我按照以…

做战袍网站昆山网站备案

Java自诞生已经有十几个年头了,目前也已经发布了第十三个大版本,其中Java8是常用的版本中最新的一个版本。而Java8最大的特性就是:Lambda表达式、函数式接口和Stream流。本篇我只介绍Lamda表达式的概念以及简单使用,至于别的我打算…

0924

https://www.luogu.com.cn/problem/P1967 换了一种做法做出来了 不记得老师之前怎么讲的1 #include<bits/stdc++.h>2 #define R 2000013 using namespace std;4 int n,m,cnt,q;5 struct node6 {7 int u,v,di…

java_string比较中的细节

string比较中为什么不用“==”而是选择用“equals()语法” 两种string字符串生成方式直接使用字符串字面赋值 如:String s1 = "zhoujiale"; 此类型中,计算机在“串池(位于常量池中)”中创造空间“zhou…

扫描线学习笔记

扫扫喵喵仙仙感觉这个东西有点抽象啊,三道题下来也不是很懂的样子 前置知识 线段树(or树状数组),离散化 解决目标 矩形面积并,矩形周长并,二位数点覆盖等 矩形面积并 先看例题 矩形面积比 大意:给定n个矩形,求这…

汽车网站首页模板代码html网站架设

content: \20; 表示里面有值&#xff0c;你可以随便操作了

go-reids

初始化客户端 package mainimport ("context""fmt""github.com/redis/go-redis/v9" )var ctx = context.Background()func main() {rdb := redis.NewClient(&redis.Options{Addr: …

AI完美声音克隆及情绪控制,与真人无异,Lark下载介绍

在社交平台上,你是否刷到过一些魔性又神奇的视频?比如英文版《三国演义》、唐僧大战灭霸、川普说中文... 这些作品不仅完美复现了原角色的音色,连情感和韵律都做到了高度还原!更让人惊讶的是,它们居然全都是靠AI生…

WSL,适用于 Linux 的 Windows 子系统

WSL 是什么? WSL 是 Windows 系统的一项功能,允许在 Windows 上直接运行 Linux 发行版(如 Ubuntu、Debian、Kali 等),无需虚拟机或双系统。它能让开发者在 Windows 环境中无缝使用 Linux 工具、命令行和应用程序,…

学财税大信息应用,需要考CPA/税务师吗?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【CV】GAN代码解析: networks.py

【CV】GAN代码解析: networks.pyPosted on 2025-09-24 21:29 SaTsuki26681534 阅读(0) 评论(0) 收藏 举报import torch import torch.nn as nn from torch.nn import init import functools from torch.optim im…

怎么使用网站服务器网站建设中首页模板

文章目录 一&#xff0e;前言二&#xff0e;游戏预览1.启动2.开始游戏3.游戏结束4.排行榜 三&#xff0e;游戏思路四&#xff0e;总结 一&#xff0e;前言 第一次用PyQt做游戏&#xff0c;有点小紧张呢。本次使用PyQt5制作一款简单的打地鼠游戏&#xff0c;支持基本游戏玩法、…

厦门网站建设找哪家比较好昆明seo案例

在 Vue 中使用路由拦截器需要使用 Vue Router 提供的 beforeEach 方法。beforeEach 方法会在每个路由切换前&#xff0c;对路由进行拦截处理。可以在这个方法中进行一些验证或者权限认证&#xff0c;如果满足条件则继续跳转&#xff0c;否则取消跳转并进行相应处理。 下面是一…

9-24

在编译方式下,中间代码、代码优化是可以省略的 词法、语法、语义分析都是必须的并且不可以交换顺序 解释器参与运行控制,程序执行的速度慢符号表!!词法分析--输出记号流语法分析--输出语法树 语法分析主要是分析结…