Java Servlet过滤器响应处理

时间:2015-03-16 08:51:23

标签: java servlet-filters

请注意:如果有关此问题的答案的任何内容与实现有关,请假设Tomcat或Jetty的最新/现代版本。

我已阅读的任何教程(例如java.servlet.Filterthe official Oracle article和{}都没有涵盖this one基础知识的详细信息。 {3}})。

具体来说,有两种情况,doFilter的行为似乎没有记录在任何地方:

  • doFilter基本上什么都不做(不会向ServletResponse打印任何内容,也不会调用FilterChain#doFilter)时,我称之为 No-Op Filter ;和
  • doFilter打印对ServletResponse 的响应时,会调用FilterChain#doFilter,我称之为 Fire和忘记过滤器 < / LI>

对于无操作过滤器:

  • 如果既没有调用FilterChain#doFilter也没有写入ServletResponse,那么我假设过滤器会阻止请求,是吗?
  • 无论哪种方式,在这种情况下,返回的HTTP状态代码是什么?
  • 回复中发回的实体是什么?空?

对于Fire和忘记过滤器:

  • 当一个人都写入ServletResponse并调用FilterChain#doFilter时会发生什么?例外?过滤器以某种方式缓存写入的响应,然后在上游过滤器/资源返回响应时附加到它?
  • 发回的HTTP状态代码是什么?
  • 当抛出ServletException时,这是否会自动映射到具有例外getMessage()的响应实体的HTTP 404?

0 个答案:

没有答案