繁体   English   中英

为什么我收到空指针异常?

[英]Why am I recieving a null pointer exception?

所以我试图实现一个用户配置文件页面,我已经使用 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 中所做的完全一样,但它不起作用。

我错过了一些非常明显的东西吗? 提前致谢。

您评论了(对已删除的答案):

抱歉,我应该添加完整的 jsp 页面,我在上面声明配置文件如下:

 ProfileStore profile = (ProfileStore) session.getAttribute("Profile");

.... 但你在 servlet 代码中设置属性是这样的:

request.setAttribute("Profile", profile);

在设置和获取属性时,您应该使用相同的“范围”。 如果您获取的属性未在您尝试从中获取它的范围中定义,那么您将获得一个null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM