JSP Filter执行流程猜想

本文探讨了JSP中Filter的工作机制,特别是Filter链的概念及其内部处理流程。通过对Filter链中实例的创建与调用过程的分析,揭示了request如何通过Filter链进行预处理以及响应后处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的内容,是做为j2ee小白的本人的一点个人理解,记录下来,供自己及同样在苦苦研究的网友参考,若有错误,请各位大神不吝指教

学习了JSP中的Filter,对Filter中的chain有以下理解。

1.Filter中的chain中存放了处理不同request的filter实例,JSP中使用Filter的目的就是为了在action处理request前,通过Filter中的 doFilter方法,对request进行预处理。猜想,每一个request均有一个Filter实例来处理,由在实现Filter类时,由 @WebFilter(filterName="log",urlPattern={"/*"})来指定 ,本例中,所有的request,均被log类来预处理。猜想,对于每个相同 request,仅使用同一个实例来处理。对于request请求,web容器(如Tomcat)会使用一个单独的线程来接收,每接收一个 request,web容器(Tomcat)边向chain中追加一个实例。链表的结构如下:


2.猜想,存在另一个线程,从链表中逐个取出实例,并执行,执行过程中,当遇到chain.doFilter时,便查询chain,查看是否还有节 点。若有,则进入先一个实例中,执行request的预处理代码(chain.doFilter()之前的代码),然后,在执行 chain.doFilter(),继续检查链表,查看是否有节点,若有,继续嵌套,如下图所示。若已到链表结尾,则执行对应实例 chain.doFilter后的代码(对服务器的响应进行后处理)。然后,返回到前一个节点的chain.doFilter,继续执行前一个节点的”对 服务器响应进行后处理的代码”。执行流程,如下图所示。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值