使用 ServletContext 时出现 java.lang.NullPointerException
当我得到空指针异常时,我正在检查 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
list2
是null
- 您无法调用null
上的方法。也许您还没有将列表放入 servlet 上下文中?空检查 (if (list != null)
) 可以修复该异常,但请确保在调用第二个 servlet 之前将列表正确地放入上下文中。list2
isnull
there - you can't invoke methods onnull
. 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.