猿问

这个问题太奇怪了,已经抓狂了

2014-8-14 13:43:43 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [action] in context with path [] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.quickupstart.struts.action.LoginValidateAction.execute(LoginValidateAction.java:33)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.quickupstart.common.EncodingFileter.doFilter(EncodingFileter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

应用在本地跑没有一点问题,部署到服务器,一触发功能后台就抛这个异常,但是前台也没有报HTTP 500错误,功能运行正常。

异常里说的33行报红指针,代码如下:

HttpSession session = request.getSession(false);
String validate_code = session.getAttribute("code").toString();//这个是33行

用log4j也可以输出值。已经晕了!抓狂中........................

慕斯王
浏览 887回答 5
5回答

HUH函数

两种情况。1.获取到的session对象为空。request.getSession(false);如果当前有session则返回当前session,否则返回null;request.getSession();如果当前有session则返回当前session,否则返回一个新的session。2.session不为空,session.getAttribute("code")后返回的为空;用断点调试就知道了,另外,凡是设计到session的地方,最好是用aop模式进行方法前校验。

跃然一笑

为什么用HttpSession session = request.getSession(false);而不是HttpSession session = request.getSession();呢 ?或者HttpSession session = request.getSession(true);呢

BIG阳

String validate_code = session.getAttribute("code").toString();//这个是33行这样String validate_code = (String)session.getAttribute("code");这样session中code为null的时候也正常。debug会吧,debug下,看那个对象是null.

慕标琳琳

空指针的问题是最好查的了。。。
随时随地看视频慕课网APP

相关分类

Java
我要回答