【发布时间】:2016-07-14 14:49:12
【问题描述】:
我正在尝试从如下所示的 system.properties 文件中获取属性 -
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/stud_mng"
duser="root"
dpass=""
logfile=d:/log/test_log.txt
我也像这样在我的 web.xml 中映射了这个文件 -
<servlet>
<description>
This is the description of my J2EE component
</description>
<display-name>
This is the display name of my J2EE component
</display-name>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.dts.core.util.InitServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/system.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>InitServlet</servlet-name>
<url-pattern>/initservlet</url-pattern>
</servlet-mapping>
现在这个 InitServlet.java 文件问题出现了,我试图从这里获取保存在 config 文件夹下的 system.properties 的属性。这是从props.load(fis); 行抛出异常的代码,我发布了几行异常和文件夹树的结构-
package com.dts.core.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import com.dts.core.dao.AbstractDataAccessObject;
import com.dts.core.db.DBFactory;
public class InitServlet extends HttpServlet
{
AbstractDataAccessObject dobject;
public void init(ServletConfig sc)
{
ServletContext ctx = sc.getServletContext();
InputStream fis = ctx.getResourceAsStream(sc.getInitParameter("config"));
Properties props = new Properties();
try
{
props.load(fis);
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
dobject = new AbstractDataAccessObject();
dobject.setProperties(props);
2016 年 3 月 27 日上午 1:06:30 org.apache.catalina.core.StandardContext loadOnStartup 严重:Servlet /MobileServices 抛出 load() 异常 java.lang.NullPointerException 在 java.util.Properties$LineReader.readLine(Properties.java:434) 在 java.util.Properties.load0(Properties.java:353) 在 java.util.Properties.load(Properties.java:341) 在 com.dts.core.util.InitServlet.init(InitServlet.java:26) 在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ......
我也想知道为什么在 Netbeans 项目中创建配置文件文件夹。我可以使用这个文件夹来存储我的 system.properties 文件吗,如果是,那么我将如何从这里获取属性。在图像中查看我正在谈论的文件夹 - Highlight with Pink Color
我将非常感谢任何建议/指导/建议。
【问题讨论】:
-
@DeendayalGarg 在您提到相同解决方案代码的帖子中特别写了什么。我的代码和接受的解决方案代码有什么不同吗?
-
你有没有试过调试,看看 "sc.getInitParameter("config")" 的值是多少?
-
@DeendayalGarg 是的,我正在从配置文件中获取值。这是代码
System.out.println(fileName); props.load(fis); System.out.println(props.getProperty("url"));这是输出 >/WEB-INF/config/system.properties >jdbc:mysql://localhost:3306/stud_mng -
@DeendayalGarg 但是现在解决了这个问题后我面临这个问题警告:java.lang.ClassNotFoundException:“com.mysql.jdbc.Driver”java.lang.ClassNotFoundException:“com.mysql.jdbc .Driver",我在项目的库文件夹中添加了 MySQL 驱动程序仍然出现此错误
标签: java web.xml configuration-files properties-file servletcontextlistener