【Java从0到架构师】Filter_Listener_AJAX
Filter_Listener_AJAX
- 过滤器 - Filter
- Filter 中的生命周期方法
- Filter - dispatcherTypes
- Filter 示例
- 监听器 - Listener
- Listener 示例
- AJAX
- 原生 AJAX 示例
- jQuery AJAX 示例
- jQuery - getJSON
Java 从 0 到架构师目录:【Java从0到架构师】学习记录
过滤器 - Filter
Filter:译为 “过滤器”,用来拦截、过滤客户端的请求和服务器的响应
Filter 的使用方式有注解和 XML 两种使用方式
Filter 中的生命周期方法
Filter 中的生命周期方法:
- init
将 Filter 添加到 Web 容器中时调用,一般用来加载资源 - destroy
将 Filter 从 Web 容器中移除时调用,一般用来销毁资源
Filter - dispatcherTypes
Filter 中的 dispatcherTypes 属性:
- REQUEST:默认值,只拦截客户端直接发送的请求
- FORWARD:只拦截转发的请求
Filter 示例
使用注解的方式:Gitee 代码
// 设置多个属性必须写成 xx=xx 形式
// @WebFilter(value = "/*", dispatcherTypes = DispatcherType.REQUEST)
// 只设置拦截路径可以不写成 xx=xx 形式
@WebFilter("/*")
public class LoginFilter implements Filter {public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {// code...}/*** 项目部署到Web容器时调用(当Filter被加载到Web容器中)*/public void init(FilterConfig config) throws ServletException {// 适合做一些资源的一次性加载、初始化}/*** 当项目从Web容器中取消部署时调用(当Filter从Web容器中移除时调用)*/public void destroy() {// 适合做一些资源的回收操作}
}
使用 xml 的形式:Gitee 代码
<!-- 配置Filter -->
<filter><filter-name>LoginFilter</filter-name><filter-class>com.mj.xr.filter.LoginFilter</filter-class>
</filter><filter-mapping><filter-name>LoginFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
监听器 - Listener
Listener:监听器,比较常用的是 ServletContextListener,用来监听 ServletContext 的创建和销毁
- contextInitialized:ServletContext 创建的时候调用
- contextDestroyed:ServletContext 销毁的时候调用
Listener 使用方式有注解和 XML 两种使用方式
使用 xml 的形式:
<!-- 配置Listener -->
<listener><listener-class>com.mj.xr.listener.ContextListener</listener-class>
</listener>
Listener 示例
使用注解的形式:Gitee 代码
@WebListener()
public class ContextListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {// 在项目启动(部署)的时候做一些一次性的操作(资源加载)}@Overridepublic void contextDestroyed(ServletContextEvent sce) {// 回收资源}
}
使用 xml 的形式:Gitee 代码
<!-- 配置Listener -->
<listener><listener-class>com.mj.xr.listener.ContextListener</listener-class>
</listener>
AJAX
客户端(浏览器)向服务器提交请求的方式:
- 在地址栏输入 URL,敲回车
- 提交表单(form)
- 相当于第 1 种:
window.location.href = URL
以上 3 种方式的特点:
- 都会修改浏览器的地址
- 都是同步请求
- 服务器返回的数据会直接覆盖之前的整个网页
同步请求:不能局部更新,只能更新整个页面
异步请求:可以局部更新
AJAX 同步请求:发送请求后,会等到服务器响应以后,再执行后续的操作;如果服务器花费较长时间才响应,会影响后续操作
AJAX 异步请求:不用等到服务器响应前端的请求以后再进行后续操作;服务器的响应时间对后续操作没有影响
AJAX 是 Asynchronous JavaScript and XML的简写
- 它能够以异步的方式向服务器提交请求
- 它能够在不更新整个页面的前提下维护数据
- 它的出现促进了前后端的分离、大大提高了前端工程师的工作地位
虽然 AJAX 的名称中包含了 XML,但是也可以使用 JSON 数据格式,也支持文件上传、文件下载等
AJAX 的常见使用方式:
- JavaScript 原生 API:https://zh.javascript.info/xmlhttprequest
- jQuery:https://jquery.cuishifeng.cn/jQuery.Ajax.html
原生 AJAX 示例
原生 - GET:
// 创建XMLHttpRequest对象
const xhr = new XMLHttpRequest()// 配置请求方法和URL(第3个参数true代表异步,false代表同步,默认true)
xhr.open('GET', 'http://localhost:8080/tc/test?name=mj')// 服务器返回的数据格式
xhr.responseType = 'json'// 发送请求
xhr.send()// 监听响应
xhr.onload = function() {if (xhr.status !== 200) return// 打印服务器返回的数据console.log(xhr.response)
}
原生 - POST:
// 创建XMLHttpRequest对象
const xhr = new XMLHttpRequest()// 配置请求方法和URL(第3个参数true代表异步,false代表同步,默认true)
xhr.open('GET', 'http://localhost:8080/tc/test')// 服务器返回的数据格式
xhr.responseType = 'json'// 请求头(以表单形式提交)
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')// 发送请求(如果是POST,需要传递请求体)
xhr.send('name=mj')
// 发送请求(以表单-文件上传的形式)
const body = new FormData()
body.append('name', 'mj')
xhr.send(body)
jQuery AJAX 示例
jQuery 使用 AJAX:
$.ajax({method: 'GET',url: 'http://localhost:8080/tc/test',data: {name: 'mj'},dataType: 'json',success: function(data) {console.log(data)}
})
jQuery 使用 AJAX - GET:
$.get('http://localhost:8080/tc/test', {name: 'mj'}, function(data) {console.log(data)
}, 'json')
jQuery 使用 AJAX - POST:
$.post('http://localhost:8080/tc/test', {name: 'mj'}, function(data) {console.log(data)
}, 'json')
jQuery - getJSON
$.getJSON('http://localhost:8080/tc/test', {name: 'mj'}, function(data) {console.log(data)
})
【Java从0到架构师】Filter_Listener_AJAX相关推荐
- 【Java从0到架构师(1),Java中高级面试题总结(全面)
JSP 九大内置对象 MySQL 基础 + 多表查询 [Java从0到架构师]MySQL 基础 MySQL MySQL 的使用步骤 数据库的内部存储细节 GUI 工具 SQL 语句 DDL 语句 DD ...
- 【Java从0到架构师】SpringCloud - Sleuth、Zipkin、Config
SpringCloud 链路追踪组件 Sleuth Zipkin 分布式配置中心 - Config Git + Config 分布式配置中心 Java 从 0 到架构师目录:[Java从0到架构师]学 ...
- 【Java从0到架构师】SpringCloud - Hystrix、Zuul
SpringCloud 基本概念 熔断和降级 服务雪崩效应 服务熔断与降级 - Hystrix SpringBoot 集成 Hystrix 熔断降级服务异常报警通知 重点属性 - 熔断隔离策略.超时时 ...
- 【Java从0到架构师】SpringCloud - Eureka、Ribbon、Feign
SpringCloud 分布式.微服务相关概念 微服务框架构选型 SpringCloud 概述 服务注册与发现 - Eureka 案例项目 Eureka 自我保护机制 微服务调用方式 - Ribbon ...
- 【Java从0到架构师】RocketMQ 使用 - 集成 SpringBoot
RocketMQ 消息中间件 集成 SpringBoot 入门案例 生产消息类型 - 同步.异步.一次性 消费模式 - 集群.广播 延时消息 设置消息标签 设置消息的 Key 自定义属性设置 消息过滤 ...
- 【Java从0到架构师】RocketMQ 使用 - 发送消息、接收消息、特殊消息
RocketMQ 消息中间件 入门案例 NameServer 地址 发送消息 同步发送消息 异步发送消息 一次性发送消息 生产者组.消息封装 接收消息 消费方式:推式消费.拉式消费 消息方式:集群模式 ...
- 【Java从0到架构师】RocketMQ 基础 - 应用、核心组件、安装
RocketMQ 消息中间件 基础知识 消息中间件的应用 异步解耦 削峰填谷 消息分发 RocketMQ 核心组件 RocketMQ 安装 源码安装 修改配置参数 启动 管理控制台安装 测试项目 Ja ...
- 【Java从0到架构师】Dubbo 基础 - 设置启动时检查、直接提供者、线程模型、负载均衡、集群容错、服务降级
Dubbo 分布式 RPC 分布式核心基础 分布式概述 RPC Dubbo Dubbo 入门程序 - XML.注解 部署管理控制台 Dubbo Admin 修改绑定的注册 IP 地址 设置启动时检查 ...
- 【Java从0到架构师】分布式框架通信核心基础 - 序列化(JDK、Protobuf)、远程过程调用 RMI
分布式框架通信核心基础 序列化 JDK 的序列化 JDK 序列化的一些细节 Protobuf 序列化 Protobuf 环境搭建与操作 Protobuf 原理分析 实际数据传输 序列化技术选型 远程过 ...
最新文章
- Varnish使用小结
- c语言220程序,《C语言程序实例大全》原代码220例
- boost::gil::channel_traits用法的测试程序
- java笔记(3):String(2)
- 危机之后迎来机遇,企业对抗疫情的11点建议
- 头像裁剪上传插件php,PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
- LeetCode 第 32 场双周赛(983/2957,前33.2%)
- oracle mysql us7acsii_有关oracle数据库us7ascii字符集转换策略的探讨
- node卸载_08187.1.1如何卸载CDP
- JAVA集合系列(6):HashMap
- 对接极光IM之修改头像
- 查看python源码位置方法以及潜在误区
- 跟我学Springboot开发后端管理系统1:概述
- 如何用Python制作词云,对1000首古诗做词云分析!
- 贝叶斯网络与EM算法
- sysvol 域控制器 文件_重建域控SYSVOL和NETLOGON共享
- 关于Java使用POI对Excel2003和2007的导入和导出
- Set集合之TreeSet
- 各种食用油的正确烹饪方法
- 将英文kali改成中文kali