【发布时间】:2015-02-09 12:10:39
【问题描述】:
请帮助我是 servlet 的新手 我正在尝试初始化 init 方法的值并在之后使用它们 但我得到空指针异常 这是我的类你好它包含 2 个方法 init() 和 jdbcinfo() 我需要获得一次数据库连接
package com.Ws;
//imports..
public class Hello extends HttpServlet {
public static Connection con;
@Override
public void init() throws ServletException
{
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con =DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:6543/Dbname","user","");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("--printStackTrace--"+e);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("--printStackTrace2--"+e);
}
}
}
//I get nullpointerexception here con = null
public String jdbcInfo(String req) {
PreparedStatement statementT;
try {
connection =con;
PreparedStatement statement = connection.prepareStatement(req);
ResultSet result = statement.executeQuery();
while (result.next()) {
///
}
}
catch (Exception e) {
e.printStackTrace();
System.out.println("exception: Serveur base de donnée indosponnible");
}
if (res == "1")
return res;
else
return "false";
}
}
我的 web.xml
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.Ws.Hello</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
【问题讨论】:
-
您的代码无法编译。你不能在函数之外拥有
System.out.println("returned value"+name);。 -
你没有覆盖 contextDestroyed(ServletContextEvent arg0) 方法也是一个错误!!
-
你在哪里得到异常??
-
您是否在 init 和 jdbcInfo 中使用断点进行调试以检查 init 是否真的被调用过?
-
没有回答你问的问题,但我想我还是提到了:你不应该像那样签出和使用 Connections。连接不应该与您的 servlet 一样长。相反,请在需要之前检查连接,并在完成后关闭它。