javaservlet中的属性文件调用

javaservlet中的属性文件调用,java,servlets,properties,Java,Servlets,Properties,我从Java中的属性文件开始,下面是 它在我的应用程序中运行得非常好,除非我希望在servlet中有一个属性。 如果相同的函数调用是从servlet或“普通”类完成的,则不会给出相同的结果。 这条路走错了,我不知道为什么。 可能来自servlet的路径来自服务器 input = new FileInputStream(filename); prop.load(input); 当我用servlet执行这些行时,filename的路径在哪里 当我用servlet执行这些行时,filename的路径

我从Java中的属性文件开始,下面是

它在我的应用程序中运行得非常好,除非我希望在servlet中有一个属性。 如果相同的函数调用是从servlet或“普通”类完成的,则不会给出相同的结果。 这条路走错了,我不知道为什么。 可能来自servlet的路径来自服务器

input = new FileInputStream(filename);
prop.load(input);
当我用servlet执行这些行时,
filename
的路径在哪里

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

这可能会帮助您:

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

如果属性文件确实在您想要保存它的地方,那么您应该通过获取它作为web内容资源

示例代码:

properties.load(getServletContext()
                 .getResourceAsStream("/WEB-INF/properties/sample.properties"));
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;
    }
}


交替地 注册以在服务器启动时加载Init参数,您可以在不更改任何java文件的情况下随时更改配置文件位置

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

示例代码:

properties.load(getServletContext()
                 .getResourceAsStream("/WEB-INF/properties/sample.properties"));
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>

com.x.y.z.AppServletContextListener
配置文件
配置文件位置