Java Filter过滤器+Listen监听器

啥是过滤器

顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学。

但是java中的过滤器与生活中的过滤器的作用是相差无几的,即按照制定的一些规则来控制一些对象

Filer的作用:

过滤器是出于客户端与服务器端之间的一道过滤网,在访问资源之前,通过一系列的过滤器对请求

进行修改,判断等。把不符合规则的请求在中途拦截或修改,拦截或修改响应

如何创建使用一个Filter

1.定义一个类实现接口Filter(java.servlet)

import javax.servlet.*;

import java.io.IOException;

public class Filter1 implements javax.servlet.Filter{

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

}

@Override

public void destroy() {

}

}

Filer的生命周期:

1.init:在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次用于加载资源

2.doFilter:每一次请求被拦截都会执行

3.destory:在服务器关闭后,Filter对象会被销毁,如何服务器对象正常关闭,destory方法会被执行一次

用于释放资源

2.复写方法

3.设置拦截路径

设置拦截路径有两种方法,一种是注解配置,一种是设置web.xml

注解配置:

即加上一个@WebFilter("")

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import java.io.IOException;

@WebFilter("/*")

public class Filter1 implements javax.servlet.Filter{

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

}

@Override

public void destroy() {

}

}

web.XML配置:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

demo1

Filter1

demo1

//设置拦截路径

/*

拦截路径配置的讲解

1.具体的资源路径:/index.jsp 只有在访问index.jsp这个资源的时候过滤器才会被执行

2.拦截目录:/user/* 访问/user下的所有资源的时候过滤器才会被执行

3.后缀名拦截:.jsp 访问后缀名为jsp的资源的时候,过滤器才会被执行

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

拦截方式的配置:

注解配置:

设置dispatcherTypes属性

1. REQUEST:默认值。浏览器直接请求资源

2. FORWARD:转发访问资源

3. INCLUDE:包含访问资源

4. ERROR:错误跳转资源

5. ASYNC:异步访问资源

web.xml配置

* 设置标签即可

过滤器的执行流程:

1.执行过滤器

2.执行放行后的资源

3.执行过滤器放行器代码下边的代码

过滤器链(配置多个过滤器)

执行顺序

如果有两个过滤器:过滤器1和过滤器2

1. 过滤器1

2. 过滤器2

3. 资源执行

4. 过滤器2

5. 过滤器1

看图按照从左到右的顺序来看就好理解了

那么有了多个过滤器之后又是怎么来判断那个过滤器先哪个过滤器后的呢?

是随机判断的?

当然不是啦

过滤器先后执行顺序的判断方法

1. 注解配置:

按照类名的字符串比较规则比较,值小的先执行

如: AFilter 和 BFilter,AFilter就先执行了。

2. web.xml配置:

谁定义在上边,谁先执行

以上就是Filter的一些基础知识,写作不易,请各位老铁点个赞支持一下,觉得有帮助的也可以收藏呀,我会经常更新文章,也可以关注我呀

java过滤器的执行顺序_Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)...相关推荐

  1. Vue生命周期及各组件间的执行情况

    文章目录 前言 一.Vue的生命周期是什么? 二.Vue生命周期中具体过程 1.Vue生命周期中的函数 创建Vue实例期阶段: 运行阶段: 销毁阶段: 2.加入keep-alive后 1)keep-a ...

  2. java如何显示当天世界_Java学习笔记——显示当前日期的三种方式

    一.Date类:这是一种过时的表达方式 import java.util.Date;Date date = new Date(); System.out.println((1900+date.getY ...

  3. 28 Java类的加载机制、什么是类的加载、类的生命周期、加载:查找并加载类的二进制数据、连接、初始化、类加载器、双亲委派模型、自定义类加载器

    28Java类的加载机制 28.1.什么是类的加载 28.2.类的生命周期 28.2.1.加载:查找并加载类的二进制数据 28.2.2.连接 28.2.3.初始化 28.3.类加载器 28.4.类的加 ...

  4. 神策数据张涛:企业服务客户全生命周期运营三步曲:执行反馈

    本文根据神策数据副总裁张涛关于企业服务客户全生命周期系列的直播内容整理,共 3 篇,本篇主要内容如下: 解决方案的落地与执行 解决方案执行效果反馈与分析 反向检验关键问题和解决方案的有效性 全生命周期 ...

  5. java 连接mongodb 集群_Java 连接MongoDB集群的几种方式

    先决条件 先运行mongodb肯定是必须的,然后导入以下包: import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; im ...

  6. Java获取文件的目录_Java实现读取某个路径下的文件目录

    展开全部 import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.Tab ...

  7. java 调用枚举种方法_Java中枚举类型的一种使用方式

    今天改同事的代码发现同事的代码中有大量的if else语句.很不美观而且可读性太差. 因为需要给前端一个key,value的列表.这个列表写死.然而同事的代码. 放几张图,大家自己感受.我都不知道以后 ...

  8. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

  9. java 接受传感器的数据_java中调用第三方接口获取数据的方式

    //get请求方式 private String getInfo(Map params,String URL) { // 创建Httpclient对象 CloseableHttpClient http ...

最新文章

  1. 为什么分散刷新没有死时间_分散项目为何失败(以及如何处理)
  2. 对ThreadLocal实现原理的一点思考
  3. 解决Windows Server2008 R2中IE开网页时弹出阻止框
  4. 牛客15499 Jxc军训(快速幂,逆元)
  5. java方法的参数传递规则_java语言参数传递介绍
  6. 用最新NLP库Flair做文本分类 1
  7. Ext4文件系统修复
  8. 中秋节公司发了这个(结尾分享红包)
  9. python的坐标代码_基于Python的地图坐标服务接口调用代码实例
  10. lnmp修改mysql上传大小限制_安装Linux+Nginx+MySQL+PHP(LNMP)集成环境,解除上传文件大小限制...
  11. SQL Server SQL高级查询语句小结(转)
  12. python彩票预测与分析_130期柳无尘双色球预测奖号:红球和值分析
  13. ACM模板——线段树树状数组ST表
  14. Magento 自定义EMS FEDEX DHL UPS扩展 第三章
  15. python干货分享/网址总结
  16. 豆瓣时间“黑镜人生”的推荐书单
  17. markdown 转 html c,STATA中的Markdown转换命令markstat
  18. 三极管的工作条件及工作状态的判断
  19. RELY constraints
  20. 26岁现在想转行学习编程,晚了吗?

热门文章

  1. 去除多重共线性的5种方法,你学废了嘛?
  2. IIS下配置php运行环境。
  3. VScode配置8086汇编环境
  4. 象棋中马走日字,给定棋盘上两个点,求两点间马最少走几步可达
  5. python大数据运维常用脚本_大数据岗位要求之大数据运维
  6. 阿里云ET2016年末的迁徙和演进
  7. 腾讯支持鸿蒙系统,鸿蒙系统份额突破16%生死线
  8. 散布矩阵(Scatter Matrix)及其与协方差矩阵(The Covariance Matrix)的关系
  9. github在线创建文件夹[一眼看懂]
  10. python+scrapy简单爬取淘宝商品信息