记录一下filter
filter是什么,如它的字面意思,就是拦截器。它可以在request到达相关资源之前,比如servlet之前先处理requeset,也可以拦截或处理从某个资源比如servlet发出的response。
接口Filter:
Filter是个接口,javax.servlet Interface Filter
里面就三个方法:

生命周期:
init方法:
filter在servlet容器(也就是服务器)启动的时候就会初始化,filter的init方法只会在容器实例化一个filter的时候调用一次,只调用一次,这个方法用于初始化filter。
FilterConfig是servlet容器传进init方法中的。
doFilter方法:
当Servlet每次处理Filter相关资源时,都会调用该Filter实例是doFilter方法,这个方法的参数有ServletRequest、ServletResponse、FilterChain三个。
在Filter的实现中,doFilter一定要调用FilterChain的doFilter方法!
一个资源可以被多个Filter关联到,一般我们叫这是Filter链条,这时我们的FilterChain的doFilter会触发Filter链条中的下一个Filter。只有在Filter链条中的最后一个Filter调用FilterChain.doFilter()方法,才会触发处理资源的方法(servlet中的service什么的)。
注意,FilterChain中的doFilter是和Filter中的doFilter不一样的,前者只有两个参数,后者有三个参数。

如果在Filter的实现中,没有调用这个chain的doFilter方法,那么对该request的处理就会终止。
destroy方法:
这个方法在Servlet容器要销毁Filter时触发,一般在应用停止时进行调用。
这里讲一下关于Filter处理response和request:
request来时,会先走每个filter中chain.doFilter方法之前的方法。然后走到chain.doFilter的时候,就走chain中其他filter,一样这样走。
当所有的filter的chain.doFilter方法前的内容都调用完以后,才会调用servlet的service方法。
service方法调用结束后会返回上一次的chain.doFilter方法,并执行doFilter方法后面的代码。接着,返回上上一个chain.doFilter方法……
因此,我们的Filter都是在chain.doFilter方法调用之前来处理request请求,在chain.doFilter方法调用之后处理response响应。
:

(图片转自博客:https://www.cnblogs.com/wuchaodzxx/p/6063530.html)
Filter的执行顺序:
只有在部署描述符中,也就是web.xml中才能自定义filter的触发顺序,在web.xml中,哪个filter放在前面,就哪个先触发。
如果是用注解来配置的filter,那么它的触发顺序是根据Filter的类型字符排序,比如如果两个Filtrer类,一个是Filter0,一个是Filter1,那么这个Filter0就先于Filter1进行拦截……
记录一下filter的更多相关文章
- java Servlet中的过滤器Filter
web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...
- Servlet中的过滤器Filter用法
1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应. 主要用于对HttpServletRequest 进行预处理,也可以对Http ...
- Servlet中的过滤器Filter详解
加载执行顺序 context-param->listener->filter->servlet web.xml中元素执行的顺序listener->filter->stru ...
- Filter(转载)
web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...
- Servlet过滤器Filter和监听器
一.Servlet过滤器的概念: *********************************************************************************** ...
- asp.net core系列 68 Filter管道过滤器
一.概述 本篇详细了解一下asp.net core filters,filter叫"筛选器"也叫"过滤器",是请求处理管道中的特定阶段之前或之后运行代码.fil ...
- JavaWeb学习篇之----Servlet过滤器Filter和监听器
首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: ************************************************************** ...
- Lucene搜索方式大合集
package junit; import java.io.File; import java.io.IOException; import java.text.ParseException; imp ...
- lucene 搜索demo
package com.ljq.utils; import java.io.File; import java.util.ArrayList; import java.util.List; impor ...
随机推荐
- linux下mycat读写分离的配置
为什么要配置读写分离,我想我就不需要再赘述了,那么在mycat下如何进行读写分离的配置,配置之后的实际效率又如何呢?我上午根据文档捣鼓和测试了一下,这里做一下记录: 最开始,我们还是要配置mysql本 ...
- hdu-4991 Ordered Subsequence(dp+树状数组)
题目链接: Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- 机器学习之K-means算法
前言 以下内容是个人学习之后的感悟,转载请注明出处~ 简介 在之前发表的线性回归.逻辑回归.神经网络.SVM支持向量机等算法都是监督学习算法,需要样本进行训练,且 样本的类别是知 ...
- Rikka with Sequence
题意: 给一长度为n的序列,维护三个操作:区间开根,区间加,区间求和. 解法: 注意到本题关键在于区间开根: 对于一个数字,只要进行$O(loglogT)$次开根即会变为1. 考虑线段树,对于线段数上 ...
- java集合框架之HashSet
参考http://how2j.cn/k/collection/collection-hashset/364.html#nowhere 元素不能重复 Set中的元素,不能重复重复判断标准是: 首先看ha ...
- 20个Flutter实例视频教程-第11节: 一个不简单的搜索条-2
博客地址: https://jspang.com/post/flutterDemo.html#toc-1b4 视频地址:https://www.bilibili.com/video/av3970929 ...
- 安全运维之关于个人ip定位与网站监控的分析
场景: 后台:有人盗刷我的短信接口.小偷偷我手机.无良黑客黑我网站 前台:发个欺骗链接或者说我在网上举报谁谁谁附带一个跳转url获取对方ip....... How to solve: ...
- 前端之CSS2
CSS盒子模型 CSS盒子模型介绍 盒子模型解释 元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式. 盒子模型示意图如下: 把元素叫做盒子 ...
- E20190324-hm
splice vt. 绞接; 捻接(两段绳子); 胶接; 粘接(胶片.磁带等); n. 胶接处,粘接处,铰接处;
- 洛谷 - P1891 - 疯狂LCM - 线性筛
另一道数据范围不一样的题:https://www.cnblogs.com/Yinku/p/10987912.html $F(n)=\sum\limits_{i=1}^{n} lcm(i,n) $ $\ ...