访问webcontent文件夹中的.properties文件,形成servlet项目

时间:2010-12-13 12:44:21

标签: java servlets

我在从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文件夹下时应该解决这个问题吗?

3 个答案:

答案 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访问。