过滤链FilterChain,请求与响应--chain.doFilter()代码前后_weixin_30682127的博客-程序员宅基地

技术标签: web.xml  

转:http://blog.csdn.net/zuoluoboy/article/details/24466503

 

Filter程序实现了doFilter()方法,实现该方法就可实现对用户请求进行预处理,也可实现对服务器响应进行后处理——它们的分界线为是否调用了chain.doFilter(),执行该方法之前,即对用户请求进行预处理;执行该方法之后,即对服务器响应进行后处理。

 

两个过滤器,EncodingFilter负责设置编码,SecurityFilter负责控制权限,服务器会按照web.xml中过滤器定义的先后循序组装成一条链,然后一次执行其中的doFilter()方法。执行的顺序就如下图所示,执行第一个过滤器的chain.doFilter()之前的代码,第二个过滤器的chain.doFilter()之前的代码,请求的资源,第二个过滤器的chain.doFilter()之后的代码,第一个过滤器的chain.doFilter()之后的代码,最后返回响应。

 

由此可见,chain.doFilter()方法跟filter执行的先后顺序没关。

转载于:https://www.cnblogs.com/tvxqpurpleline/p/5150982.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30682127/article/details/99341542

智能推荐

R中的矩阵运算_狗狗诗人061的博客-程序员宅基地_r 矩阵运算

R中的矩阵运算创建一个向量> x=c(1,2,3,4)> x[1] 1 2 3 4创建一个矩阵在R中可以用函数**matrix()**来创建一个矩阵,应用该函数时需要输入必要的参数值。function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)data项为必要的矩阵元素,nro...

oracle 坏块查找,检测oracle数据库坏块的方法_志陵世界级制造的博客-程序员宅基地

检测oracle数据库坏块的办法:1、使用DBV(DB File Verify)工具;2、使用RMAN(Recovery Manager)工具;DBV(DB File Verify)工具:外部命令,物理介质数据结构完整性检查;只能用于数据文件(offline或online),不支持控制文件和重做日志文件的块检查;也可以验证备份文件(rman的copy命令备份或操作系统CP命令备份);进入盘符,然后...

应用加速,数字人民币接入多地交通出行场景 | 产业区块链发展周报_陀螺财经的博客-程序员宅基地

摘要产业动态:微众银行多方大数据隐私计算平台通过信通院权威评测欧洲最大移动运营商沃达丰将为AI智能协议移动终端提供移动通信服务汇丰银行加入迪拜经济的阿联酋KYC区块链平台重庆市先进区块链研...

智能手机争霸赛:三星是如何战胜苹果的?_「已注销」的博客-程序员宅基地

全文共2883字,预计学习时长10分钟图源:unsplash智能手机在过去十年里逐渐超过个人电脑,成为我们生活中最重要的电子设备,我们的一切需求都逐渐迁移到了掌上设备上。无论是银行账户,家庭相册,还是工作,任何的虚拟需求都可以在智能手机上得到满足。2007年,苹果公司的iPhone首次亮相便迅速风靡全球。作为第一款现代智能手机,iPhone声望与成就双丰收。一年后,苹果推出了历史上第一个应用商店,提供约500个原创应用,再一次为手机行业带来了革命性的改变。图源:...

c#推箱子小游戏代码_C语言实现推箱子小游戏_曹力ShiningRay的博客-程序员宅基地

#include#include#include#define N 1000/*r目的地o箱子i人x墙路(空格)w上a左d右s下*/void menu();int level1();int level2();void swap(char*,char*);int opera(char *p,int *ren,int xzs);void dituprint();void menu(){printf("...

java 多线程 自加_java8线程安全自增_weixin_34293510的博客-程序员宅基地

LongAdder优于AtomicLongpublic class TestAtomicLong {private static AtomicLong ai = new AtomicLong(0);public static void main(String[] args) throws InterruptedException {MyThread mt = new MyThread();Long...

随便推点

Uboot1.3.4下命令体系结构_IT悟物穷理IT的博客-程序员宅基地

2020-6-27星期六 闷热 端午节最后一天假期啦!本文仅作为技术积累的记录,方便日后查阅!1.当前Uboot实现的命令流程代码分析uboot命令解析和执行过程分析从main_loop说起uboot启动的第二阶段,在初始化了所有该初始化的东西后,进入了一个死循环,死循环的循环体就是main_loop()。main_loop函数执行一遍,就是一个获取命令、解析命令、执行命令的过程。main_loop()中先通过环境变量bootdelay获取对应的时长,不输入任何按键则执行启动内核命.

窥视C++细节-使用移动构造和右值引用优化函数返回值_大话音视频的博客-程序员宅基地

文章目录环境定义一个用于测试的类没有右值引用和移动构造ubuntu运行结果分析visual studio运行结果分析ubuntu中关闭返回值优化添加移动构造使用const引用接收返回值使用右值引用接收返回值总结本文不是介绍右值引用和移动语义的,在阅读本文前,假设读者已经知道了什么是右值引用和移动语义。右值分为:纯右值和将亡值,本文主要介绍纯右值,并不涉及将亡值。环境在运行测试代码时,使用了如下环境:linux使用的是ubuntu 18,在ubuntu上使用的是g++,版本如下:[email protected]

【Android Advanced Training - 03】管理音频播放[Lesson 2 - 管理音频焦点Audio Focus]_普通网友的博客-程序员宅基地

Managing Audio Focus[管理音频焦点]很多App都可以播放音频,因此在播放前如何获取到音频焦点就显得很重要了,这样可以避免同时出现多个声音,Android使用audio focus来节制音频的播放,仅仅是获取到audio focus的App才能够播放音频。在App开始播放音频之前,它需要经过发出请求[request]->接受请求[receive]-&g...

slider 点击 鼠标移出元素放开_切儿的博客-程序员宅基地

工作小问题记录问题:页面根据需求需要使用到slider,用户通过对slider的操作使得其他显示动态变化, 但是用户在元素上摁下鼠标后,移动幅度较大,鼠标偏离slider元素,这样导致动态显示部分无变化。之前的写法是在元素上绑定mousedown、mouseup、mouseout$('#slider').mousedown(function () { });$('#slider').mouseup(function () { });$('#...

jQuery源码之动画详解_鱼满仓的博客-程序员宅基地

一.前言动画在jQuery里属于重要的模块,库中很多模块都为它服务,queue队列模块,callbacks模块,缓存模块,下面是我自己看源码做笔记所写下来的,话不多说,一下是我自己所记录的,大部分代码做了笔记 。我将整个动画分为2个部分,今天我来分析下动画变化之前,做了些什么,怎么实现动画的链式,queue队列到底做了什么下次会讲动画真正实现的源码,不过今天的这个部分,我个人觉得比较有

如何设置html中按钮边框颜色,CSS-为什么我的电子邮件按钮边框显示两种颜色,而边框颜色设置为仅显示一种颜色?..._旧文字的博客-程序员宅基地

从上图可以看到,当border-color设置为显示白色边框时,我的电子邮件按钮边框同时显示灰色和白色.我已经发布了以下代码:[email protected] border-radius($radius) {border-radius: $radius;-ms-border-radius: $radius;-moz-border-radius: $radius;-o-border-radius: $radiu...