在我的web应用程序中,我必须发送电子邮件到一组预定义的用户,如finance@xyz.example,所以我希望添加到一个.properties文件,并在需要时访问它。这是一个正确的程序,如果是,那么我应该把这个文件放在哪里?我使用的Netbeans IDE有两个单独的文件夹源和JSP文件。


当前回答

警告:如果您将配置文件放在WEB-INF/classes文件夹中,而您的IDE(例如Eclipse)执行了清理/重建操作,它将破坏您的conf文件,除非它们位于Java源目录中。BalusC的回答在选项1中暗示了这一点,但我想强调一下。

我知道如果你在Eclipse中“复制”一个web项目,它会从任何源文件夹中进行清理/重建。在我的例子中,我从我们的POJO java库中添加了一个“链接源目录”,它将编译到WEB-INF/classes文件夹。在该项目(不是web应用程序项目)中进行清理/重建会导致同样的问题。

我想过把我的confs放在POJO src文件夹中,但这些confs都是WEB-INF/lib文件夹中的第三方库(如Quartz或URLRewrite),所以这没有意义。我计划测试把它放在web项目“src”文件夹,当我得到它,但该文件夹目前是空的,有conf文件在它似乎不优雅。

所以我投票赞成将conf文件放在WEB-INF/commonConfFolder/filename中。属性,在classes文件夹旁边,这是Balus选项2。

其他回答

在web.xml文件中标记

<context-param>
        <param-name>chatpropertyfile</param-name>
        <!--  Name of the chat properties file. It contains the name and description                   of rooms.-->     
        <param-value>chat.properties</param-value>
    </context-param>

和聊天。属性您可以像这样声明属性

例如:

Jsp = Discussion about JSP can be made here.
Java = Talk about java and related technologies like J2EE.
ASP = Discuss about Active Server Pages related technologies like VBScript and JScript etc.
Web_Designing = Any discussion related to HTML, JavaScript, DHTML etc.
StartUp = Startup chat room. Chatter is added to this after he logs in.

假设你的代码正在寻找文件app.properties。通过在tomcat的bin目录中创建setenv.sh,将该文件复制到任何目录并将该目录添加到类路径。

在tomcat的setenv.sh中(如果这个文件不存在,创建一个,tomcat会加载这个setenv.sh文件。 # !/bin/sh CLASSPATH = " $类路径:/ home / user / config_my_prod /”

你不应该把属性文件放在。/webapps//WEB-INF/classes/app.properties中

Tomcat类加载器将使用WEB-INF/classes/中的类重载

一篇不错的文章: https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html

它只需要在类路径中(也就是确保它作为构建的一部分在.war中的/WEB-INF/classes下结束)。

您可以使用您的源文件夹,这样每当您构建时,这些文件都会自动复制到classes目录。

不要使用属性文件,而是使用XML文件。

如果数据太小,甚至可以使用web.xml访问属性。

请注意,任何这些方法都需要重新启动应用服务器才能反映更改。

警告:如果您将配置文件放在WEB-INF/classes文件夹中,而您的IDE(例如Eclipse)执行了清理/重建操作,它将破坏您的conf文件,除非它们位于Java源目录中。BalusC的回答在选项1中暗示了这一点,但我想强调一下。

我知道如果你在Eclipse中“复制”一个web项目,它会从任何源文件夹中进行清理/重建。在我的例子中,我从我们的POJO java库中添加了一个“链接源目录”,它将编译到WEB-INF/classes文件夹。在该项目(不是web应用程序项目)中进行清理/重建会导致同样的问题。

我想过把我的confs放在POJO src文件夹中,但这些confs都是WEB-INF/lib文件夹中的第三方库(如Quartz或URLRewrite),所以这没有意义。我计划测试把它放在web项目“src”文件夹,当我得到它,但该文件夹目前是空的,有conf文件在它似乎不优雅。

所以我投票赞成将conf文件放在WEB-INF/commonConfFolder/filename中。属性,在classes文件夹旁边,这是Balus选项2。