Servlet.service() for servlet debugjsp threw exception

阅读更多

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{ 
// 自己看着办吧…… 
} 
%>

 

 

 

你可能感兴趣的:(Servlet,DAO,Java,Apache,JSP)