在我的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。
推荐文章
- 在哪里放置和如何在基于servlet的应用程序读取配置资源文件?
- Maven依赖Servlet 3.0 API?
- JSF资源库的用途是什么,应该如何使用它?
- 获取Spring应用程序背景信息
- 获取操作系统级别的系统信息
- getResourceAsStream返回null
- Eclipse字体和背景颜色
- .NET核心单元测试-模拟IOptions<T>
- Android Scala编程
- 如何改变流浪者'默认'机器名?
- Eclipse添加Tomcat 7空白服务器名
- 使用80端口运行Node.js时的最佳实践(Ubuntu / Linode)
- 在Java中读取资源文本文件到字符串
- 为android资源/值添加浮点值
- 使用Java EE api替换废弃的JPMS模块