struts2配置文件的位置

在struts2中struts.xml配置文件的默认放在"/WEB-INF/classes"目录下,在项目中是src下面。如下图:

struts2配置文件的位置
通常我们项目开发中,配置文件会放到指定目录下。如何才能让struts.xml配置文件随意的放在指定目录下呢?

其实struts2中支持struts.xml文件放到其它位置的,

我们来看一下,struts2的过滤器

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

下面是一部分源代码:

public class StrutsPrepareAndExecuteFilter implements StrutsStatics, Filter {

    private PrepareOperations prepare;

    private ExecuteOperations execute;

 

    public void init(FilterConfig filterConfig) throws ServletException { }

 

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { }

 

    public void destroy() { }

}

在struts2的filter中有三个方法,这里我们只关心init()方法,init(FilterConfig filterConfig)有一个入参,这是我们猜一下,在web.xml中容器配置filter后,服务开启后j2ee容器首先会调用filter类的init方法将其。

到这里我能猜出init(FilterConfig filterConfig)方法中的filterConfig参数一定是struts2的filter的初始化参数,struts2的filter默认会加载"/WEB-INF/classes"目录下的struts.xml文件。

那么只要在j2ee容器加载struts2的filter是将struts.xml的路径付给init()方法即可。

struts2配置文件的位置
左图为我的项目的strus.xml要存放的位置。
在web.xml中配置:
<!-- struts2 过滤器 star -->
<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
   </filter-class>
   <init-param>
    <param-name>filterConfig</param-name>
    <param-value>/WEB-INF/config-common/struts.xml</param-value>
   </init-param>
</filter>

<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

这样就可以了。

相关文章:

  • 2021-08-30
  • 2022-12-23
  • 2021-11-08
  • 2021-12-09
  • 2021-07-11
  • 2022-12-23
猜你喜欢
  • 2021-12-09
  • 2021-08-07
  • 2021-08-31
  • 2021-12-09
  • 2021-12-09
  • 2021-12-09
  • 2021-12-09
相关资源
相似解决方案