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

Filter、Listener、AJAX

 Filter

        概念:Filter 表示过滤器,是JavaWeb三大组件(Servlet、Filter、 Listener)之一。

        过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

        过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等...

快速入门

  1. 定义类,实现Filter接口, 并重写其所有方法
  2. 配置Filter拦截资源的路径:在类上定义@WebFilter注解
  3. 在doFilter方法中输出一句话,并放行
WebFilter("/*") // "/*"表示拦截所有资源路径
ublic class StudyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("file");System.out.println("file");//放行(放行前一般会对request进行处理)filterChain.doFilter(servletRequest,servletResponse);//放行后一般会对response数据进行处理}@Overridepublic void destroy() {}

执行流程

        放行后访问对应资源,资源访问完成后,还会回到Filter中继续执行放行后的逻辑 

 

使用细节

拦截路径配置

        Filter可以根据需求,配置不同的拦截资源路径

拦截具体的资源:/index.jsp  只有访问index.jsp时才会被拦截。

目录拦截:/user:/*  访问/user下的所有资源,都会被拦截

后缀名拦截:*.jsp  访问后缀名为jsp的资源,都会被拦截

拦截所有:/*  访问所有资源,都会被拦截

过滤器链

        一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链

        注解配置的Filter,优先级按照过滤器类名(字符串)的自然排序

Listener

        概念:Listener 表示监听器,是JavaWeb三大组件(Servlet、Filter、 Listener)之一 。

        监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件

Listener分类: JavaWeb中提供 了8个监听器

监听器分类监听器名称作用
ServletContext监听ServletContextListener用于对ServletContext对象进行监听(创建、销毁)
ServletContextAttributeListener对ServletContext对象中属性的监听(增删改属性)
Session监听HttpSessionListener对Session对象的整体状态的监听(创建、销毁)
HttpSessionAttributeListener对Session对象中的属性监听(增删改属性)
HttpSessionBindingListener监听对象于Session的绑定和解除
HttpSessionActivationListener对Session数据的钝化和活化的监听
Request监听ServletRequestListener对Request对象进行监听(创建、销毁)
ServletRequestAttributeListener对Request对象中属性的监听(增删改属性)

ServletContextListener使用

  1. 定义类,实现ServletContextListener接口
  2. 在类上添加@WebListener注解
@WebListener
public class StudyServletContextListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//加载资源}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {//释放资源}
}

AJAX

概述 

         概念:AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML

AJAX作用: 

        1.与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据(使用了AJAX和服务器进行通信,就可以使用HTML+ AJAX来替换JSP页面了 )

         2.异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等...

*同步和异步

快速入门

1.编写AjaxServlet,并使用response输出字符串

public class StudyAjax extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//相应数据resp.getWriter().write("hello");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req, resp);}
}

2.创建XMLHttpRequest对象:用于和服务器交换数据

var xhttp;
if (window.XMLHttpRequest){//新版浏览器xhttp = new XMLHttpRequest();
}else {//旧版浏览器xhttp = new ActiveXObject("Microsoft.XMLHTTP")
}

3.向服务器发送请求

方法描述
open(methodurlasync)

规定请求的类型

        method:请求的类型:GET 还是 POST

        url:服务器(文件)位置

        async:true(异步)或 false(同步),默认为true

send()向服务器发送请求(用于 GET)
send(string)向服务器发送请求(用于 POST)
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();

4.获取服务器响应数据

xhttp.onreadystatechange = function() {if (this.readyState == 4 && this.status == 200) {alert(this.responseText);}
};
属性描述
onreadystatechange定义了当 readyState 属性发生改变时所调用的函数。
readyState

保存了 XMLHttpRequest 的状态。

        0: 请求未初始化

        1: 服务器连接已建立

        2: 请求已接收

        3: 正在处理请求

        4: 请求已完成且响应已就绪

status

200: "OK"

403: "Forbidden"

404: "Page not found"

statusText返回状态文本(例如 "OK" 或 "Not Found")

Axios异步框架

        Axios对原生的AJAX进行封装,简化书写

        官网:https://www.axios-http.cn

快速入门

        1.引入axios的js文件

<script src="js/axios-0.18.0.js"></script> //该标签不可写代码,代码要写到其它标签里

        2.使用axios发送请求,并获取响应结果

//get请求方式
axios({method:"get",url:"http://localhost:8080/studyServlet/Ajax?username=glaty"
})then(function (resp) {alert(resp.data);
})//post请求方式
axios({method:"get",url:"http://localhost:8080/studyServlet/Ajax",data:"username=glaty"
})then(function (resp) {alert(resp.data);
})

Axios请求方式别名

        为了方便起见,Axios 已经为所有支持的请求方法提供了别名。

方法名作用
get(url)发起GET方式请求
post(url,请求参数)发起POST方式请求

//发送get请求
axios.get("url")
    .then(function (resp){
        alert(resp.data);
});

//发送post请求
axios.post("url","参数")
    .then(function (resp){
        alert(resp.data);
});

JSON

        概念:JavaScript Object Notation。JavaScript 对象表示法

        由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输

基础语法

        value的数据类型为:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true 或false)

数组(在方括号中)

对象(在花括号中)

null

        定义:

var变量名= {"key1": value1,

                    "key2": value2,

                    ...

                    };

var json = {"name": "zhangsan","age": 23,"addr": ["北京","上海", "西安"]
};

        获取数据:

变量名key

json.name

JSON数据和Java对象转换

        请求数据:JSON字符串转为Java对象

        响应数据:Java对象转为JSON字符串

        Fastjson是阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库,是目前Java语言中最快的JSON库,可以实现Java对象和JSON字符串的相互转换。

使用:

        1.导入坐标

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version>
</dependency>

        2.Java对象转JSON

Thing thing = new Thing();
thing.setId(132);
thing.setName("name");String jsonString = JSON.toJSONString(thing);

        3.JSON字符串转Java对象

Thing thing1 = JSON.parseObject("{\"id\":132,\"name\":\"name\"}", Thing.class);

相关文章:

Filter、Listener、AJAX

Filter 概念&#xff1a;Filter 表示过滤器&#xff0c;是JavaWeb三大组件(Servlet、Filter、 Listener)之一。 过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。 过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;权限控制、统一编码处理、敏感…...

FastAPI+React全栈开发04 FastAPI概述

Chapter01 Web Development and the FARM Stack 04 Introducing FastAPI FastAPIReact全栈开发04 FastAPI概述 Now we will look at a brief introducion to the Python REST-API framework of choice - FastAPI. Additionally, we will go over a high-level overview of t…...

基于单片机的二维码LCD显示控制设计

**单片机设计介绍&#xff0c;基于单片机的二维码LCD显示控制设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的二维码LCD显示控制设计是一个集硬件、软件与通信于一体的综合性项目。此设计的主要目标是实现单片机…...

Ubuntu20.04下PCL安装,查看,卸载等操作

Ubuntu20.04下PCL安装&#xff0c;查看&#xff0c;卸载等操作 项目来源 https://github.com/PointCloudLibrary/pclhttps://pointclouds.org/documentation/modules.htmlhttps://pcl.readthedocs.io/projects/tutorials/en/master/ 点云学习&#xff1a; https://github.c…...

Android TargetSdkVersion 30 安装失败 resources.arsc 需要对齐且不压缩。

公司项目&#xff0c;之前targetSDKVersion一直是29&#xff0c;近期小米平台上架强制要求升到30&#xff0c;但是这个版本在android12上安装失败&#xff0c;我用adb命令安装&#xff0c;报错如下图 adb: failed to install c: Program Files (x86)(0A_knight\MorkSpace \Home…...

c++20中的jthread再谈

一、介绍 在前面的C20新功能中&#xff0c;简单的介绍过相关的std::jthread的应用。当时觉得它虽然比std::thread方便一些&#xff0c;但也没有多大的优势。可在后面的不断的学习中&#xff0c;发现std::jthread的使用上确实有优秀之处&#xff0c;相对于传统的线程编程&#…...

Fastgpt 无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题这里)

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&#xff01; FastGPT是非常实用并且相当厉害的个人知识库AI项目&#xff0c;项目是非常…...

Rust 实战练习 - 7. FFI, 库, ABI, libc

FFI FFI&#xff08;Foreign Function Interface&#xff09;是这样一种机制&#xff1a;用一种编程语言写的程序能调用另一种编程语言写的函数&#xff08;routines&#xff09;。 调用约定&#xff0c;类型表示和名称修饰这三者的统称&#xff0c;即是众所周知的应用二进制…...

vue实现把Ox格式颜色值转换成rgb渐变颜色值(开箱即用)

图示&#xff1a; 核心代码&#xff1a; //将0x格式的颜色转换为Hex格式&#xff0c;并计算插值返回rgb颜色 Vue.prototype.$convertToHex function (colorCode1, colorCode2, amount) {// 确保输入是字符串&#xff0c;并检查是否以0x开头let newCode1 let newCode2 if (t…...

Unity 窗口化设置

在Unity中要实现窗口化&#xff0c;具体设置如下&#xff1a; 在编辑器中&#xff0c;选择File -> Build Settings。在Player Settings中&#xff0c;找到Resolution and Presentation部分。取消勾选"Fullscreen Mode"&#xff0c;并选择"Windowed"。设…...

Android14之深入理解sp模板类(二百零二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

.NET core 5.0 及以上的Windows Service开发

首先&#xff0c;一定要和.NET Framework区分开&#xff0c; 详细请看微软的2023年的最新官方文档 Create Windows Service using BackgroundService - .NET | Microsoft Learn Create a Windows Service installer - .NET | Microsoft Learn 同样微软的官方微博给出了开发…...

Nginx配置文件解释

Nginx可以作为静态页面的web服务器&#xff0c;同时还支持CGI协议的动态语言&#xff0c;比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合完成。Nginx专为性能优化而开发&#xff0c;性能是其最重要的考量,实现上非常注重效率 &#xff0c;能经受高负载的考验,…...

R语言赋值符号<-、=、->、<<-、->>的使用与区别

R语言的赋值符号有&#xff1c;-、、-&#xff1e;、&#xff1c;&#xff1c;-、-&#xff1e;&#xff1e;六种&#xff0c;它们的使用与区别如下: <-’&#xff1a;最常用的赋值符号。它将右侧表达式的值赋给左侧的变量&#xff0c;像一个向左的箭头。例如&#xff0c;x …...

ffmpeg重点之时间戳,PTS、DTS、time_base

PTS和DTS和时间基time_base 首先我们知道PTS是一帧音频或视频显示的时间&#xff0c;DTS是解码时间戳 既然是时间&#xff0c;PST和DTS的单位是什么呢?秒还是毫秒&#xff0c;抑或是纳秒&#xff1f; 先说结论—都不是 先引入FFmpeg中时间基的概念&#xff0c;也就是time_bas…...

OpenGL 实现“人像背景虚化“效果

手机上的人像模式,也被人们称作“背景虚化”或 ”双摄虚化“ 模式,也称为 Bokeh 模式,能够在保持画面中指定的人或物体清晰的同时,将其他的背景模糊掉。突出画面的主体部分,主观上美感更强烈。 人像模式的一般实现原理是,利用双摄系统获取景深信息,并通过深度传感器和图…...

基于springboot实现校园周边美食探索及分享平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现园周边美食探索及分享平台系统演示 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0c;互联网日益成为提供信息的最佳俱渠道和逐步走向传统的流通领域&#xff0c;传统的…...

AUTOSAR关于内存栈的分层及描述

首先关于关于内存栈的分层&#xff1a;如下图所示&#xff0c;Nvm靠近RTE的&#xff1b;MemIf居中&#xff0c;EA和FEE被包含其中。 其次关于这三层的缩写&#xff1a;可以看到EEPROM的模拟和EEPROM的抽象层。 我们可以看到 大概的数据流&#xff1a; 和大致的结构分层作用&am…...

windows powershell连接linux 上传下载文件

连接&#xff1a;输入下面命令&#xff0c;回车 输入密码进入linux系统 ssh root192.168.188.128退出linux logoutwindow上传文件到Linux服务器 把桌面的123.txt 上传到linux home文件夹下 scp C:\Users\pzx\Desktop\123.txt root192.168.188.128:/homelinux下载文件到windo…...

Vue生命周期,从听说到深入理解(全面分析)

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让开发者有机会在特定阶…...

故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型是一种深度学习模型,结合了卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)的优点…...

iOS library not found for -lMBProgressHUD

0x00 前因 一开始是使用 CocoaPods 管理 MBProgressHUD&#xff0c;后来直接导入 MBProgressHUD 源码&#xff0c;就出现了这个错误&#xff1a;library not found for -lMBProgressHUD 0x01 后果 在 Xcode 工程目录中找到文件夹&#xff1a;Frameworks 看看里面是否有个红色…...

Paper Digest|基于在线聚类的自监督自蒸馏序列推荐模型

论文标题&#xff1a; Leave No One Behind: Online Self-Supervised Self-Distillation for Sequential Recommendation 作者姓名&#xff1a; 韦绍玮、吴郑伟、李欣、吴沁桐、张志强、周俊、顾立宏、顾进杰 组织单位&#xff1a; 蚂蚁集团 录用会议&#xff1a; WWW 2024 …...

【CTFshow 电子取证】套的签到题

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…...

SpringBoot集成Solr全文检索

SrpingBoot 集成 Solr 实现全文检索 一、核心路线 使用 Docker 镜像部署 Solr 8.11.3 版本服务使用 ik 分词器用于处理中文分词使用 spring-boot-starter-data-solr 实现增删改查配置用户名密码认证使用 poi 和 pdfbox 组件进行文本内容读取文章最上方有源码和 ik 分词器资源…...

厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件开发之功能原理篇

接着上一篇《厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件开发之功能结构篇》继续总结一下厨余垃圾处理设备智能软硬件统的原理。所有的软硬件系统全是自己一人独自开发&#xff0c;看法和角度难免有局限性。希望抛砖引玉&#xff0c;将该智能软硬件系统分享给更多有类…...

google浏览器网站不安全与网站的连接不安全怎么办?

使用google谷歌浏览器访问某些网站打开时google谷歌浏览器提示网站不安全,与网站的连接不安全,您之所以会看到此警告,是因为该网站不支持https造成的怎么办? 目录 1、打开谷歌google浏览器点击右上角【┇】找到设置...

基于Axios封装请求---防止接口重复请求解决方案

一、引言 前端接口防止重复请求的实现方案主要基于以下几个原因&#xff1a; 用户体验&#xff1a;重复发送请求可能导致页面长时间无响应或加载缓慢&#xff0c;从而影响用户的体验。特别是在网络不稳定或请求处理时间较长的情况下&#xff0c;这个问题尤为突出。 服务器压力…...

深入理解指针(7)函数指针变量及函数数组(文章最后放置本文所有原码)

一、函数指针变量 什么是函数指针变量呢&#xff1f; 既然是指针变量&#xff0c;那么它指向的一定是地址&#xff0c;而且我们可以通过地址来调用函数的。 函数是否有地址呢&#xff1f;地址是什么&#xff1f; 经过上面的测试可以看到函数也是有地址的&#xff0c;而且其地…...

office办公技能|word中的常见使用问题解决方案2.0

一、设置多级列表将表注从0开始&#xff0c;设置为从1开始 问题描述&#xff1a;word中插入题注&#xff0c;出来的是表0-1&#xff0c;不是1-1&#xff0c;怎么办&#xff1f; 写论文时&#xff0c;虽然我设置了“第一章”为一级标题&#xff0c;但是这三个字并不是自动插入的…...

wordpress 邮箱留言/品牌网

紫上给得比较奇怪&#xff0c;其实没有必要用唯一分解定理。我觉得这道题用唯一分解只是为了表示大数。 但是分解得到的幂&#xff0c;累乘的时候如果顺序很奇怪也可能溢出。其实直接边乘边除就好了。因为答案保证不会溢出&#xff0c; 设定一个精度范围&#xff0c;如果中间结…...

企业网站管理系统破解版/百度信息流是什么

城市平乱 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述南将军统领着N个部队&#xff0c;这N个部队分别驻扎在N个不同的城市。 他在用这N个部队维护着M个城市的治安&#xff0c;这M个城市分别编号从1到M。 现在&#xff0c;小工军师告诉南…...

西宁做网站的好公司/seo网站推广实例

十六. 文件查找命令find: 下面给出find命令的主要应用示例&#xff1a; /> ls -l #列出当前目录下所包含的测试文件 -rw-r--r--. 1 root root 48217 Nov 12 00:57 install.log -rw-r--r--. 1 root root 37 Nov 12 00:56 testfile.dat -rw-r--r--.…...

wordpress 4.7.4 主题/磁力搜索引擎哪个好

今天甲方通知要统计一下我们协议栈代码的行数&#xff0c;好久没有关心过这样的问题&#xff0c;上一次统计代码行数好像是好多年前的事情了&#xff0c;也忘记了用的什么工具。最开始想用NLOC&#xff0c;因为需要.NET 2.0&#xff0c;我的机器装不上。为了这个工具安装.NET 2…...

北京网站建设qq群/手机优化助手下载

2023-04-04&#xff1a;使用 Golang 和 ffmpeg-go 库实现 demuxing_decoding.c&#xff0c;轻松掌握音视频分离解码技巧。 答案2023-04-05&#xff1a; 使用github/moonfdd/ffmpeg-go库。 代码使用FFmpeg库打开一个音视频文件&#xff0c;提取其中的视频和音频流&#xff0c…...

关于吃喝玩乐的网站建设策划/申请网站怎样申请

递归问题特性 ①问题有最优子结构&#xff1a;问题存在最优解&#xff0c;且与其子问题最优解重合 ②无后效&#xff1a;前后状态值只和值本身有关&#xff0c;和问题无关。 解决思路&#xff1a; ①将原问题分解为子问题 ②确定状态 ③确定初始状态值 ④确定状态转移方程&…...