struts2 StrutsPrepareAndExecuteFilter自定义

时间:2016-04-26 07:03:18

标签: java filter struts2 struts2-interceptors interceptorstack

我们正在使用struts2 StrutsPrepareAndExecuteFilter。 web.xml中的配置是:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    <init-param>
      <param-name>struts.devMode</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

我们需要在这个常见的拦截器中实现身份验证/权限。 什么是简单的方法呢?我们可以创建一个自定义拦截器,扩展StrutsPrepareAndExecuteFilter并在其中实现我们的实现吗?

1 个答案:

答案 0 :(得分:1)

您永远不应该对org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter进行自定义。

即使它在其他框架中不是final而不是package protected,也不需要扩展该过滤器。

您应该学习Struts2架构的基础知识。来自Nutshell

你可以看到基本的Struts2流程。 Struts2被实现为一个过滤器来处理所有请求,并通过一堆拦截器将它们分配给动作,这些拦截器利用了Struts2框架的大部分功能和特性。

因此,如果您想添加一些功能,如身份验证,那么您应该首先考虑通过身份验证拦截器进行扩展。应该将此拦截器配置为在传入请求的每个操作上调用。了解它是如何在struts2 adding interceptors in struts.xml for all action class中完成的。

后面有一个链接可用于编写自定义拦截器以进行身份​​验证。见Is there a way to redirect to another action class without using on struts.xml