5

我继承了一个 Struts 1 应用程序,该应用程序大量使用了 FilterChain,但我不明白这个极其混淆代码的好处。

“在 Servlet API 中,当您想要控制、预处理和/或后处理特定请求时,通常会使用 Servlet。但是当您想要根据特定条件过滤/修改常见请求和/或响应时,过滤器要多得多合适的。”

我的应用程序中的每个请求都基于特定条件,例如商家 ID 或搜索词。但似乎将一个请求放在一个完整的东西链中,完全隐藏了开发人员试图追踪错误原因的情况,这是疯了。

4

2 回答 2

7

FilterChain#doFilter()调用只是将 HTTP 请求继续到目的地,遵循与您一开始没有使用过滤器完全相同的路径。这通常是一个 servlet 类,甚至是一个 JSP 文件。因此,为了调试有问题的代码,最好在目标代码中放置一个断点,如果它不包含任何感兴趣的代码,则不要在过滤器中。

于 2013-02-04T19:11:10.407 回答
6

我的同事(未在 SO 上注册)解释说,这是为了将全局功能应用于您不想在每个控制器中执行的应用程序,例如检查用户是否已登录。

于 2013-02-04T19:28:56.557 回答