javax.servlet.FilterChain的目的是什么?

bar*_*lay 4 java servlets servlet-filters

我继承了一个大量使用FilterChain的Struts 1应用程序,我不明白这个极其模糊的代码的好处.

"在Servlet API中,当您想要控制,预处理和/或后处理特定请求时,通常会使用Servlet.但是当您想根据特定条件过滤/修改常见请求和/或响应时,过滤器就更多了适当."

我的应用中的每个请求都基于特定条件,例如商家ID或搜索字词.但似乎将请求放在一整套内容中,这些内容完全隐藏了开发人员试图追踪错误原因的内容,这很可怕.

Bal*_*usC 5

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


bar*_*lay 5

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