2016-10-10 127 views
-1

所以我试图实现一个用户配置文件页面,我已经使用bean,servlet和相应的jsp页面实现了它。为什么我收到一个空指针异常?

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做的,但它只是不工作。

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

+2

相信JVM--尽管有你的抗议,但仍有一个空引用。如果你停止坚持你是正确的,你会更快地取得进展。 JVM并不迫害你。在调试器中更仔细地进行操作,直到找到它。 – duffymo

+0

如果你在这个'rd.forward(request,response);'行然后'rd'是空的。 –

+0

我试图在servlet中使用'JOptionPane'来包装头... –

回答

1

你的评论(在被删除的答案):

对不起,我应该已经添加了完整的jsp页面,我宣布轮廓上方如下:

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

....但是您在servlet代码中设置属性,如下所示:

request.setAttribute("Profile", profile); 

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

+0

啊,我明白了,但我没有在这里设置和获得相同的属性?这两个属性的名称都是大写'Profile',还是它不能被jsp页面访问? – James

+0

'session'和'request'是不同的作用域。是的,这两个范围都可以在JSP中访问。但是,如果你把一个属性放到一个范围内,并在另一个范围内寻找......你不会找到它! –

+0

请解释downvote。 –