我有一个动态网络项目,因为我正在为数据库连接创建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?
答案 0 :(得分:2)
将配置文件放在web内容中是不是一个好主意,这可能使其可以从外部访问。我宁愿将配置文件放在类路径中的某个位置,并使用Thread.currentThread().getContextClassLoader().getResource('config.properties')
来获取InputStream
并加载属性文件。
编辑:问题已被编辑。在WEB-INF
下配置更好。然后,您可以使用ServletContext
的方法加载资源。
答案 1 :(得分:0)
如果您确实需要在WEB-INF中存储属性,可以尝试使用ServletContext.getRealPath()
解析部署它的文件系统路径。
但是,我还建议将文件移动到类路径并将其作为资源加载,正如NilsH在他的回答中所建议的那样。完成后,您还可以使用ResourceBundle来阅读属性。