哪些特定用例需要 Struts2 之外但在同一个 Web 应用程序中的 servlet 过滤器?

Posted

技术标签:

【中文标题】哪些特定用例需要 Struts2 之外但在同一个 Web 应用程序中的 servlet 过滤器?【英文标题】:What specific use cases would call for a servlet filter outside of Struts2 but within the same web application? 【发布时间】:2017-04-09 07:52:55 【问题描述】:

在回答 Difference between Interceptors and Filters - Is this right? 中提出了这个问题,但仍未得到回答。

谁能提供一些关于此的实时示例? 因为我们可以同时使用过滤器和拦截器进行预处理和后处理 的一个请求。

在 Struts2 之外但在同一个 Web 应用程序中使用 servlet 过滤器的用例(场景)是什么?

【问题讨论】:

什么 servlet 过滤器? @RomanC,因为我们可以使用过滤器和拦截器来(前/后)处理 http 请求。什么是仅使用 servlet 过滤器(javax.servlet.Filter)而不是拦截器的具体用例,反之亦然。如果过滤器可以做这样的事情,那么有什么需要发明拦截器。我认为拦截器旨在拦截绕过 Struts 框架的请求(
)。
这不是真的,拦截器旨在拦截一个动作,并在它执行之前改变方式。 【参考方案1】:

我在将 Apache Shiro(一个登录框架)与 Struts2 webapp 结合使用时遇到了一些问题。因为 Struts2 正在处理登录操作(即使用 s: 标签),所以 Shiro 上的许多默认设置都被破坏了,例如内置的电子邮件验证、记住我等等。

这也导致 Struts2 验证停止在 Shiro 页面(登录和 createuser)上工作以及 JDBC 连接问题,因为我让 Struts2 对从 hibernate.cfg.xml ORM 配置构建的 sessionfactories 执行操作,以及 Shiro.ini 中的非 ORM 连接.

结合其他框架,有时您不希望 Struts2 处理这些操作,因为您会遇到我上面描述的某些问题。我敢肯定还有其他例子,但这是我经历过的。我丢失了 Apache Shiro 提供的许多内置功能,因为我有 struts 处理这些动作。

【讨论】:

以上是关于哪些特定用例需要 Struts2 之外但在同一个 Web 应用程序中的 servlet 过滤器?的主要内容,如果未能解决你的问题,请参考以下文章

struts2框架需要哪些配置文件

Struts2 中继承ActionSupport类,都需要哪些jar包啊?

LDAP 协议有哪些现代化的用例?

测试用例设计的原则

除了一个 servlet 之外,过滤器映射到 Struts2 的所有内容?

基于 web 访问 tomcat 目录之外的文件列表