在哪里放struts.xml

时间:2009-05-15 18:55:04

标签: struts2 configure

使用Struts2,我们必须在类路径中使用struts.xml,因此它不再适用于WEB-INF。因此我部署项目的方式是将其粘贴在WEB-INF/classes下,并将其包括../struts2.xml

2个问题:

  1. 当我进行重建时,Eclipse会清除classes文件夹 删除struts.xml
  2. Eclipse不会在项目浏览器中显示classes文件夹,所以 它是一个不利于配置文件的地方。
  3. Struts2 Eclipse开发人员如何做到这一点?

6 个答案:

答案 0 :(得分:13)

您可以将struts.xml放在源目录的根目录下,也可以设置其他资源源目录并将其放在那里。 Eclipse在编译时非常高兴地将它复制到WEB-INF / classes。

答案 1 :(得分:2)

我迟到了,我们可以在web应用程序的类路径中的任何目录中配置struts.xml,但是使用web.xml中过滤器配置的“config”init参数提供位置,如下所示,如果我的struts.xml文件位于“/ com / resources /”目录中。

   <filter>
        <filter-name>action</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
         <init-param>
            <param-name>config</param-name>
            <param-value>struts-default.xml,struts-plugin.xml,/com/resources/struts.xml</param-value>
         </init-param>
    </filter>

如果我们不提供配置初始化参数struts2默认需要3个值“struts-default.xml,struts-plugin.xml,struts.xml”,你可以在下面看到struts2 Dispatcher类代码,它们将配置这些3个文件到配置管理器。

String configPaths = (String)this.initParams.get("config");
if (configPaths == null) {
  configPaths = "struts-default.xml,struts-plugin.xml,struts.xml";
}
String[] files = configPaths.split("\\s*[,]\\s*");
for (String file : files)
  if (file.endsWith(".xml")) {
    if ("xwork.xml".equals(file))
      this.configurationManager.addContainerProvider(createXmlConfigurationProvider(file, false));
    else
      this.configurationManager.addContainerProvider(createStrutsXmlConfigurationProvider(file, false, this.servletContext));
  }

答案 2 :(得分:1)

我没有使用Eclipse,所以这个答案并不是特定于你的要求,但我使用Maven,因此我们拥有应用程序所需的所有“资源”,这些资源位于名为“resources”的单独文件夹中,并且构建应用程序时这些文件会自动复制到适当的位置。在Netbeans中,文件夹中的文件是可用的,我知道有人使用类似设置的eclipse。

我应该指出,我们的项目是从appfuse开始的,因此大部分配置都是预制的。你可以看看它是如何在那里完成的。

答案 3 :(得分:0)

在struts 2项目中,struts.xml文件与sql(Java Resources)文件夹一起添加了包和库。

请参考下面的图片。

Struts 2 project directory view in eclipse

如果您想了解有关struts 2项目结构的更多信息,请访问this link

注意:在eclipse中,不允许直接在src文件夹中粘贴文件。因此,您需要先将其粘贴到项目中的任何其他位置(例如,在“WebContent”文件夹中),然后使用移动功能将其放在正确的位置(即'src'文件夹)。

答案 4 :(得分:0)

您可以将struts.xml文件放在src(Java Resources)包中。 当编译过程struts.xml文件将在ROOT / WEB-INF / classes目录中生成。

如果再次出现相同的错误,请再次检查struts操作。 检查应用程序的已部署路径,您可以找到所需内容。 (struts.xml文件)

答案 5 :(得分:0)

使用Struts 1.2,需要将struts-config.xml放在类路径中(在WEB-INF文件夹下),但是对于Struts 2.0,它必须位于src / main / resources文件夹中。

请参阅此处的文档Struts 2 Documentation

我在这个目录中粘贴了struts.xml,项目执行正常。

My project structure looks like this