哪些特定用例需要 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 中继承ActionSupport类,都需要哪些jar包啊?