Spring DispatcherServlet 与过滤器的关系

Jac*_*ack 2 spring servlets spring-mvc servlet-filters

Spring MVC 使用 aDispatcherServlet将控制路由到适当的控制器。但是过滤器在哪里适合流?如果我指定过滤器来执行会话管理或身份验证,过滤器是否总是在 DispatcherServlet 之前调用?

我的困惑来自于他们都指定了一个 URL 模式。如果它们都提供相同的 url 模式会发生什么?

Tom*_*icz 6

这并不是真正特定于 Spring 和 Spring MVC。通常,过滤器总是servlet之前调用。当您有多个过滤器和一个与给定 URL 模式匹配的 servlet 时,所有过滤器都会按照<filter-mapping>定义的顺序首先执行,而 servlet 最后执行。

通过这种方式,您可以即时修改请求,甚至完全忽略 servlet。