在 Struts2 过滤器之前调用自己的过滤器

Posted

技术标签:

【中文标题】在 Struts2 过滤器之前调用自己的过滤器【英文标题】:Invocation of own filter before Struts2 filter 【发布时间】:2019-05-09 22:46:31 【问题描述】:

我试图在“struts2”过滤器之前调用一个普通的 servlet 过滤器。如果我将过滤器声明放在 struts2 过滤器上方,我可以捕获基于 struts 的 URL,但是当此自定义过滤器放置在 web.xml 中的“struts2”过滤器下方时,它无法捕获基于 struts 的 URL(/某事.行动)。除了将它放在 web.xml 中的“struts2”过滤器的顶部之外,还有什么方法可以调用我的过滤器?

【问题讨论】:

【参考方案1】:

如果 S2 应该处理请求,则 S2 过滤器结束过滤器链。

这是因为一旦进入 S2 功能,就假定其他功能将由 S2 处理,例如,通过拦截器。

这很容易改变:扩展或复制默认 S2 过滤器,更新 doFilter 方法,并在 execute.executeAction(request, response, mapping) 调用之后恢复 chain.doFilter 调用(大致)。

您需要验证这是否按预期工作(应该可以,但我没有测试过)。

【讨论】:

以上是关于在 Struts2 过滤器之前调用自己的过滤器的主要内容,如果未能解决你的问题,请参考以下文章

struts2入门——登陆验证熟悉struts2部署

struts2 框架处理流程

struts2配置过滤器与拦截器

struts2的配置

Struts2拦截器和过滤器的区别?

struts2的工作流程?