Java getServletConfig()/getServletContext()返回空值

Java getServletConfig()/getServletContext()返回空值,java,servlets,servletconfig,Java,Servlets,Servletconfig,我想在Java类中获取servletContext,以便从WEB-INF目录中读取文件。我用HttpServlet扩展了我的类,并尝试获取下面代码中的上下文,但是servlet配置返回为null。我不使用任何jsp或控制器。我的意图是从Java类中读取直接放在WEB-INF目录中的文件。请告诉我如何在类中获取not nullservletConfig/servletContext: ServletConfig config = getServletConfig(); ServletContex

我想在Java类中获取
servletContext
,以便从
WEB-INF
目录中读取文件。我用
HttpServlet
扩展了我的类,并尝试获取下面代码中的上下文,但是servlet配置返回为null。我不使用任何jsp或控制器。我的意图是从Java类中读取直接放在
WEB-INF
目录中的文件。请告诉我如何在类中获取not null
servletConfig
/
servletContext

ServletConfig config = getServletConfig(); 
ServletContext context = config.getServletContext(); 
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/samplefile");

年轻球员的陷阱。如果您覆盖

public void init(ServletConfig config)
方法,则必须调用

super.init(config);
在方法内部。否则,超类将上下文视为
null。
在Javadoc中提到了它:

重写此形式的方法时,调用
super.init(config)。


注意:您可以通过
getServletContext()直接获取上下文。
无需通过
getServletConfig()。

我也遇到过同样的问题,结果证明web.xml文件是在错误的位置创建的,没有被容器加载


它需要在WEB-INF文件夹的根目录中创建。理想情况下,当您创建项目时,让Eclipse为您执行此操作。

此代码在servlet中的何处?它在房间里吗?您将仅在继承自
HttpServlet
init、doGet
等的方法中获取配置。仅仅因为它是从HttpServlet扩展而来,并不意味着它是由容器启动和管理的servlet。你能发布整个servlet代码吗?谢谢你的建议。我在一个普通java类中访问ServletContext,它是一个非web组件,即应用程序的最后一层。应用程序没有前端。有没有想过如何在没有web层的情况下访问ServletContext?你不能。
Servlet
只在Servlet容器中运行。@EJP:你是说
init(ServletConfig)
而不是
ServletContex contextt
?可以找到提到的@EJP文档。@MahsaMohammadkhani谢谢你,是的。这个年轻球员被困住了!谢谢,您没有得到null
ServletContext
,因为您的文件放错了位置。您正在描述一个不同的问题。