我正在使用 Tomcat。我想将配置文件放在 WEB-INF
中,而不是默认的根类路径 WEB-INF/classes
。目前我将 config.xml
放在 WEB-INF
中,并使用以下相对寻址来定位它:
InputStream input = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("..//config.xml");
这是正确的做法吗?
或者我应该先使用 getServletContext().getRealPath("config.xml")
吗?但是我不知道如何获取.java
中的getServletContext()
。 (我试图通过 new HttpServlet
获取 getServletContext()
,但是因为它是一个抽象类,不能被实例化...我如何获取 getServletContext()
?)
最佳答案
getRealPath()
方法不能保证有效,例如如果您的 webapp 不是从 war 文件扩展的,则文件系统上没有到 war 文件内文件的“真实路径”。
既然你说你正在使用 ServletContextListener , 你可以从 ServletContextEvent 中获取 ServletContext :
sce.getServletContext().getResourceAsStream("/WEB-INF/config.xml");
关于java - 如何在 JSP 中访问 WEB-INF 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137565/