gpt4 book ai didi

java - 如何在java EE中获取Web项目的根路径

转载 作者:行者123 更新时间:2023-12-01 23:24:00 25 4
gpt4 key购买 nike

我正在将 Java EE 用于我的动态 Web 项目。我将 sitemap.xml 文件放在根路径中。现在我需要该文件的路径进行修改。我尝试:

String path = getClass().getClassLoader().getResource(".").getPath() +"\\sitemap.xml";

但是系统找不到指定的文件。我使用的是window,当我将项目上传到linux主机时,我需要更改什么?

最佳答案

ClassLoader#getResource() 只能查找类路径资源,而不是 Web 资源。 sitemap.xml 显然是一个 Web 资源。您应该使用ServletContext#getResource()相反,或其 JSF 对应项 ExternalContext#getResource() — 正如您的问题历史记录所示,您正在使用 JSF。

URL url = externalContext.getResource("/sitemap.xml");

或者,仅供阅读:

InputStream input = externalContext.getResourceAsStream("/sitemap.xml");

通常,您根本不应该对正在使用的实际磁盘文件系统路径感兴趣。这通常是临时文件夹位置,甚至是内存中的位置。

<小时/>

与具体问题无关,写它是一个完整的故事。类路径资源和 Web 资源都不可从 Java EE 应用程序内部写入。即使这是可能的(即它不是内存中的资源),每当您重新部署 WAR 或什至重新启动服务器时,所有更改都会完全丢失,原因很简单,这些更改不会反射(reflect)在原始版本中WAR 文件。鉴于“sitemap.xml”的具体文件名,我的印象是您打算进行更永久的存储。在这种情况下,我强烈建议寻找不同的解决方案。例如。将文件存储在 WAR 之外的固定路径中,或者只是数据库中的数据结构。

关于java - 如何在java EE中获取Web项目的根路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20284112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com