在Java Struts应用程序中更改默认文件结构
我已经在Struts上工作了一段时间,但是对于一个我正在完成的项目,我被要求从主WAR文件中分离出模板(速度.vm文件),配置(struts.xml,persistence.xml)。
我所有的都采用默认结构,例如:
application |-- META-INF -- Some configs are here |-- WEB-INF -- others here | |-- classes | | |-- META-INF | | `-- mypackage | | `-- class-files | `-- lib |-- css `-- tpl -- Template dir to be relocated
而且我显然找不到有关如何设置模板的文档以及配置文件的位置的文档(可能在struts.xml中)。
我想我也必须在应用程序服务器上使用配置(我正在使用Jetty 5.1.14)。
那么,任何指示灯如何配置呢?
谢谢
好了,更改模板位置的整个过程就是将模板放在设计人员可访问的区域,因此,需要进行任何修改,设计人员都可以将其加载到他/她的计算机上,进行编辑,然后再次上传。我认为这是常见的情况。因此,可能我的研究中缺少一些东西。也许我专注于将其配置在错误的位置上...有什么想法吗?
解决方案
回答
具体来说,对于persistence.xml,我们可以将一个持久性单元放在一个单独的JAR中,我们可以将其与Web应用程序WAR分开部署,或者将两者同时部署在EAR归档中,具体取决于应用程序服务器支持的内容。例如,JBoss手册将其描述为"使用EJB3 JAR部署EAR"。
对于struts-config.xml,如果要使用非标准位置,我希望我们将不得不覆盖加载它的Struts代码。
我不了解Velocity模板。
通常,出于安全原因,Web应用程序仅从WAR内加载资源。我们可以使用其他技术,但是我们可能会发现尝试使用Weblet更容易,它似乎是一个旨在让我们从单独的JAR加载资源的框架。
回答
我们需要查看WEB_INF文件夹中的velocity.properties
文件。恕我直言,在这里我们需要更改模板根目录,更改属性file.resource.loader.path
。
希望能帮助到你,
彼得
回答
如果我正确理解了我们有关Struts配置文件的问题,则在web.xml中指定它们。找到Struts Servlet配置参数。 param-value可以是要加载的XML文件列表,以逗号分隔。例如:
<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value> WEB-INF/config/struts-config.xml, WEB-INF/config/struts-config-stuff.xml, WEB-INF/config/struts-config-good.xml, WEB-INF/config/struts-config-bad.xml, WEB-INF/config/struts-config-ugly.xml </param-value> </init-param> ... </servlet>
请参阅5.3.2下的本Struts指南。是的,这也适用于2.x。