gpt4 book ai didi

java - 调用 java 属性文件时应该使用哪个路径?

转载 作者:搜寻专家 更新时间:2023-11-01 03:07:53 25 4
gpt4 key购买 nike

基本上我的项目模型是这样设置的:

模型文件夹
-----来源
-----bin等
-----PropertiesFolder1
--------File1.properties
--------File2.properties 等
-----PropertiesFolder2
--------File1.properties
--------File2.properties 等
-----MainPropertiesFile1.properties
-----MainPropertiesFile2.properties

我正在尝试将它与我的 View 一起使用,这是一个动态 Web 项目,我得到了属性文件,以便在更改后最终加载到我的 Web 项目中

foo.load(new FileInputStream("foo.properties"));  

foo.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("foo.properties"));

并将项目导出到 JAR 文件,然后将其包含在 WEB-INF/lib 中。但是,我必须向模型添加另一种方法,当我尝试测试该方法时,模型无法读取我的属性文件。我知道我可以使用具有完整路径的 FileInputStream 来获取在模型和 View 中工作的属性文件,但是还有其他选择吗?

我不想每次切换计算机时都更改完整路径(我在工作中使用 H:\username\...\Java\Workspace,而在家里它只是 C:\Java\工作区)
我也不想将我的属性文件移动到不同的文件夹;最后,我不想在每次测试模型或 View 时都更改加载属性文件的方式。
有没有办法做到这一点?

这让我发疯,我已经尝试了以下所有方法:

try 
{
foo.load(this.getClass().getResourceAsStream("foo.properties"));
//foo.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("foo.properties"));
//foo.getClass().getResourceAsStream("foo.properties");
//foo.load(new FileInputStream("foo.properties"));

} catch (IOException ex)
{
al.logIntoProgrammerLog(ex);
}

所有这些行要么在模型中工作,要么在 View 中工作。有什么方法可以通过模型中的相对路径调用这些属性文件,然后以某种方式将模型与 View 正确连接,以便找到并加载所有文件?
任何帮助将不胜感激;我是 Java 的新手,所以我可能会遗漏一些非常简单的东西。谢谢。

编辑:
很抱歉没有澄清这一点,模型是一个 Java 项目,而 View 是一个在本地 Tomcat Server v6.0 上运行的动态 Web 项目。

更好的(我希望)解释:

我的 View 有一个带有以下 doPost 方法的 LoginServlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String username = request.getParameter("usernameField");
String password = request.getParameter("passwordField");
ActivityLogger al = new ActivityLogger();

LoginController l_c = new LoginController();

//loginUser method will call my UserStorage class and
//will return true if UserStorage finds the User with those credentials in the db
//UserStorage is using a prepared sql statement stored in a properties file to find the User
//That properties file is not being read unless I specify the full path to it.
//Both Login and UserStorage are in the Model
if(l_c.loginUser(username, password))
{
//take user to welcome page
}
else
//display error
}

再次感谢

最佳答案

看看这个thread共享 .properties 文件的可能解决方案。但我建议您回顾一下这种方法,看看它是否真的是您想要的。更具体地说,如果您的 .properties 文件包含 SQL 查询,那么您确定 View 中需要它吗?听起来你可能想在那里做一个干净的分离。

关于java - 调用 java 属性文件时应该使用哪个路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16326954/

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