全部博文(247)
分类: Java
2014-03-18 06:47:15
37: %> 38: 39: <% 40: Listcategories = 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: Listcategories = 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(); Listcategories = categoryService.getCategories(); 这样你就能一目了然的知道,是getInstance()方法返回空还是getCategories()返回空。 把每出的返回值都System.out.println()出来。一步一步找过去。