关于doFilter()有无的问题

关于doFilter()有无的问题

老师请问老师视频中讲到若把代码放在chain.doFilter(request,response);代码之后,后面的代码则会在响应时倒序处理,那么如果不写chain.doFilter(request,response);这段代码后doFilter()方法中的代码还会被执行吗,如果会执行那么是在请求时执行还是响应时执行呢?执行的顺序又是如何呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2020-05-13 13:45:29

 同学你好,如果不写chain.doFilter(request,response);会执行doFilte中的代码,但是其他过滤器不会执行
比如以下代码中,C中没有调用chain.doFilter;那么他只会执行C中的代码,A和B不会执行 

http://img1.sycdn.imooc.com//climg/5ebb892b09cbe99d04760276.jpg

http://img1.sycdn.imooc.com//climg/5ebb8950096612a510420389.jpg

是在请求时执行的

执行顺序就是先执行doFilter()里的代码,最后检查有没有调用chain.doFilter;如果有就按照<filter-mapping>中配置的顺序执行,调用第二个filter 

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 qq_旧安_0 #1
    老师假设FilterC中有chain.doFilter,并且chain.doFilter后也有代码,但是FilterB中没有chain.doFilter,那么FilterC中chain.doFilter中的代码还会被执行吗,为什么?
    2020-05-13 13:56:24
  • 同学你好 FilterC中chain.doFilter后的代码不会被执行。 因为FilterB中的doFilter()方法中没有chain.doFilter放行过滤器链,所以FilterB之后的过滤器以及chain.doFilter后的代码都不会被执行 建议同学自己动手试一下 如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2020-05-13 18:15:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师