更改 Java Struts 应用程序中的默认文件结构
-
09-06-2019 - |
题
我已经使用 Struts 一段时间了,但是对于我即将完成的一个项目,我被要求将模板(velocity .vm 文件)、配置(struts.xml、persistence.xml)与主 WAR 文件分开。
我的默认结构如下:
application |-- 元信息文件 -- 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)。
那么,有关于如何配置它的任何信息吗?
谢谢
嗯,更改模板位置的全部内容是将模板放在设计人员可访问的区域中,因此任何需要的修改,设计人员都可以将它们加载到他/她的计算机上,编辑并再次上传。我认为这是一个常见的场景。所以,我的研究中可能遗漏了一些东西。也许我专注于将其配置在错误的地方......有什么想法吗 ?
解决方案
如果我正确理解了您关于 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>
看到这个 Struts指南 5.3.2 下。是的,这也适用于 2.x。
其他提示
为了 持久性.xml, 具体来说,您可以将持久性单元放在单独的 JAR 中,您可以将其与 Web 应用程序 WAR 分开部署,或者将两者一起部署在 EAR 存档中,具体取决于您的应用程序服务器支持的内容。例如,JBoss 手册将其描述为 使用 EJB3 JAR 部署 EAR.
为了 struts-config.xml 如果您想使用非标准位置,我希望您必须重写加载它的 Struts 代码。
我不知道 Velocity 模板。
一般来说,出于安全原因,Web 应用程序仅从 WAR 中加载资源。您还可以使用其他技术,但您可能会发现尝试起来更容易 网页小程序, ,这似乎是一个旨在让您从单独的 JAR 加载资源的框架。
你需要调查一下 velocity.properties
文件位于您的 WEB_INF 文件夹中。恕我直言,您需要在这里更改您的 模板根 改变财产 file.resource.loader.path
.
希望它有帮助,彼得