如何从WEB-INF读取db.properties文件

时间:2016-11-25 06:30:48

标签: java file

我正在使用netbeans。我想从WEB-INF文件夹中读取db.properties文件。但它返回null;

InputStream input = getClass().getClassLoader().getResourceAsStream("db.properties");   // returning null

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("/db.properties"); // returning null.

但是当我把我的db.properties文件放在Web_INF / classes上面时,代码工作正常。

以下代码抛出在两种情况下都找不到文件。 (在Web-INF / db.properties和Web-INF / classes / db.properties中)。

FileInputStream fileInput = new FileInputStream(new File("db.properties")); //throws exception

任何线索。

package com.towertech.db;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
  import org.apache.tomcat.jdbc.pool.*;

public class DataSource 
{
    PoolProperties poolProperties;
    org.apache.tomcat.jdbc.pool.DataSource datasource;
    ClassLoader classLoader;
    InputStream input;
    FileInputStream fileInput;
    Properties properties;

public org.apache.tomcat.jdbc.pool.DataSource getDatasource() {
    return datasource;
}

public void setDatasource(org.apache.tomcat.jdbc.pool.DataSource datasource) {
    this.datasource = datasource;
}

public DataSource() throws FileNotFoundException, IOException
{
    input = getClass().getClassLoader().getResourceAsStream("/WEB-INF/db.properties");
    input = Thread.currentThread().getContextClassLoader().getResourceAsStream("/WEB-INF/db.properties");
    fileInput = new FileInputStream(new File("/WEB-INF/db.properties"));
    if(input == null)
        properties.load(fileInput);  
    else
        properties.load(input);  
    poolProperties = new PoolProperties();
    poolProperties.setDbProperties(properties);
    datasource.setPoolProperties(poolProperties);
}

public static void main(String[] args) throws IOException
{
    DataSource ds = new DataSource();
    System.out.println(ds.toString());

}

public Connection getConnection() throws SQLException
{
    return datasource.getConnection();
}

public void returnConnection(Connection con) throws SQLException
{
    con.close();
}    
}

1 个答案:

答案 0 :(得分:1)

您可以使用WEB-INF对象读取Spring控制器内servletcontext下的属性文件,如下所示:

@Controller
public class MyController {

   @RequestMapping(value="/myMapping")
   public R myMethod(HttpServletRequest request, ...) {

      //Get the servletcontext from request
      InputStream input = request.getSession().getServletContext().
             getResourceAsStream("/WEB-INF/db.properties");

     //read properties

   }   
}