过滤器中doFilter()方法执行次数的问题

过滤器中doFilter()方法执行次数的问题

按照过滤链的执行流程,接收请求时过滤一次,返回响应时执行一次,单个过滤器中的doFilter()方法在完整的一次请求响应中,不应该是执行2次吗?为什么之前讲解的案例中doFilter()只执行了一次呢?https://img1.sycdn.imooc.com//climg/6417f01209638cee21841230.jpghttps://img1.sycdn.imooc.com//climg/6417f121092dc80222261250.jpg

正在回答

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

1回答

同学你好,发送请求时,会执行chain.doFilter()方法前的代码,在遇到chain.doFilter()方法时,会将请求发送到下一个过滤器或者Servlet中。

    而当响应时,也会经过过滤器,但是执行的是chain.doFilter()方法下面的代码。所以doFilter()方法只执行了一次,并且只有一个输出语句。

祝学习愉快!

  • https://img1.sycdn.imooc.com//climg/6491980a09ce1a8723020820.jpg

    那在字符集过滤器项目中,关于字符集的设置就全是在过滤器处理请求时,完成的吗?返回响应时,过滤器并没有改动,因为chain.doFilter()后没代码。能问一下,这是怎么实现的吗?他怎么能定位回去,是通过方法的嵌套完成的吗?一层层里层方法返回之后,接着执行下面的代码?

    2023-06-20 20:20:06
  • 同学你好,1、同学是想问响应的字符集是怎么设置的吗?如果是,则字符集是由过滤器处理的,使用通过resp进行设置的。

    2、HttpServletResponse对象代表服务器的响应,该对象可以处理和响应有关的东西,如状态码,响应体等。因已经通过resp进行了设置字符集,如下所示:所以可以根据请求的响应一起返回(返回时走的是chain.doFilter()下面的代码)。

    https://img1.sycdn.imooc.com//climg/649254d409f8d7a013820338.jpg

    祝学习愉快!

    2023-06-21 09:41:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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