首页 > 代码库 > 实战-JavaWweb的Servlet和Filter运行关系(三)

实战-JavaWweb的Servlet和Filter运行关系(三)

    本文继续实践“实战-JavaWweb的Servlet和Filter运行关系(一) ”一文中留下的问题。


问题二:

在Filter没有执行chain.doFilter(request,response)方法的时候,response对象输出的内容有那些部分组成的。


在(文一)的基础上对RequestFilter做了略微改动,改动部分如下:

wKioL1RUkISjzUpZAABceMbTEfs160.jpg

图c-1

说明:请求TestServlet,如何没有参数“p”则不执行china.doFilter方法,如果存在则执行。

下面对这两种情况进行实验后的结果图所示:


wKiom1RUkNjixUHjAAFex_Uso60000.jpg

图c-2


wKioL1RUkXqwoCLXAACRdwHbu7U314.jpg

图c-3


从图c-2和c-3看TestServlet没有执行,因为请求没有参数“p”,输出内容由Response对象在Filter的doFilter方法执行前+后的输出内容组成。

wKioL1RUkTSwP4X3AAF9EXiBb1U411.jpg

图c-4

从图c-4看请求有参数“p”,并且执行了TestServlet,输出内容由Response对象在Filter的doFilter方法执行前+Serlvet执行+doFilter执行后的输出内容组成。


由此可知,输出的内容由Response对象在Filter中+Servlet中输出的内容组成。至于那一部分内容要最终是否输出取决于Response执行输出方法是否执行。

本文出自 “野马红尘” 博客,谢绝转载!

实战-JavaWweb的Servlet和Filter运行关系(三)