java.lang.NullPointerException学习总结

程序报错,前台界面出现空白。

java.lang.NullPointerException
 at org.apache.jsp.WEB_002dINF.jsp.gsp.gspBasic.viewGspBasicAdv_jsp._jspService(viewGspBasicAdv_jsp.java:1307)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
 at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at com.neusoft.struts.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:85)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
 at java.lang.Thread.run(Unknown Source)

小弟好歹也学了半年了,发现报错关键字来自第一行

at org.apache.jsp.WEB_002dINF.jsp.gsp.gspBasic.viewGspBasicAdv_jsp._jspService(viewGspBasicAdv_jsp.java:1307)

于是我就分析这一行说了什么!

WEB_002dINF.jsp.gsp.gspBasic.viewGspBasicAdv_jsp  这是前半句这是我工程里存放页面jsp的地方以及文件名

这一行的关键字在后半句jspService(viewGspBasicAdv_jsp.java:1307)这个地方

有“java.lang.NullPointerException”也就是空指针的意思。

那么jspService又是什么呢?

百度一下,jspService(){}:由jsp容器自动创建的处理jsp Page的方法,由jsp容器创建。

我大致能猜到,原来是我在jsp面页中加的

<%
  
  String adv_flag = (String)request.getAttribute("adv_flag");

%>

类似于这样的小后台程序出现了空指针情况,也就是后台没有初始化定义变量或者传值给adv_flag

于是我就去后台javaBean里去寻找哪个地方调用了JSP中这段小后台程序,结果发现在一个判断是否添加了重复ID号的方法里,如果重复则面页显示重复,然后面页要显示失败动作。也就是我们在struts-config.xml中的配置的<action>语句   类似如下

<action name="gspXXXBean" path="/updateGspBasic" scope="session"
    type="com.neusoft.struts.BeanAction" validate="false"> 
    <forward name="success" path="/listGspBasic.do"/>
   <forward name="failure" path="/WEB-INF/jsp/gsp/gspBasic/viewGspBasicAdv.jsp"/>
    </action>

大家看其中的<forward name="failure" path="/WEB-INF/jsp/gsp/gspBasic/viewGspBasicAdv.jsp"/>

不就是失败了要返还到path="/WEB-INF/jsp/gsp/gspBasic/viewGspBasicAdv.jsp"这个面页么,修改的ID有重复则失败,失败则返还到这个面页。

这个面页里有上面说的

<%

String adv_flag = (String)request.getAttribute("adv_flag");

%>

这种小后台程序,如果我不赋值则报空指针的错。

思路搞明白了,我就在javaBean里修改ID的那个方法里给adv_flag赋值

ActionContext.getActionContext().getRequest().setAttribute(
          "adv_flag", this.adv_flag);                           这个语句就是后台向前台小程序传值的语句,我又长姿势了!也是上网查到的。

然后我的程序就好使啦!



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值