指定数据库连接的目录路径

时间:2014-04-08 09:56:36

标签: java mysql

我有一个动态网络项目,因为我正在为数据库连接创建config.properites文件。

SampleProject 
  ->WebContent
    ->WEB_INF
       ->config.properties
       ->Index.jsp

我正在从Index.jsp中的配置文件中读取连接详细信息,如下所示

           Properties props = new Properties();        
          FileInputStream in = new FileInputStream("WEB-INF/config.properties");
            props.load(in);
            in.close();
            String driver = props.getProperty("driver");              
            String url = props.getProperty("url");
            String username = props.getProperty("username");
            String password = props.getProperty("password");                 
            class.forName(driver);
Connection con = DriverManager.getConnection(url, username, password);

但它正在投掷

   org.apache.jasper.JasperException: An exception occurred processing JSP page /Index.jsp at line 66

    63:             
    64:            
    65:             FileInputStream in1 = 
    66:                     new FileInputStream("WEB-INF/config.properties");
    67:             props.load(in1);
    68:             in.close();
    69:        
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:447)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause    
java.io.FileNotFoundException: WEB-INF/config.properties (No such file or directory)
    java.io.FileInputStream.open(Native Method)
    java.io.FileInputStream.<init>(FileInputStream.java:137)
    java.io.FileInputStream.<init>(FileInputStream.java:96)

exception.. can anyone help me how to give the directory path?

2 个答案:

答案 0 :(得分:2)

将配置文件放在web内容中是不是一个好主意,这可能使其可以从外部访问。我宁愿将配置文件放在类路径中的某个位置,并使用Thread.currentThread().getContextClassLoader().getResource('config.properties')来获取InputStream并加载属性文件。

编辑:问题已被编辑。在WEB-INF下配置更好。然后,您可以使用ServletContext的方法加载资源。

答案 1 :(得分:0)

如果您确实需要在WEB-INF中存储属性,可以尝试使用ServletContext.getRealPath()解析部署它的文件系统路径。

但是,我还建议将文件移动到类路径并将其作为资源加载,正如NilsH在他的回答中所建议的那样。完成后,您还可以使用ResourceBundle来阅读属性。