Java getServletConfig()/getServletContext()返回空值
我想在Java类中获取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
servletContext
,以便从WEB-INF
目录中读取文件。我用HttpServlet
扩展了我的类,并尝试获取下面代码中的上下文,但是servlet配置返回为null。我不使用任何jsp或控制器。我的意图是从Java类中读取直接放在WEB-INF
目录中的文件。请告诉我如何在类中获取not nullservletConfig
/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谢谢你,是的。这个年轻球员被困住了!谢谢,您没有得到nullServletContext
,因为您的文件放错了位置。您正在描述一个不同的问题。