исключение java.lang.nullpointer, выброшенное в программе сервлета - PullRequest
0 голосов
/ 18 марта 2011

Я создаю трехуровневое веб-приложение для онлайн-экзамена, содержащее всего 5 вопросов. Я использую html и разработал сервлет для отправки данных в базу данных mysql, которую я назвал «test», а таблица «st1».Я использую MyEclipse Blue 8.6.1 со встроенным MyEclipse Tomcat 6.0.13.Код для сервлета в методе doPost () выглядит следующим образом:

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(ans1.equals("True"))
    Total+=2;
if(ans2.equals("False"))
    Total+=2;
if(ans3.equals("True"))
    Total+=2;
if(ans4.equals("False"))
    Total+=2;
if(ans5.equals("False"))
    Total+=2;
try
{
    Statement stmt=connect.createStatement();
    String query="INSERT INTO st1("+"seat_no,name,marks"+")VALUES('"+seat_no+"','"+name+"','"+Total+"')";
    stmt.executeUpdate(query);
    stmt.close();
}

Когда я компилирую приложение, я получаю следующее исключение:

HTTP Status 500 - 

type Exception report
message: 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception :
java.lang.NullPointerException
    s3.doPost(s3.java:52)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note :The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs

Ноне удалось найти журналы, доступные для MyEclipse Tomcat 6.0.13.Может ли кто-нибудь помочь мне преодолеть это исключение?Это мой академический проект!Заранее спасибо !!

Ответы [ 4 ]

5 голосов
/ 18 марта 2011

Взгляните на файл s3.java, строка 52.

3 голосов
/ 18 марта 2011

Я предполагаю, что одного из полей, которые вы извлекаете через getParameter, там нет, поэтому оно в null. Когда вы звоните .equals() на это поле, вы получаете NPE. Если бы мы знали, какая строка # 52, это помогло бы.

В качестве первого шага я бы переписал все проверки, такие как:

ans1.equals("True")

до

"true".equalsIgnoreCase(ans1)

или даже лучше

Boolean.getBoolean(ans1) == true

Тогда вы не получите NPE, даже если поле не было представлено в запросе.

1 голос
/ 18 марта 2011

ответ от @Jan Zyka

Попробуйте это

if("True".equals(ans1))
    Total+=2;
if("False".equals(ans2))
    Total+=2;
if("True".equals(ans3))
    Total+=2;
if("False".equals(ans4))
    Total+=2;
if("False".equals(ans5))
    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();
  }
}
0 голосов
/ 18 марта 2011

Я думаю, что вы можете заканчивать любым параметром с NULL в файле s3.java, строка 52

Проверьте, какие параметры вы там получаете?

...