更改 Java Struts 应用程序中的默认文件结构

发布于 2024-07-04 17:48:00 字数 796 浏览 7 评论 0原文

我已经使用 Struts 一段时间了,但是对于我即将完成的一个项目,我被要求将模板(velocity .vm 文件)、配置(struts.xml、persistence.xml)与主 WAR 文件分开。

我的默认结构如下:

    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)。

那么,有关于如何配置它的任何信息吗?

谢谢


好吧,更改模板位置的全部内容是将模板放在设计人员可访问的区域中,因此任何需要的修改,设计人员都可以将它们加载到他/她的计算机上,编辑并再次上传。 我认为这是一个常见的场景。 所以,我的研究中可能遗漏了一些东西。 也许我专注于将其配置在错误的地方......有什么想法吗?

I have been working with Struts for some time, but for a project I am finishing I was asked to separate Templates (velocity .vm files), configs (struts.xml, persistence.xml) from main WAR file.

I have all in default structure like:

    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

And I apparently can't find documentation about how to setup (probably in struts.xml) where my templates go, and where config files will be.

I think I will have to use configurations on the application server too (I am using Jetty 5.1.14).

So, any lights on how to configure it ?

Thanks


Well, the whole thing about changing templates place is to put the templates in a designer accessible area, so any modification needed, the designer can load them to his/her computer, edit, and upload it again. I think this is a common scenario. So, probably I am missing something in my research. Maybe I am focusing in configuring it on the wrong place ... Any thoughts ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

乱世争霸 2024-07-11 17:48:00

如果我正确理解了您关于 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。

If I understood your question about Struts config files right, they are specified in web.xml. Find the Struts servlet config param. The param-value can be a list of comma separated list of XML files to load. Eg:

<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>

See this Struts guide under 5.3.2. And yes, this applies to 2.x also.

秋叶绚丽 2024-07-11 17:48:00

具体来说,对于 persistence.xml,您可以将持久性单元放在单独的 JAR 中,您可以将其与 Web 应用程序 WAR 分开部署,或者将两者一起部署在 EAR 存档中,具体取决于您的应用程序服务器支持。 例如,JBoss 手册将其描述为 使用 EJB3 JAR 部署 EAR

对于 struts-config.xml,如果您想使用非标准位置,我希望您必须重写加载它的 Struts 代码。

我不知道 Velocity 模板。

一般来说,出于安全原因,Web 应用程序仅从 WAR 中加载资源。 您还可以使用其他技术,但您可能会发现尝试 weblets 更容易,这似乎是一个旨在让您从单独的 JAR 加载资源的框架。

For persistence.xml, specifically, you can put a persistence unit in a separate JAR, which you can deploy separately from your web application WAR, or both together in an EAR archive, depending on what your application server supports. For example, the JBoss manual describes this as Deploy EAR with EJB3 JAR.

For struts-config.xml I expect that you are going to have to override the Struts code that loads it, if you want to use a non-standard location.

I don't know about the Velocity templates.

In general, web applications only load resources from within the WAR, for security reasons. There are other techniques you can use, but you may find it easier to try weblets, which seems to be a framework designed to let you load resources from a separate JAR.

悲歌长辞 2024-07-11 17:48:00

您需要查看 WEB_INF 文件夹中的 velocity.properties 文件。恕我直言,您需要在此处更改模板根,更改属性 file.resource。加载器.path

希望能帮助到你,
彼得

You need to look into velocity.properties file in your WEB_INF folder.IMHO it is here where you need to change your template root changing the property file.resource.loader.path.

Hope it helps,
Petr

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文