简体   繁体   English

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

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

So I am trying to implement a user profile page, I've implemeted it using a bean, servlet and a corresponding jsp page.所以我试图实现一个用户配置文件页面,我已经使用 bean、servlet 和相应的 jsp 页面实现了它。

When I try to visit /profile/username (the account definitely exists in the database), I get the following error displayed in my browser:当我尝试访问 /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)

When I go to where the error is (line 47 of the servlet Profile.java) it's just:当我转到错误所在(servlet Profile.java 的第 47 行)时,它只是:

rd.forward(request, response);

I'm using the code exactly as I do in other servlets but it just doesn't work.我使用的代码与我在其他 servlet 中所做的完全一样,但它不起作用。

Am I missing something really obvious?我错过了一些非常明显的东西吗? Thanks in advance.提前致谢。

You commented (on a deleted answer):您评论了(对已删除的答案):

Sorry I should've added the full jsp page, I declare profile above as follows:抱歉,我应该添加完整的 jsp 页面,我在上面声明配置文件如下:

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

.... but you set the attribute in the servlet code like this: .... 但你在 servlet 代码中设置属性是这样的:

request.setAttribute("Profile", profile);

You should use the same "scoping" when setting and getting the attribute.在设置和获取属性时,您应该使用相同的“范围”。 If you fetch an attribute that is not defined in the scope you are trying to fetch it from, then you will get a null .如果您获取的属性未在您尝试从中获取它的范围中定义,那么您将获得一个null

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

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