【问题标题】:What specific use cases would call for a servlet filter outside of Struts2 but within the same web application?哪些特定用例需要 Struts2 之外但在同一个 Web 应用程序中的 servlet 过滤器?
【发布时间】: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 框架的请求(
    )。
  • 这不是真的,拦截器旨在拦截一个动作,并在它执行之前改变方式。

标签: servlets struts2 servlet-filters


【解决方案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 处理这些动作。

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 2011-11-01
    • 2012-11-10
    • 2016-11-17
    • 2018-04-23
    • 2011-04-20
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多