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

客户端(浏览器)向服务器提交请求的方式:

  1. 在地址栏输入 URL,敲回车
  2. 提交表单(form)
  3. 相当于第 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相关推荐

  1. 【Java从0到架构师(1),Java中高级面试题总结(全面)

    JSP 九大内置对象 MySQL 基础 + 多表查询 [Java从0到架构师]MySQL 基础 MySQL MySQL 的使用步骤 数据库的内部存储细节 GUI 工具 SQL 语句 DDL 语句 DD ...

  2. 【Java从0到架构师】SpringCloud - Sleuth、Zipkin、Config

    SpringCloud 链路追踪组件 Sleuth Zipkin 分布式配置中心 - Config Git + Config 分布式配置中心 Java 从 0 到架构师目录:[Java从0到架构师]学 ...

  3. 【Java从0到架构师】SpringCloud - Hystrix、Zuul

    SpringCloud 基本概念 熔断和降级 服务雪崩效应 服务熔断与降级 - Hystrix SpringBoot 集成 Hystrix 熔断降级服务异常报警通知 重点属性 - 熔断隔离策略.超时时 ...

  4. 【Java从0到架构师】SpringCloud - Eureka、Ribbon、Feign

    SpringCloud 分布式.微服务相关概念 微服务框架构选型 SpringCloud 概述 服务注册与发现 - Eureka 案例项目 Eureka 自我保护机制 微服务调用方式 - Ribbon ...

  5. 【Java从0到架构师】RocketMQ 使用 - 集成 SpringBoot

    RocketMQ 消息中间件 集成 SpringBoot 入门案例 生产消息类型 - 同步.异步.一次性 消费模式 - 集群.广播 延时消息 设置消息标签 设置消息的 Key 自定义属性设置 消息过滤 ...

  6. 【Java从0到架构师】RocketMQ 使用 - 发送消息、接收消息、特殊消息

    RocketMQ 消息中间件 入门案例 NameServer 地址 发送消息 同步发送消息 异步发送消息 一次性发送消息 生产者组.消息封装 接收消息 消费方式:推式消费.拉式消费 消息方式:集群模式 ...

  7. 【Java从0到架构师】RocketMQ 基础 - 应用、核心组件、安装

    RocketMQ 消息中间件 基础知识 消息中间件的应用 异步解耦 削峰填谷 消息分发 RocketMQ 核心组件 RocketMQ 安装 源码安装 修改配置参数 启动 管理控制台安装 测试项目 Ja ...

  8. 【Java从0到架构师】Dubbo 基础 - 设置启动时检查、直接提供者、线程模型、负载均衡、集群容错、服务降级

    Dubbo 分布式 RPC 分布式核心基础 分布式概述 RPC Dubbo Dubbo 入门程序 - XML.注解 部署管理控制台 Dubbo Admin 修改绑定的注册 IP 地址 设置启动时检查 ...

  9. 【Java从0到架构师】分布式框架通信核心基础 - 序列化(JDK、Protobuf)、远程过程调用 RMI

    分布式框架通信核心基础 序列化 JDK 的序列化 JDK 序列化的一些细节 Protobuf 序列化 Protobuf 环境搭建与操作 Protobuf 原理分析 实际数据传输 序列化技术选型 远程过 ...

最新文章

  1. Varnish使用小结
  2. c语言220程序,《C语言程序实例大全》原代码220例
  3. boost::gil::channel_traits用法的测试程序
  4. java笔记(3):String(2)
  5. 危机之后迎来机遇,企业对抗疫情的11点建议
  6. 头像裁剪上传插件php,PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
  7. LeetCode 第 32 场双周赛(983/2957,前33.2%)
  8. oracle mysql us7acsii_有关oracle数据库us7ascii字符集转换策略的探讨
  9. node卸载_08187.1.1如何卸载CDP
  10. JAVA集合系列(6):HashMap
  11. 对接极光IM之修改头像
  12. 查看python源码位置方法以及潜在误区
  13. 跟我学Springboot开发后端管理系统1:概述
  14. 如何用Python制作词云,对1000首古诗做词云分析!
  15. 贝叶斯网络与EM算法
  16. sysvol 域控制器 文件_重建域控SYSVOL和NETLOGON共享
  17. 关于Java使用POI对Excel2003和2007的导入和导出
  18. Set集合之TreeSet
  19. 各种食用油的正确烹饪方法
  20. 将英文kali改成中文kali

热门文章

  1. 765g处理器可以用两年吗?
  2. TCP/IP之路由算法
  3. 最短Hamilton路径
  4. C++STL库中的map容器
  5. json 转对象函数_JSON_QUERY()函数从JSON数据提取对象
  6. sql server死锁_了解SQL Server中的死锁定义
  7. 证书:数字签名和验签加密和解密
  8. mysql数据库补充知识3 查询数据库记录信息之多表查询
  9. 论一只爬虫的自我修养(第二天)
  10. 一个简单的DDraw应用程序2