2013-12-16 4 views
1

Это код сервлета, где я получаю exxception Nullpointer. Нет объектов, которые мне нужны для инициализации. В чем проблема?Исключение Nullpointer в методах doGet и doPost

package sms.controller; 

import sms.model.DbConnection; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.Date; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import net.sf.json.JSONArray; 
import net.sf.json.JSONObject; 

public class StaffManagementServlet extends HttpServlet { 

Connection con = null; 
Statement st = null; 
ResultSet rs = null; 
PrintWriter out; 
JSONArray jsonArray; 
JSONObject jsonObject; 
private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public StaffManagementServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    doPost(request, response); //line 50 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    String action = request.getParameter("action"); 
    System.out.println(action+"--------"); 
    if (action.equalsIgnoreCase("registration")) { //line 63 
     userRegistration(request, response); 
    } 
    if (action.equalsIgnoreCase("login")) { 
     userLogin(request, response); 
    } 
    if (action.equalsIgnoreCase("section")) { 
     getSection(request, response); 
    } 
    if (action.equalsIgnoreCase("question")) { 
     getQuestion(request, response); 
    } 
    if (action.equalsIgnoreCase("semister")) { 
     getSemister(request, response); 
    } 
    if (action.equalsIgnoreCase("branch")) { 
     getBranch(request, response); 
    } 
    if (action.equalsIgnoreCase("forget")) { 
     forgetPassword(request, response); 
    } 
    if (action.equalsIgnoreCase("setPass")) { 
     setPassword(request, response); 
    } 

} 

Это ошибка, которую я получаю при запуске sevlet на сервере.

java.lang.NullPointerException 
sms.controller.StaffManagementServlet.doPost(StaffManagementServlet.java:63) 
sms.controller.StaffManagementServlet.doGet(StaffManagementServlet.java:50) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
+0

Сделать это Строка action = "" + request.getParameter ("action"); и действие никогда не будет равно null, но будет строка «null» – developerwjk

+0

Или используйте стиль yoda для сравнения строк. Покажите нам запрос. –

ответ

1

Ваше действие NULL, поэтому, когда вы вызываете action.equalsIgnoreCase ("registration"). Он генерирует исключение NullPointerException.

ЛУЧШАЯ практика для этого случая использует CONSTANT как первую переменную при сравнении.

if ("registration".equalsIgnoreCase(action)) { 
    // .... 

} else if ("login".equalsIgnoreCase(action)) { 
    // .... 
} 

// .... 

else { 
    throw new ServletException("Invalid action"); 
    // OR process default action here if action missing 
} 
0

action - null. Поэтому вызов метода на нем вызывает исключение NullPointerException. Вам необходимо передать параметр действия в ваш запрос или обработать возможность действия null в методе doPost().

Смежные вопросы