doGet和doPost方法的Nullpointerexception

时间:2013-12-16 17:55:02

标签: servlets

这是我得到Nullpointer exxception的servlet代码。我没有需要初始化的对象。会出现什么问题?

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)

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

action为空。因此调用它上面的方法会抛出NullPointerException。您需要将操作参数传递给您的请求,或者在doPost()方法中处理操作为空的可能性。