为什么转发的请求会再次通过过滤器链?

ems*_*tol 4 grails servlets grails-controller servlet-filters

我为Grails app实现了不常用的架构,因为我制作了前控制器,它只能进一步转发请求(基于某些标准).我还将locale解析器实现为http servlet请求过滤器.事实证明,转发的请求再次通过过滤器链传递.所以流程看起来像这样:

  1. 请求到达grails应用程序
  2. 请求通过我的过滤器
  3. 前端控制器获取请求并进一步转发
  4. 转发的请求再次通过我的过滤器
  5. 后台控制器获取请求

在写这篇文章的同时,我提出了如何省略问题(我的具体实现).但我仍然很好奇它为什么会发生?前进应该在幕后工作.Java EE规范没有说明这种行为(转发javadoc).

Boz*_*zho 6

<filter-mapping>元素中有前向<dispatcher>选项.它包括FORWARD.您必须列出要应用过滤器的选项(请求,错误,包含)并向前退出.