2016-10-10 59 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。 –