struts2配置文件的位置

struts2配置文件的位置

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


通常我们项目开发中,配置文件会放到指定目录下。如何才能让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()方法即可。


左图为我的项目的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>

这样就可以了。

posted @ 2013-02-05 15:44  Chendisheng  阅读(1177)  评论(0编辑  收藏  举报