所以我正在尝试实现一个用户配置文件页面,我已经使用 bean、servlet 和相应的 jsp 页面实现了它。
当我尝试访问/profile/username(该帐户肯定存在于数据库中)时,我的浏览器中显示以下错误:
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /profile.jsp at line 87
84: <div class="container">
85: <div class="row">
86: <div class="col-lg-12 text-center user-profile">
87: <h1>Welcome <%=profile.getUsername()%>!</h1>
88: </div>
89: <div class="col-sm-4 text-center">
90: <div class="user-post" style="background-color: red">
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:574)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
[PACKAGE].servlets.Profile.doGet(Profile.java:47)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause
java.lang.NullPointerException
org.apache.jsp.profile_jsp._jspService(profile_jsp.java:218)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
[PACKAGE].servlets.Profile.doGet(Profile.java:47)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
当我转到错误所在(servlet Profile.java 的第 47 行)时,它只是:
rd.forward(request, response);
我使用的代码与我在其他 servlet 中所做的完全一样,但它就是不起作用。
我是否漏掉了一些非常明显的东西?提前致谢。
最佳答案
您评论(针对已删除的答案):
Sorry I should've added the full jsp page, I declare profile above as follows:
ProfileStore profile = (ProfileStore) session.getAttribute("Profile");
....但是您在 servlet 代码中设置属性是这样的:
request.setAttribute("Profile", profile);
在设置和获取属性时,您应该使用相同的“作用域”。如果您获取的属性未在您尝试从中获取的范围内定义,那么您将得到一个 null
。
关于java - 为什么我会收到空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39959622/