【Java】Ajax 技术详解

文章目录

    • 1. Filter 过滤器
      • 1.1 Filter 概述
      • 1.2 Filter 快速入门
        • 开发步骤:
      • 1.3 Filter 执行流程
      • 1.4 Filter 拦截路径配置
      • 1.5 过滤器链
    • 2. Listener 监听器
      • 2.1 Listener 概述
      • 2.2 ServletContextListener
    • 3. Ajax 技术
      • 3.1 Ajax 概述
      • 3.2 Ajax 快速入门
        • 服务端实现:
        • 客户端实现:
    • 4. Axios 库
      • 4.1 基本使用
      • 4.2 请求方法别名
    • 5. JSON 数据格式
      • 5.1 JSON 概述
      • 5.2 JSON 基础语法
      • 5.3 JSON 与 Java 对象转换
    • 总结

1. Filter 过滤器

1.1 Filter 概述

Filter 是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。过滤器的主要作用是拦截请求,实现特殊功能。典型的应用场景包括:

  • 权限控制:验证用户是否登录
  • 统一编码处理:设置请求和响应编码
  • 敏感字符处理:过滤敏感词汇

1.2 Filter 快速入门

开发步骤:
  1. 定义类实现 Filter 接口
  2. 配置拦截路径(使用 @WebFilter 注解)
  3. 实现 doFilter 方法
@WebFilter("/*")
public class FilterDemo implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("Filter执行前");// 放行请求chain.doFilter(request, response);System.out.println("Filter执行后");}
}

1.3 Filter 执行流程

Filter 执行流程如下:

  1. 执行 Filter 的放行前逻辑
  2. 执行 chain.doFilter() 放行请求
  3. 访问目标资源
  4. 执行 Filter 的放行后逻辑

1.4 Filter 拦截路径配置

配置方式示例说明
拦截具体资源/index.jsp只拦截特定资源
目录拦截/user/*拦截指定目录下所有资源
后缀名拦截*.jsp拦截指定后缀名的资源
拦截所有/*拦截所有资源

1.5 过滤器链

当多个过滤器拦截同一资源时,形成过滤器链。执行顺序:

  1. Filter1 放行前逻辑
  2. Filter1 放行
  3. Filter2 放行前逻辑
  4. Filter2 放行
  5. 访问资源
  6. Filter2 放行后逻辑
  7. Filter1 放行后逻辑

2. Listener 监听器

2.1 Listener 概述

监听器用于监听 application、session、request 三个对象的创建、销毁或属性变化。

2.2 ServletContextListener

最常用的监听器,监听 ServletContext 对象的创建和销毁:

@WebListener
public class ContextLoaderListener implements Servlet

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

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

相关文章

07 APP 自动化- appium+pytest+allure框架封装

文章目录 一、PO二、代码简单实现项目框架预览:base_page.pydir_config.pyget_data.pylogger.pystart_session.pyconfig.yamlkey_code.yamllaunch_page_loc.pylogin_page_loc.pylaunch_page.pylogin_page.pytest_login.pypytest.inirun.py APP 自动化代码总和 一、P…

用户体验升级:表单失焦调用接口验证,错误信息即时可视化

现代前端应用中,表单交互是用户体验的重要组成部分。而表单验证作为其中的核心环节,不仅需要前端的即时反馈,还需要与后端接口联动进行数据合法性校验。本文将详细介绍如何在Vue3中实现表单输入与接口验证的无缝联动,并优雅地展示…

Vue 插槽(Slot)用法详解

插槽(Slot)是Vue中一种强大的内容分发机制,它允许你在组件中定义可替换的内容区域,为组件提供了更高的灵活性和可复用性。本文将全面介绍Vue插槽的各种用法。 1. 基本插槽 基本插槽是最简单的插槽形式,它允许父组件向子组件插入内容。 子组…

C++ 标准模板库(STL)详解文档

C 标准模板库(STL)详解文档 1 前言2 常用容器2.1 内容总览2.2 向量 vector2.2.1 概述2.2.2 常用方法2.2.3 适用场景2.2.4 注意事项 2.3 栈 stack2.3.1 概述2.3.2 常用方法2.3.3 注意事项 2.4 队列 queue2.4.1 概述2.4.2 常用方法2.4.3 注意事项 2.5 优先…

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…

Redis(02)Win系统如何将Redis配置为开机自启的服务

一、引言 Redis 是一款高性能的键值对存储数据库,在众多项目中被广泛应用。在 Windows 环境下,为了让 Redis 能更稳定、便捷地运行,将其设置为系统服务并实现自动启动是很有必要的。这样一来,系统开机时 Redis 可自动加载&#xf…

apex新版貌似移除了amp从源码安装方式装的话会在from apex import amp时报错

问题: 安装完apex结果 from apex import amp会报错 解决方法: # apex git clone https://github.com/NVIDIA/apex cd apex # https://github.com/modelscope/ms-swift/issues/4176 git checkout e13873debc4699d39c6861074b9a3b2a02327f92 pip insta…

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…

【AI学习】三、AI算法中的向量

在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…

leetcode题解450:删除BST中的结点!调整二叉树的结构最难!

一、题目内容 题目要求删除二叉搜索树(BST)中值为 key 的节点,并保证删除后二叉搜索树的性质不变。返回删除节点后的二叉搜索树的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如…

让 Kubernetes (K8s) 集群 使用 GPU

要让 Kubernetes (K8s) 集群 使用 GPU,并且节点是 KVM 虚拟化 出来的,需要确保以下几点: KVM 虚拟机透传 GPU(PCIe Passthrough) 宿主机和 K8s 节点正确安装 NVIDIA 驱动 K8s 集群安装 nvidia-device-plugin Pod 配…

Android第十七次面试总结(Java数据结构)

一、Java 集合体系核心架构与高频考点 1. 集合体系架构图 Java集合框架 ├─ Collection(单列集合) │ ├─ List(有序、可重复) │ │ ├─ ArrayList(动态数组,随机访问快) │ │ ├─…

Linux 删除登录痕迹

本文介绍相对彻底的删除 Linux 的登录痕迹,操作前确保已经可以拿到能提权ROOT令牌的系统管理权限。 当然,仍可以先查阅以下文章。 Linux 删除用户终端命令行操作记录-CSDN博客 1、清楚当前会话记录 history -c # 清空当前终端内存中的历史命令 2、永…

Lighttpd 配置选项介绍

根据提供的 Lighttpd 配置选项文档(https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ConfigurationOptions ),以下是所有配置选项的详细解释、作用及适用场景,按模块分组说明: 以下是对 Lighttpd 配置选项 …

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…

Python 训练营打卡 Day 40-训练和测试的规范写法

一.单通道图片的规范写法 以之前的MNIST数据集为例 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision import datasets, transforms # t…

Java 枚举(Enum)的使用说明

在 Java 中,枚举(Enum)是一种特殊的数据类型,用于定义一组固定的命名常量。它比传统的常量(如 public static final)更安全、更灵活,且支持面向对象特性。以下是枚举的详细用法: 1. …

Docker部署Nginx-UI

使用如下命令拉取运行nginx-ui软件 docker run -dit \ --namenginx-ui \ --restartalways \ -e TZAsia/Shanghai \ -v /mnt/user/appdata/nginx:/etc/nginx \ -v /mnt/user/appdata/nginx-ui:/etc/nginx-ui \ -v /var/run/docker.sock:/var/run/docker.sock \ -…

OkHttp 3.0源码解析:从设计理念到核心实现

本文通过深入分析OkHttp 3.0源码,揭示其高效HTTP客户端的实现奥秘,包含核心设计理念、关键组件解析、完整工作流程及实用技巧。 一、引言:为什么选择OkHttp? 在Android和Java生态中,OkHttp已成为HTTP客户端的标准选择…