使用 ServletContext 时出现 java.lang.NullPointerException

发布于 2025-01-02 09:13:04 字数 1869 浏览 0 评论 0原文

当我得到空指针异常时,我正在检查 ServletContext 的使用。我不明白为什么我会得到这个异常。

我已在一个类的 context 对象中设置了属性,然后尝试使用 getAttribute(...) 从第二个类中检索该属性。

package ServletContext; // servlet1

import javax.servlet.*; 
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class servlet1 extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
    LinkedList list = new LinkedList();
    list.add("suhail");
    ServletContext servletContext = getServletContext();
    servletContext.setAttribute("name", list);
  }
}

package ServletContext;  // servlet2

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class servlet2 extends HttpServlet {
 public void doGet(HttpServletRequest request , HttpServletResponse response) throws IOException,ServletException {
    LinkedList list2 = new LinkedList();
    ServletContext context = getServletContext();
    list2 = (LinkedList)context.getAttribute("name");
    PrintWriter writer = response.getWriter();
    response.setContentType("text/plain");
    writer.println(list2.pop()); //**15th statement**
  }
}

例外情况是:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
ServletContext.servlet2.doGet(servlet2.java:15)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

note 根本原因的完整堆栈跟踪可在 Apache Tomcat/7.0.11 日志中找到。

为什么我会收到此异常? list 应在 servlet2 中初始化

I was examining the use of ServletContext when i got the null pointer exception. I don't understand why do i get this exception.

I have set the attribute in the context object from one class and then try to retrieve that from the second class using getAttribute(...).

package ServletContext; // servlet1

import javax.servlet.*; 
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class servlet1 extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
    LinkedList list = new LinkedList();
    list.add("suhail");
    ServletContext servletContext = getServletContext();
    servletContext.setAttribute("name", list);
  }
}

package ServletContext;  // servlet2

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class servlet2 extends HttpServlet {
 public void doGet(HttpServletRequest request , HttpServletResponse response) throws IOException,ServletException {
    LinkedList list2 = new LinkedList();
    ServletContext context = getServletContext();
    list2 = (LinkedList)context.getAttribute("name");
    PrintWriter writer = response.getWriter();
    response.setContentType("text/plain");
    writer.println(list2.pop()); //**15th statement**
  }
}

Exception is :

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
ServletContext.servlet2.doGet(servlet2.java:15)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.11 logs.

Why am i getting this exception ? list should be initialized in servlet2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌辣 2025-01-09 09:13:04

list2null - 您无法调用 null 上的方法。也许您还没有将列表放入 servlet 上下文中?空检查 (if (list != null)) 可以修复该异常,但请确保在调用第二个 servlet 之前将列表正确地放入上下文中。

list2 is null there - you can't invoke methods on null. Perhaps you still haven't put the list in the servlet context? A null-check (if (list != null)) would fix the exception, but make sure you are properly putting the list in the context before you invoke the 2nd servlet.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文