我在 Netbeans 中有一个 Web 应用程序,我创建了一些 jsp 页面,它们使用方法(我的方法)从类中获取一些数据,例如用户名、标题等。
我还使用 MySQL 将用户存储在一个表中。为了获取用户名(在用户登录后),我使用了 getUsername() 方法。
在我的 jsp 页面中,我有以下代码:
<%UserBean currentUser=(UserBean)(session.getAttribute("currentSessionUser"));%> <h1><%= currentUser.getUsername() %> </h1>
其中 userBean 是一个类等。一切运行顺利,但有时(我注意到当我有一段时间不使用浏览器中的应用程序时会发生这种情况(15-20 分钟?我不知道)我得到一个错误状态
HTTP 状态 500 - java.lang.NullPointerException
并且 Tomcat 中的日志文件打印
org.apache.catalina.core.StandardWrapperValve 调用严重:Servlet.service() for servlet [jsp] in context with path [/APle] throw exception [java.lang.NullPointerException] with root causejava.lang.NullPointerException
at org.apache.jsp.welcome_jsp._jspService(welcome_jsp.java:96)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
我去检查第 96 行中的文件 welcome_jsp.java,这是我获取用户名的方法。
out.print( currentUser.getUsername() );
我想我收到错误的原因是该方法返回 Null.. 但是为什么会这样呢?如果我再次部署应用程序,一切都会正常运行!
谢谢!!