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

Java Web 开发学习中:过滤器与 Ajax 异步请求

一、过滤器 Filter:

过滤器的概念与用途

在一个庞大的 Web 应用中,有许多资源需要受到保护或进行特定的预处理。过滤器就像是一位智能的守卫,站在资源的入口处,根据预先设定的规则,决定哪些请求可以顺利访问资源,哪些请求需要被拦截或进行特殊处理。比如,在众多页面中,判断用户是否登录是一项常见且关键的任务。如果没有过滤器,我们可能需要在每个资源的访问代码中重复编写登录验证逻辑,这不仅繁琐,而且难以维护。而过滤器的出现,让我们可以在一个集中的地方处理这些共性需求。

过滤器的实现步骤

  1. 定义过滤器类:创建一个类,让它实现 Filter 接口,这个接口就像是过滤器的蓝图,规定了过滤器必须具备的方法。其中,init 方法在过滤器初始化时执行,是进行一次性设置的好地方;doFilter 方法则是过滤器的核心,每次请求资源时都会经过这里,就像车辆经过检查站一样,我们可以在这里检查请求的合法性、修改请求或响应的内容等;destroy 方法在过滤器生命周期结束时被调用,用于清理资源,确保资源被妥善释放。
  2. 注册过滤器:注册过滤器的方式有两种,传统的 web.xml 配置方式和便捷的注解方式。在 web.xml 中,我们需要详细地告诉服务器过滤器的名称、对应的类以及过滤规则。而注解方式则更加简洁,通过在过滤器类上添加特定的注解,就能轻松完成注册。

发一个简单的 Web 应用,其中包含多个页面,只有登录后的用户才能访问其他页面,否则应被引导至登录页面。

  1. 首先,创建一个过滤器类,如 MyFilter。在 doFilter 方法中,通过获取请求的 URI,判断当前请求是否为登录页面、注册页面或登录处理路径等白名单资源。如果是,直接放行请求,让用户能够正常访问这些页面。如果不是白名单资源,就从会话中获取用户信息。如果获取到用户信息,说明用户已登录,继续放行请求;如果获取不到,意味着用户未登录,此时使用 response.sendRedirect 将用户重定向到登录页面。
  2. 注册这个过滤器,可以选择在 web.xml 中进行配置,或者使用注解方式(如 @WebFilter),并根据需求设置合适的过滤规则,比如 “/*” 表示对所有资源应用该过滤器。

Ajax 异步请求:

Ajax 异步请求

在传统的 Web 开发中,页面的交互往往伴随着整页的刷新,这就像每次与服务器通信都要重新打开一扇大门,效率较低且用户体验不佳。而 Ajax 异步请求的出现,彻底改变了这种局面。它就像一根魔法棒,能够在不刷新整个页面的情况下,与服务器进行数据交互。这意味着,用户在页面上进行操作时,无需等待页面重新加载,就能及时获取服务器返回的数据并更新页面的部分内容,使 Web 应用的交互性更上一层楼。

Ajax 异步请求的使用场景

  1. 实时数据验证:在用户注册或登录时,当输入用户名或密码后,立即通过 Ajax 请求发送到服务器进行验证,而无需等到提交整个表单,从而及时反馈给用户错误信息,提高用户体验。
  2. 动态加载数据:在网页上,例如显示新闻列表或商品列表时,通过 Ajax 异步请求在用户滚动页面或点击 “加载更多” 按钮时,动态地从服务器获取并加载新的数据,而不是一次性加载所有数据,减少初始加载时间,提高页面性能。
  3. 实时更新页面内容:在一些社交平台或实时监控系统中,当有新消息或数据更新时,利用 Ajax 异步请求实时获取最新信息并更新页面相应部分,让用户能够第一时间了解到最新动态。

Ajax 异步请求的实现方式

  1. 原生 JavaScript 实现:虽然这种方式提供了最大的灵活性,但需要编写大量复杂的代码来处理请求、响应和状态管理,对于初学者来说难度较大,开发效率较低。
  2. 使用第三方库(如 jQuery、Axios 等):这些库对原生 JavaScript 进行了封装,简化了 Ajax 请求的操作。其中,jQuery 是一个广泛使用的 JavaScript 库,它提供了简洁的语法来发送 Ajax 请求,与 Vue 等前端框架结合使用时,能够更加高效地构建动态 Web 应用。

服务器响应的数据类型

  1. 文本类型:这是最常见的一种数据类型,包含基本数据类型的值和字符串类型的值。例如,服务器返回一个简单的提示信息 “操作成功” 或一个数字 “10” 等。
  2. XML 格式类型:曾经较为流行,但如今使用相对较少。XML 格式的数据结构较为复杂,可读性不如 JSON,但在某些特定场景下仍有应用。例如,人工智能领域中的一些数据交换可能会使用 XML 格式。
  3. JSON 格式类型:JSON(JavaScript Object Notation)是一种简洁、轻巧的数据格式,由于其易于阅读和处理的特性,在现代 Web 开发中得到了广泛应用。它基于 JavaScript 的语法,能够方便地在 JavaScript 中进行解析和操作。

JSON 数据格式详解

JSON 的规则简单而清晰。它由对象和数组组成,对象是 “名称 / 值” 对的无序集合,用大括号 “{}” 括起来,每个 “名称” 后跟一个冒号 “:”,“名称 / 值” 对之间用逗号 “,” 分隔。例如,{"name": "张三", "age": 18} 表示一个包含姓名和年龄的 JSON 对象。数组则是用方括号 “[]” 括起来的一组数据,可以包含多个 JSON 对象或其他数据类型。如 [{"name": "张三", "age": 18}, {"name": "李四", "age": 20}] 表示一个包含两个 JSON 对象的数组。JSON 数据中的元素值可以是字符串、数字、对象、数组、布尔值(true 或 false)以及 null。在 JavaScript 中,可以通过对象名。属性名的方式方便地访问 JSON 对象中的数据。

综合案例:使用 Ajax 请求展示用户数据

  1. 在 JSP 页面中,首先引入 jQuery 库,这是实现 Ajax 请求的关键。然后,在页面加载完成时(通过 onload 事件),调用一个 JavaScript 函数,如 loadUser。
  2. 在 loadUser 函数中,使用 jQuery 的 $.get 方法发送一个 GET 请求到服务器端的 UserServlet。当服务器返回数据时,回调函数会被触发,该函数负责处理返回的结果。
  3. 在回调函数中,获取页面上用于显示用户数据的表格元素,通过遍历服务器返回的 JSON 数据(假设为用户列表),动态生成表格的每一行内容,包括用户的编号、账号、密码、姓名以及操作按钮等。最后,将生成的表格内容设置为表格元素的 innerHTML,实现页面的动态更新,将用户数据以表格形式展示在页面上。
  4. 在服务器端的 UserServlet 中,从数据库中获取所有用户数据,将其转换为 JSON 格式(使用相关的 JSON 转换库,如阿里巴巴的 FastJSON),然后将 JSON 数据写入响应输出流,返回给客户端。

通过过滤器和 Ajax 异步请求的巧妙运用,我们能够构建出更加高效、安全且用户友好的 Java Web 应用。过滤器保障了资源的安全访问和预处理,而 Ajax 异步请求则赋予了页面灵动的交互性,让用户在 Web 应用中的体验更加流畅和自然。

相关文章:

Java Web 开发学习中:过滤器与 Ajax 异步请求

一、过滤器 Filter: 过滤器的概念与用途 在一个庞大的 Web 应用中,有许多资源需要受到保护或进行特定的预处理。过滤器就像是一位智能的守卫,站在资源的入口处,根据预先设定的规则,决定哪些请求可以顺利访问资源&…...

数据结构 (36)各种排序方法的综合比较

一、常见排序方法分类 插入排序类 直接插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。希尔排序:是插入排序的一种改进版本,先将整个待排序的记录序列分割成为…...

使用vue搭建不需要打包的前端项目

需求详情:用户不要项目进行打包,开发还是选用vue2,且需要便于上手 项目目录 >api 存放api.js,主要是前端用到的接口 >css >>>fonts 存放页面需要的字体文件 >>>1.css 存放所有css文件 >data 存放echarts…...

发布订阅者=>fiber=>虚拟dom

文章目录 vue的响应式原理-发布订阅者模式vue3 响应式原理及优化fiberfiber 与 虚拟dom vue的响应式原理-发布订阅者模式 Vue响应式原理概述 Vue.js的响应式原理是其核心特性之一。它使得当数据发生变化时,与之绑定的DOM元素能够自动更新。其主要基于数据劫持和发布…...

Python-计算机中的码制以及基础运算符(用于分析内存)

记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化 python基础2-码制 计算机中的码制原码(True Form)反码(Ones Complement&#xff09…...

yum 离线软件安装

适用范围 支持YUM软件管理的操作系统: 银河麒麟 服务器操作系统V10统信服务器操作系统V20CentOS 系列 准备 准备一台可以连接互联网并且与离线安装的操作系统相同版本的操作系统,包括指令集类型相同。 安装下载工具 查询是否已经安装下载工具 yum…...

【C语言】17. 数据在内存中的存储

文章目录 一、整数在内存中的存储二、⼤⼩端字节序和字节序判断1、什么是⼤⼩端?2、为什么有⼤⼩端?3、练习1)练习12)练习23)练习34)练习45) 练习56)练习6 三、浮点数在内存中的存储1、浮点数的…...

二叉树概述

目录 一、二叉树的基本结构 二、二叉树的遍历 1.前序 2.中序 3.后序 4.层序遍历 三.计算二叉树的相关参数 1.计算节点总个数 2.计算叶子节点的个数 3.计算树的高度 4.计算第k层的子树个数 5.查找树中val为x的节点 四.刷题 1.单值二叉树 2.检查两棵树是否相同 3.一…...

【开源免费】基于SpringBoot+Vue.JS图书进销存管理系统(JAVA毕业设计)

博主说明:本文项目编号 T 082 ,文末自助获取源码 \color{red}{T082,文末自助获取源码} T082,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

惠普M126a连接共享打印机故障0x000006ba,系统不支持请求的命令,print spooler重复停止

故障说明:直连惠普M126a打印机正常打印,通过共享连接的报故障。 目前已知有三种故障: 1、0x000006ba报错2、系统不支持请求的命令3、print spooler重复停止(或者,print spooler没有停止依然报故障) 解决方…...

Chainlit集成LlamaIndex实现一个通过用户聊天对话的酒店预定系统

Agent 简介 “Agent”是一个自动推理和决策引擎。它接受用户输入/查询,并为执行该查询做出内部决策,以便返回正确的结果。关键的代理组件可以包括但不限于: 把复杂的问题分解成小问题选择要使用的外部工具+调用工具的参数计划一系列的任务将以前完成的任务存储在内存模块中…...

计算机网络之网络层超详细讲解

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 …...

代码随想录算法训练营day51|动态规划part13

回文子串 回文子串这里的递推式不太一样,dp[i] 和 dp[i-1] ,dp[i 1] 看上去都没啥关系。所以要回归到回文的定义 而我们发现,判断一个子字符串(字符串下标范围[i,j])是否回文,依赖于,子字符串…...

ESP8266自制桌宠机器狗

看到别人的桌宠机器狗有没有想要拥有一台的冲动,其实我们可以使用少量的资金自制一台机器狗 1 硬件 esp8266芯片 舵机 超声波传感器 2 接线 ESP8266配件...

【力扣】409.最长回文串

问题描述 思路解析 因为同时包含大小写字母,直接创建个ASCII表大小的桶来标记又因为是要回文子串,所以偶数个数的一定可以那么同时,对于出现奇数次数的,我没需要他们的次数-1,变为偶数,并且可以标记出现过…...

git 拉取代码时报错 gitignore Please move or remove them before you merge.

git 拉取代码时报错, The following untracked working tree files would be overwritten by merge: .gitignore Please move or remove them before you merge. 当你在使用 Git 进行代码拉取(通常是执行 git pull 或 git merge 命令)时遇到这…...

19,[极客大挑战 2019]PHP1

这个好玩 看到备份网站字眼&#xff0c;用dirsearch扫描 在kali里打开 爆破出一个www.zip文件 访问一下 解压后是这个页面 class.php <?php include flag.php; error_reporting(0); class Name{ private $username nonono; private $password yesyes; publi…...

MQTT消息服务器mosquitto介绍及说明

Mosquitto是一个开源的消息代理软件&#xff0c;支持MQTT协议&#xff08;消息队列遥测传输协议&#xff09;。MQTT是一种轻量级的发布/订阅消息传输协议&#xff0c;专为低带宽、不可靠网络环境下的物联网设备通信而设计。以下是关于Mosquitto服务器的一些介绍和说明&#xff…...

uniapp结合movable-area与movable-view实现拖拽功能

前言 因为公司业务开发需要拖拽功能。 ps&#xff1a;该功能只能针对高度一致的&#xff0c;如果高度不一致需要另外二开 演示 开始 <template><view style"height: 100%;"><movable-area :style"{width: 100%, height: allHeight px}"…...

十九(GIT2)、token、黑马就业数据平台(页面访问控制(token)、首页统计数据、登录状态失效)、axios请求及响应拦截器、Git远程仓库

1. JWT介绍 JSON Web Token 是目前最为流行的跨域认证解决方案&#xff0c;本质就是一个包含信息的字符串。 如何获取&#xff1a;在使用 JWT 身份验证中&#xff0c;当用户使用其凭据成功登录时&#xff0c;将返回 JSON Web Token&#xff08;令牌&#xff09;。 作用&#xf…...

文生图模型开源之光!ComfyUI - AuraFlow本地部署教程

一、模型介绍 AuraFlow 是唯一一个真正开源的文生图模型&#xff0c;由Fal团队开源&#xff0c;其代码和权重都放在了 FOSS 许可证下。基于 6.8B 参数优化模型架构&#xff0c;采用最大更新参数化技术&#xff0c;还重新标注数据集提升指令遵循质量。在物体空间和色彩上有优势…...

spring boot之@Import注解的应用

我们知道spring boot会通过ComponentScan定义包扫描路径进行业务定义的bean的加载&#xff0c;但是对于很多不在此包路径下定义的bean怎么办呢&#xff1f;比如其他jar包中定义的。这时候import就发挥作用了&#xff0c;通过它也可以实现bean的定义。具体是怎么做的呢&#xff…...

【记录】用JUnit 4的@Test注解时报错java.lang.NullPointerException的原因与解决方法

项目场景&#xff1a; 在练习黑马点评的逻辑过期解决缓存击穿时&#xff0c;编写了一个预热缓存数据的单元测试 SpringBootTest public class HmDianPingApplicationTests {Resourceprivate ShopServiceImpl shopService;Testpublic void testSaveShop() throws InterruptedE…...

Spring Boot 自动化脚本-多线程批量压缩图片

Spring Boot 自动化脚本-多线程批量压缩图片 支持多线程支持多路径配置支持断点续压支持压缩后文件层级路径不变脚本一键启动&#xff0c;支持本地 main 调用或远程 POST 接口调用 背景&#xff1a;在进行数据迁移时&#xff0c;发现附件文件夹过于庞大&#xff0c;且大都为图…...

依托 Spring Boot框架,精铸高扩展性招聘信息管控系统

1 绪 论 1.1 课题背景与意义 在Internet高速发展的今天&#xff0c;计算机的应用几乎完全覆盖我们生活的各个领域&#xff0c;互联网在经济&#xff0c;生活等方面有着举足轻重的地位&#xff0c;成为人们资源共享&#xff0c;信息快速传递的重要渠道。在中国&#xff0c;网上管…...

【前端】理解 JavaScript 对象属性访问的复杂性

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;理论基础&#xff1a;JavaScript 对象属性的访问模式1. 点符号访问&#xff08;Dot Notation&#xff09;2. 方括号访问&#xff08;Bracket Notation&#xff09;点符号…...

Django异步视图adrf解决办法

提问 在Django编写异步视图的时候会出现 AssertionError: Expected a Response, HttpResponse or HttpStreamingResponse to be returned from the view 或者 TypeError: sync_to_async can only be applied to sync functions. 诸如此类的错误的时候一般发生在异步视图中…...

【一文了解】C#基础-接口

目录 1. 定义 2. 接口的特点与规则 3. 接口的实现 3.1单接口实现 3.2多接口实现 4. 接口的作用和用途 1)扩展行为 2)规范行为 3)降低耦合 5. 接口与继承的比较 1)继承 2)接口 6. 接口与抽象类的比较 1)IComparable(比较器&#xff0c;常用) 2)IComparer(比较器)…...

活着就好20241210

亲爱的朋友们&#xff0c;大家早上好&#xff01;&#x1f31e; 今天是10号&#xff0c;星期二&#xff0c;2024年12月的第十天&#xff0c;同时也是第50周的开始&#xff0c;农历甲辰[龙]年十一月初六日。在这晨光熹微的美好时刻&#xff0c;愿那温暖而明媚的阳光轻轻拂过你的…...

多表设计 - 一对一多对多

一.一对一关系概述&#xff1a; 例如&#xff1a;一位用户只能有一张身份证&#xff0c;一张身份证也只能对应一位用户 如果用户基本信息查询频率比用户身份信息查询频率高&#xff0c;为了提高效率&#xff0c;可拆分为两张表&#xff1a; 此时如何体现一对一的关系呢&#xf…...