StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception
java.lang.NullPointerException
at org.apache.jsp.zhongyibu.wjhb_005fnr_jsp._jspService(wjhb_005fnr_jsp.java:113)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
以上说是出现空指针异常,但代码
int id;
try {
id = Integer.parseInt(request.getParameter("id"));
} catch (NumberFormatException e) {
id = 0;
}
已经对此处进行捕捉,问题不是出于上面代码。
关键是id参数的值真正存在于数据库对应的ID值吗?
CD CD=dao.findCD(id);
假如经过
int id;
try {
id = Integer.parseInt(request.getParameter("id"));
} catch (NumberFormatException e) {
id = 0;
}
后,变量id的值为0(),如果数据库中没有id为0或其它对应的值,则
CD CD=dao.findCD(id);
后得到的CD变量指向的是null,也就是根本就不是一个CD对象。
当CD为null时,<%=CD.getCDID()%>自然会出现NullPointerException。
可能原因:
id参数没有获得正确的值,导致dao.findCD(id); 返回null。
在使用CD.getCDID时,应先判断CD是否为空,如:
<%
int id;
try {
id = Integer.parseInt(request.getParameter("id"));
} catch (NumberFormatException e) {
id = 0;
}
CDDAO dao=new CDDAO();
CD CD=dao.findCD(id);
if(CD == null){
//out.println("no info!");
}else{
// 自己看着办吧……
}
%>