Java servlet中的属性文件调用

时间:2014-07-21 15:24:06

标签: java servlets properties

我开始使用Java中的属性文件,我正在关注this tuto

它在我的应用程序中运行得非常好,除非我想在servlet中使用属性。 如果从servlet或正常"完成,则相同的函数调用不会给出相同的结果。类。 道路变得错误,我不知道为什么。 也许来自servlet的路径来自服务器。

input = new FileInputStream(filename);
prop.load(input);

当我用servlet执行这些行时,filename的路径在哪里?

1 个答案:

答案 0 :(得分:1)

  

当我用servlet执行这些行时,filename的路径在哪里?

这可能会对您有所帮助:

File file = new File(filename);
System.out.println(file.getAbsolutePath());

如果属性文件确实存在于您要保留的位置,那么您应该通过ServletContext#getResourceAsStream()将其作为Web内容资源获取。

示例代码:

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

Read more...


替代地

注册ServletContextListener以在服务器启动时加载Init参数,您可以随时更改配置文件位置,而无需更改任何Java文件。

加载属性并使其对其他类静态可见。

示例代码:

public class AppServletContextListener implements ServletContextListener {
    private static Properties properties;
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        String cfgfile = servletContextEvent.getServletContext().getInitParameter("config_file");
        properties.load(new FileInputStream(cfgfile));
    }

    public static Properties getProperties(){
        return properties;
    }
}

的web.xml:

<listener>
    <listener-class>com.x.y.z.AppServletContextListener</listener-class>
</listener>

<context-param>
      <param-name>config_file</param-name>
      <param-value>config_file_location</param-value>
</context-param>