我在servlet中遇到空指针异常的问题

时间:2010-10-18 11:18:28

标签: jsp servlets

HI,全部

我在servlet中遇到空指针异常的问题。 我有一个带有复选框的表单a.jsp如果我没有选中此复选框并提交表单,那么在a.servlet中会出现空指针异常。 我如何处理这个例外

代码 a.jsp

<table border='0' width='50%' cellspacing='0' cellpadding='0' ><form name=form1 method=post action=aservlet >
<input type=hidden name=todo value=post>

<tr bgcolor='#ffffff'><td align=center >
<font face='verdana' size='2'><b>Sex</b><input type=radio name=sex value='male'>Male </font>
<input type=radio name=sex value='female'><font face='verdana' size='2'>Female</font></td></tr>

<tr><td align=center bgcolor='#f1f1f1'>
<font face='verdana' size='2'><input type=checkbox name=agree >I agree to terms and conditions </font>
</td></tr>

<tr bgcolor='#ffffff'><td align=center >
<input type=submit value=Submit>
 <input type=reset value=Reset>
</td></tr>
</form></table>

aservlet.java

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

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


public class Admin extends HttpServlet {
        public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException 
            {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
request.getParameter ("agree");
}}

例外:

例外

显示java.lang.NullPointerException     com.centralvisa.servlets.Admin.doPost(Admin.java:26)     javax.servlet.http.HttpServlet.service(HttpServlet.java:637)     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

由于

2 个答案:

答案 0 :(得分:0)

如果未选中复选框,则复选框的请求参数(在您的情况下)“同意”不存在,即 request.getParameter(“agree”)将返回null。

如果你将request.getParameter(“agree”)分配给某个String变量,然后在这个String上调用一个方法,你将得到一个NullPointerException。

解决方案是在分配参数值之前检查null。

简单地

if (request.getParameter("agree") != null ){
    // do stuff

}

答案 1 :(得分:0)

很少有信息。准确地说,您正在访问参数而不检查它是否已发送。

在servlet中尝试使用类似的东西:

boolean checked=false;
if(request.getParameter("checkbox")!=null && 
   request.getParameter("checkbox").equals("checkbox_value_for_true")) {
    //your code for the checkbox value
    checked=true;
}
//the rest of your code use the var checked and not the request.getParameter()