news 2026/4/18 3:32:41

Javaweb(Filter、Listener、AJAX、JSON)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Javaweb(Filter、Listener、AJAX、JSON)

1.Filter的概述&快速入门&执行流程

(1)Filter

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

(2)Filter快速入门

1.定义类,实现Filter接口,并重写其所有方法

public class FilterDemo implements Filter { public void init(FilterConfig filterConfig) public void doFilter(ServletRequest request public void destroy() }

2.配置Filter拦截资源的路径:在类上定义@WebFilter注解

@WebFilter("/*") public class FilterDemo implements Filter {

3.在doFilter方法中输出一句话,并放行

public void doFilter(ServletRequest request, Ser System.out.println("filter被执行了.."); //放行 chain.doFilter(request,response); }

(3)Filter执行流程

1.放行后访问对应资源,资源访问完成后,还会回到Filter中吗?
2.如果回到Filter中,是重头执行还是执行放行后的逻辑呢?放行后逻辑

执行放行前逻辑-->放行-->访问资源-->执行放行后逻辑

2.Filter使用细节(Filter拦截路径配置&过滤器链)

(1)Filter拦截路径配置

  • Filter可以根据需求,配置不同的拦截资源路径
@WebFilter("/*) public class FilterDemo

拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截
目录拦截:/user/*:访问/user下的所有资源,都会被拦截
后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截
拦截所有:/*:访问所有资源,都会被拦截

(2)过滤器链

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

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

3.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接口

public class ContextLoaderListener implements ServletContextListener { /** *ServletContext对象被创建:整个web应用发布成功 * @paramsce */ public void contextInitialized(ServletContextEvent sce) {} /** *ServletContext对象被销毁:整个web应用卸载 * @param sce */ public void contextDestroyed(ServletContextEvent sce) {}

2.在类上添加@WebListener注解

4.AJAX

(1)概述

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

1.与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据
使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面了
2.异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等...

同步和异步

(2)AJAX快速入门

1.编写AjaxServlet,并使用response输出字符串
2.创建XMLHttpRequest对象:用于和服务器交换数据

var xmlhttp; if(window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); }else{ // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

3.向服务器发送请求

xmlhttp.open("GET","url"); xmlhttp.send();//发送请求

4.获取服务器响应数据

xmlhttp.onreadystatechange = function ({ if (xmlhttp.readyState ==4&& xmlhttp.status == 200) alert(xmlhttp.response Text);}}

5.Axios异步框架

  • Axios对原生的AJAX进行封装,简化书写
  • 官网:https://www.axios-http.cn

(1)Axios快速入门

1. 引入 axios 的 js文件

<script src="js/axios-0.18.0.js"></script>

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

axios({ method:"get", url:"http://localhost:8080/ajax-demo1/aJAXDemo1?username=zhangsan&quot; }).then(function (resp) alert(resp.data); });
axios({ method:"post" url:"http://localhost:8080/ajax-demo1/aJAXDemo1&quot;, data:"username=zhangsan" }).then(function (resp) alert(resp.data); });

(2)Axios请求方式别名

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

axios.get(url[, config])
axios.delete(url[, config])
axios.head(url, config])
axios.options(url[, config])
axios.post(url[, data], config]])
axios.put(url[, data], config]])
axios.patch(url[, data[, config]])

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

6.JSON

(1)JSON概念和基础语法

  • 概念:JavaScript Object Notation。JavaScript 对象表示法
  • 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输

JSON基础语法

  • 定义:
var 变量名 ={"key1": value1, "key2": value2, .... };

value的数据类型为:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true或 false)
数组(在方括号中)
对象(在花括号中)
null


示例:

var json = ("name": "zhangsan", "age": 23, "addr": ["北京", "上海", "西安"] };
  • 获取数据:

变量名.key

json.name

(2)JSON数据和Java对象转换

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

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

<dependency> <groupld>com.alibaba</groupld> <artifactld>fastjson</artifactld> <version>1.2.62</version> </dependency>

2. Java对象转JSON

String jsonStr = JSON.toJSONString(obj);

3. JSON字符串转Java对象

User user = JSON.parseObject(jsonStr, User.class);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:31:46

Redis 高可用:从主从复制到集群架构的演进之路

Redis 高可用&#xff1a;从主从复制到集群架构的演进之路 本文将从零开始&#xff0c;带你全面理解 Redis 高可用架构的演进历程&#xff0c;包括主从复制、哨兵模式、集群架构&#xff0c;以及生产环境中的最佳实践。 一、为什么需要高可用&#xff1f; 1.1 单机 Redis 的问…

作者头像 李华
网站建设 2026/4/18 3:31:14

Zero123++:从单张图像到一致多视角的扩散模型技术解析

Zero123&#xff1a;从单张图像到一致多视角的扩散模型技术解析 【免费下载链接】zero123plus Code repository for Zero123: a Single Image to Consistent Multi-view Diffusion Base Model. 项目地址: https://gitcode.com/gh_mirrors/ze/zero123plus Zero123是一个基…

作者头像 李华
网站建设 2026/4/18 3:29:16

简单理解:CAN-BUS (Controller Area Network),即控制器局域网

CAN-BUS (Controller Area Network)&#xff0c;即控制器局域网&#xff0c;是一种专为高可靠性、实时性环境设计的串行通信总线标准&#xff0c;广泛应用于汽车、工业自动化等领域。一、核心起源与标准发明者&#xff1a;德国 ** 博世&#xff08;Bosch&#xff09;** 公司&am…

作者头像 李华