Chinaunix首页 | 论坛 | 博客
  • 博客访问: 823790
  • 博文数量: 247
  • 博客积分: 166
  • 博客等级: 入伍新兵
  • 技术积分: 2199
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-15 16:10
文章分类

全部博文(247)

文章存档

2017年(1)

2015年(63)

2014年(80)

2013年(94)

2012年(9)

分类: Java

2014-03-18 06:47:15

37:  %>
38: 
39: <%
40: List categories = CategoryService.getInstance().getCategories();
41: List topCategories = getTopCategories(categories);
42:  %>
43: 

Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	com.bjsxt.shopping.util.filter.IPFilter.doFilter(IPFilter.java:31)

root cause 

java.lang.NullPointerException
	com.bjsxt.shopping.category.CategoryService.getCategories(CategoryService.java:102)
	org.apache.jsp.Index_jsp._jspService(Index_jsp.java:95)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	com.bjsxt.shopping.util.filter.IPFilter.doFilter(IPFilter.java:31)

如何改呢?

你给出的信息里不是有一拖吗,先看Stacktrace部分
org.apache开头的,明显不是你的代码。apache的一个jar包。不用管。它报错是因为你传给它的值不是它想要的。javax.servlet.http.HttpServlet.service这个也不是你的代码。com.bjsxt.shopping.util.filter.IPFilter.doFilter这个相对来说可能就跟你的关系最经了。这应该是属于你们老师给的代码里的一部分。
接下来找错。
root cause 中的信息。先找com.bjsxt开头的。为什么,因为com.bjsxt离你最近
OK。你看到了两行最近的。我也看到两行:
com.bjsxt.shopping.category.CategoryService.getCategories(CategoryService.java:102)
com.bjsxt.shopping.util.filter.IPFilter.doFilter(IPFilter.java:31)
来。提示信息时NullPointerException;最熟悉的空指针。
从这两行中选。
然后看你问题题目中提到的:
org.apache.jasper.JasperException: An exception occurred processing JSP page /Index.jsp at line 40
注意,这个是最直观的信息  at line 40
好你又找到了line 40,是:
40: List categories = CategoryService.getInstance().getCategories();
看。跟我们之前揪出来的两行中的一行:
com.bjsxt.shopping.category.CategoryService.getCategories(CategoryService.java:102)
是不是关系最近对吧。
这个时候,你就可以很肯定的告诉自己告诉别人:
是你com.bjsxt.shopping.category包下的CategoryService类的 getCategories方法在你的第40行执行后,返回的结果是null,null当然就报nullpointException了。
你还可以看到
com.bjsxt.shopping.category.CategoryService.getCategories(CategoryService.java:102)
后面括号里的信息。那是提示你在执行getCategories方法时,代码运行到102行出的错。
大功告成。
你想取的值结果却是空。看看你的方法传入的值是什么啊,为什么是空啊。要不你再把你
CategoryService.getCategories()方法的代码贴出来。最好能把CategoryDao这个类的代码也弄出来。Category类的代码也贴出来。空指针,你想,要么是数据库每数据。要么是有数据,但是取值时算错了。每什么太复杂的东西。鼓励你自己检查出来。还有个要注意的地方。你CategoryService.getInstance()方法也检查下,看看是不是这个方法返回值有问题。建议这种代码都分开写:
XXX  categoryService =  CategoryService.getInstance();
List categories = categoryService.getCategories();
这样你就能一目了然的知道,是getInstance()方法返回空还是getCategories()返回空。
把每出的返回值都System.out.println()出来。一步一步找过去。

阅读(799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~