我在从servlet中的webcontent文件夹加载(.properties)文件时遇到了一些问题。 我发现的解决方案似乎不起作用。我在尝试读取文件时遇到异常。在我的文件夹和包结构下面以及代码部分。
我做错了什么?
Webcontent文件夹结构
WebContent
- WEB-INF
- languages
-- language.properties
- ....
包结构
package x.y.z.aa
- Servlet.java
package x.y.z.ab
- PropertyLoader.java
Servlet.java代码
public void init(ServletConfig config) throws ServletException {
super.init(config);
servletContext = this.getServletContext();
PropertyLoader = new PropertyLoader(servletContext);
}
PropertyLoader.java
public PropertyLoader(ServletContext context) {
super();
try{
properties.load(context.getResourceAsStream("/languages/language.properties"));
System.out.println(languages.get("test"));
} catch (Exception e){
System.out.println("Error reading properties file");
System.out.println(e.getMessage());
}
}
对不起。我忘了实例化Properties实例变量。感谢关于HTTP访问的提示,当它位于当前位置时。当我把它放在WEB-INF文件夹下时应该解决这个问题吗?
答案 0 :(得分:2)
建议将此类文件放在WEB-INF
中。如果文件存在,则以下内容应该有效(实际上它应该在您当前的设置中工作)。只需确保文件格式正确 - 即它是一个真正的属性文件。
properties.load(context
.getResourceAsStream("/WEB-INF/languages/language.properties"));
答案 1 :(得分:0)
您应该考虑更改属性文件位置。在当前位置,可以通过简单的HTTP GET请求(如http://host:8080/AppContext/languages/language.properties)来接收内容,这可能被视为安全问题。
此外,如果您可以发布您获得的例外情况,可以通过更多帮助找到您的代码所发生的事情。
答案 2 :(得分:0)
是的,通常你会把这样的东西放在WEB-INF文件夹中。除非你真的希望它可以出于某种原因通过HTTP访问。