请注意:如果有关此问题的答案的任何内容与实现有关,请假设Tomcat或Jetty的最新/现代版本。
我已阅读的任何教程(例如java.servlet.Filter
,the official Oracle article和{}都没有涵盖this one基础知识的详细信息。 {3}})。
具体来说,有两种情况,doFilter
的行为似乎没有记录在任何地方:
doFilter
基本上什么都不做(不会向ServletResponse
打印任何内容,也不会调用FilterChain#doFilter
)时,我称之为 No-Op Filter ;和doFilter
打印对ServletResponse
和的响应时,会调用FilterChain#doFilter
,我称之为 Fire和忘记过滤器 < / LI>
对于无操作过滤器:
FilterChain#doFilter
也没有写入ServletResponse
,那么我假设过滤器会阻止请求,是吗?对于Fire和忘记过滤器:
ServletResponse
并调用FilterChain#doFilter
时会发生什么?例外?过滤器以某种方式缓存写入的响应,然后在上游过滤器/资源返回响应时附加到它?ServletException
时,这是否会自动映射到具有例外getMessage()
的响应实体的HTTP 404?