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">

        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);

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

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

相关文章

CentOS使用Docker部署Halo并结合内网穿透实现公网访问本地博客

文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤&#xff1a;1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 本文主要介绍如何在CentOS 7系统使…

Nextcloud激活被锁用户

Nextcloud激活用户 如果docker下没有安装sudo 和 vim执行下面命令&#xff0c;安装了则跳过 #进入docker内部 #更新apt-get apt-get update #安装sudo apt-get install sudo #安装vim apt-get install vim 修改下面文件内容&#xff0c;否则执行occ命令可能报错 进入上面查询…

连接数据库(MySQL)的JDBC

目录 JDBC简介快速入门API详解DriverManager&#xff08;驱动管理类&#xff09;注册驱动&#xff1a;获取数据库连接(对象)&#xff1a; Connection&#xff08;数据库连接对象&#xff09;获取执行SQL的对象管理事务 Statement(执行SQL语句)执行DML、DDL语句执行DQL语句 Resu…

轨迹预测后处理之非极大值抑制(NMS)

非极大值抑制是图像处理里面的一种算法&#xff08;比如边缘检测会使用到&#xff09; 轨迹预测这里借鉴了其思想&#xff0c;比如说对于某个场景中的某辆车&#xff0c;我们使用模型预测 64 条轨迹或者更多&#xff0c;以很好地捕获多模态性&#xff0c;同时每条轨迹对应一个…

JavaScript 基础、内置对象、BOM 和 DOM 常用英文单词总结

一提到编程、软件、代码。对于英语不是很熟悉的同学望而却步。其实没有想像中的难么难&#xff0c;反复练习加上自己的思考、总结&#xff0c;会形成肌肉记忆。整理一下&#xff0c;初学者每天30遍。 1、JavaScript 基础语法 break&#xff1a;中断循环或 switch 语句的执行。…

Gif动图怎么快速制作?两招教你在线做

Gif动图作为一种实用的图片格式&#xff0c;因为其体积小&#xff0c;画面丰富&#xff0c;所以在各大聊天软件中非常的受欢迎。小伙伴们是不是很好奇这种gif动态图片是如何制作的吧&#xff01;下面&#xff0c;小编就给大家分享两个快速制作gif动画的小技巧&#xff01;不用下…

Matlab从入门到精通课程

教程介绍 MATLAB是美国MathWorks公司出品的商业数学软件&#xff0c;用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&#xff0c;控制系统等领域。 学习地址 链接&#xff1a;https://pan.baidu.com/s/1PxGarBwQusMzwPVqcE…

内网使用rustdesk进行远程协助

文章目录 前言一、搭建rustdesk中继服务器二、搭建文件下载服务器三、创建引导脚本四、使用 前言 内网没有互联网环境&#xff0c;没法使用互联网上有中继服务器的远程协助工具&#xff0c;如teamviewer、todesk、向日癸等&#xff1b;在内网进行远程维护可以自己搭建中继服务…

TS + Vue3 elementUI 表格列表中如何方便的标识不同类型的内容,颜色区分 enum

TS Vue3 elementUI 表格列表中如何方便的标识不同类型的内容&#xff0c;颜色区分 enum 本文内容为 TypeScript 一、基础知识 在展示列表的时候&#xff0c;列表中的某个数据可能是一个类别&#xff0c;比如&#xff1a; enum EnumOrderStatus{"未受理" 1,"…

python能做什么

python能做什么 Web开发&#xff1a;Python具有许多流行的Web框架&#xff0c;如Django和Flask&#xff0c;使得它成为Web开发的首选语言。它简洁、易于学习、且拥有丰富的生态系统&#xff0c;能够快速构建高性能的Web应用。 数据科学和机器学习&#xff1a;Python在数据科学…

51单片机—直流电机

1.元件介绍 2.驱动电路 3.电机调速 一般会保证一个周期的时间是一样的 应用&#xff1a; 1.LED呼吸灯 #include <REGX52.H>sbit LEDP2^0;void Delay(unsigned int t) {while(t--); } void main() {unsigned char Time,i;while(1){for(Time0;Time<100;Time){for(i0;…

【MATLAB源码-第16期】基于matlab的MSK定是同步仿真,采用gardner算法和锁相环。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 **锁相环&#xff08;PLL&#xff09;** 是一种控制系统&#xff0c;用于将一个参考信号的相位与一个输入信号的相位同步。它在许多领域中都有应用&#xff0c;如通信、无线电、音频、视频和计算机系统。锁相环通常由以下几个…

matlab和stm32的安装环境。能要求与时俱进吗,en.stm32cubeprg-win64_v2-6-0.zip下载太慢了

STM32CubeMX 6.4.0 Download STM32CubeProgrammer 2.6.0 Download 版本都更新到6.10了&#xff0c;matlab还需要6.4&#xff0c;除了st.com其他地方都没有下载的,com.cn也没有。曹 还需要那么多固件安装。matlab要求制定固件位置&#xff0c;然后从cubemx中也指定…

mac WPS 无格式粘贴

操作办法 文件–文字偏好设置–编辑–剪切和粘贴选项

基于yolov8安全帽检测的系统

基于yolov8安全帽检测的系统 项目描述&#xff1a; 安全头盔检测&#xff08;计算机视觉&#xff09; 1.自训练数据集1538张数据图片&#xff0c;进行标注&#xff0c;并进行100轮的训练&#xff0c;准确率达0.966 2.使用 Flask 和 Ultralytics YOLOv8 模型开发了一个 Web 应…

阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中

文章目录 阿里CICD流水线Docker部署&#xff0c;将阿里镜像私仓中的镜像部署到服务器中一、CICD流水线的初步使用可以看我之前的两篇文章二、添加部署任务&#xff0c;进行Docker部署&#xff0c;创建一个阿里的试用主机1、选择主机部署&#xff0c;并添加服务主机2、创建免费体…

Excel·VBA数组平均分组问题

看到一个帖子《excel吧-数据分组问题》&#xff0c;对一组数据分成4组&#xff0c;使每组的和值相近 上一篇文章《ExcelVBA数组分组问题》&#xff0c;解决了这个帖子问题的第1步&#xff0c;即获取所有数组分组形式的问题 接下来要获取分组和值最相近的一组&#xff0c;只需计…

鸿鹄工程项目管理系统源码:Spring Boot带来的快速开发与部署体验

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

flask_restful结合蓝图使用

在蓝图中&#xff0c;如果使用 Flask_RESTful &#xff0c; 创建 Api 对象的时候&#xff0c;传入蓝图对象即可&#xff0c;不再是传入 app 对象 /user/__init__.py from flask.blueprints import Blueprintuser_bp Blueprint(user,__name__)from user import views /user…

【已解决】vue3+ts使用Element-Plus icon图标不显示|element plus 使用 icon 图标教程

文章目录 使用Element-Plus icon图标不显示的解决方案确保已正确安装和引入Element-Plus及其图标库&#xff1a;检查是否有命名冲突&#xff1a; element plus 使用 icon 图标教程1. 安装 Element Plus2. 引入 Element Plus 和图标全局引入按需引入 3. 在组件中使用图标4. 自定…