java – 在Servlet/JSP中加载属性文件[复制]

前端之家收集整理的这篇文章主要介绍了java – 在Servlet/JSP中加载属性文件[复制]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Where to place and how to read configuration resource files in servlet based application?6个
我已经从我的Java项目创建了一个jar,并希望在JSP Servlet项目中使用相同的jar.我正在尝试加载一个属性文件,让我说我的JSP Servlet项目中的sample.properties保存在WEB / properties / sample.properties中,应该由jar中的类读取.我在类中使用以下代码wriiten jar来访问它.
Properties prop=new Properties();
prop.load(/WEB-INF/properties/sample.properties);

但每次我都得到fileNotFound异常.
请建议我的解决方案.

这是结构

WEB-INF
      |
       lib
          |
           myproject.jar
                       |
                        myclass (This class needs to read sample.properties)
      |
       properties
                 |sample.properties

解决方法

/ WEB-INF文件夹不是类路径的一部分.所以这里任何回答都没有意思,建议 ClassLoader#getResourceAsStream()永远不会奏效.它只有在属性文件放在/ WEB-INF / classes中才有效,这确实是类路径的一部分(在像Eclipse这样的IDE中,只需将它放在Java源文件夹的根目录就足够了).

如果属性文件确实存在于您希望保留的位置,那么您应该在ServletContext#getResourceAsStream()之前将其作为Web内容资源.

假设你在HttpServlet中,这应该做:

properties.load(getServletContext().getResourceAsStream("/WEB-INF/properties/sample.properties"));

(getServletContext()继承自servlet超类,你不需要自己实现它;所以代码是原样的)

但是如果该类本身根本不是HttpServlet,那么你真的需要将属性文件移动到类路径中.

也可以看看:

> Where to place and how to read configuration resource files in servlet based application?

猜你在找的Java相关文章