1

我正在尝试读取 WEB-INF 中的属性文件,但我得到的只是空的。我对 Java Web 开发完全陌生。

我的初始化方法:

 @Override
    public void init() throws ServletException {
        try {
            String path = "";
            path = "/WEB-INF/" + getServletContext().getInitParameter("monpesapropertiesfile");
            String realPath;
            realPath = getServletContext().getRealPath(path);
            if(realPath != null){
                 InputStream fis = new FileInputStream(realPath);
                 prop.load(fis);
            }
        } catch (Exception asd) {
            System.out.println(asd.getMessage());
        }
    }
    public String getDatabaseUrl() {
        String url = prop.getProperty("database.url");
        return url;
    }

我的 Web.xml:

<context-param>
        <param-name>monpesapropertiesfile</param-name>
        <param-value>monpesaproperties.properties</param-value>
    </context-param>
    <servlet>
        <servlet-name>ReadProperty</servlet-name>
        <servlet-class>com.monpesa.properties.ReadProperty</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

我知道我一定遗漏了一些东西,因为 String getDataBaseUrl 返回 null。请帮忙。

4

2 回答 2

7

看一下这个:

http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/ServletContext.html#getResource(java.lang.String)

<context-param>
    <param-name>monpesapropertiesfile</param-name>
    <param-value>/WEB-INF/monpesaproperties.properties</param-value>
</context-param>

public void init() throws ServletException {
    try {
        String path = getServletContext().getInitParameter("monpesapropertiesfile");
        final InputStream is = getServletContext().getResourceAsStream(path);
        try {
            prop.load(is);
        } finally {
            is.close();
        }
    } catch (Exception asd) {
        System.out.println(asd.getMessage());
    }
}
于 2013-09-19T12:29:40.977 回答
3

我要么

1)将属性放入WEB-INF/classes并用于getClass().getResourceAsStream()加载它。

或者

2)将完整的文件路径放入web.xml(并将文件放在Web应用程序之外的用户可编辑的配置区域中)

于 2013-09-19T12:09:00.510 回答