【问题标题】:java.lang.nullpointer exception thrown in servlet programservlet 程序中抛出 java.lang.nullpointer 异常
【发布时间】:2011-03-20 05:38:41
【问题描述】:

感谢大家的精彩回答。我尝试了@Jan,@Ratna 所说的一切,但我无法克服异常。我的 servlet 程序中的第 52 行是

语句 stmt=connect.createStatement();

我在这里展示更多代码:

public class s3 extends HttpServlet
{
String message,seat_no,name,ans1,ans2,ans3,ans4,ans5;
int Total=0;
Connection connect;
Statement stmt=null;
ResultSet rs=null;
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
try
{
String url="jdbc:mysql://localhost:3306/test";
Class.forName("com.mysql.jdbc.Driver");
connect=DriverManager.getConnection(url,"root","root");
message="Connection Sucessfull";
}
catch(ClassNotFoundException cnfex){
cnfex.printStackTrace();
}
catch(SQLException sqlex){
sqlex.printStackTrace();
}
catch(Exception excp){
excp.printStackTrace();
}
seat_no=request.getParameter("seat_no");
name=request.getParameter("name");
ans1=request.getParameter("group1");
ans2=request.getParameter("group2");
ans3=request.getParameter("group3");
ans4=request.getParameter("group4");
ans5=request.getParameter("group5");
if(Boolean.getBoolean(ans1) == true)
    Total+=2;
if(Boolean.getBoolean(ans2) == false)
    Total+=2;
if(Boolean.getBoolean(ans3) == true)
    Total+=2;
if(Boolean.getBoolean(ans4) == false)
    Total+=2;
if(Boolean.getBoolean(ans5) == false)
    Total+=2;
try
{
   if(Total>0)// Just a condition.. !
   {
    Statement stmt=connect.createStatement();
    String query="INSERT INTO st1("+"seat_no,name,marks"+")VALUES('"+seat_no+"','"+name+"','"+Total+"')";
    stmt.executeUpdate(query);
    stmt.close();
  }
}
catch(SQLException ex){
}
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body bgcolor=pink>");
out.println("<h1>"+message+"</h1>\n");
out.println("<h3>database updated");
out.println("<br>");
out.println("<b>"+"datbase is follows");
out.println("<table border=5>");
try
{
Statement stmt=connect.createStatement();
String query="SELECT * FROM st1";
rs=stmt.executeQuery(query);
out.println("<th>"+"seat_no"+"</th>");
out.println("<th>"+"name"+"</th>");
out.println("<th>"+"marks"+"</th>");

您的宝贵建议将不胜感激!

【问题讨论】:

  • 请发布显示错误的堆栈跟踪
  • 请提供堆栈跟踪。它们应该在日志文件中。
  • 我用 MyEclipse Blue 8.6.1 编译程序,它有一个内置的 MyEclipse Tomcat 6.0.13,没有日志。但是抛出的异常是 java.lang.NullPointerException s3.doPost(s3.java:52) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:第803章)
  • 当您在 doPost 的顶部捕获这些异常时,您应该停止处理(即返回,并带有 HTTP 错误代码)。照原样打印转储,然后继续。因此,如果连接出现问题,请尝试使用空值。
  • 真的希望代码格式“丢失在粘贴中”。 ::颤抖::

标签: java mysql servlets myeclipse


【解决方案1】:

根据MySQL manual,需要拨打

Class.forName("com.mysql.jdbc.Driver").newInstance();

在尝试打开连接之前。您将停止使用forName() 呼叫。

【讨论】:

  • 对于 5.0 及更高版本的 MySQL JDBC 驱动程序不再需要它。仅对其古老的前身org.gjt.mm.mysql.Driver 是必要的。该手册甚至提到 newInstance() 调用是一些损坏的驱动程序实现的解决方法。我的印象是 OP 的 实际 问题是由其他原因引起的。
猜你喜欢
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 2012-04-23
  • 2014-12-03
  • 2018-05-21
  • 2021-09-02
相关资源
最近更新 更多