我正在使用Tomcat。我想将配置文件放入,WEB-INF而不是默认的根类路径WEB- INF/classes。目前,我把config.xml在WEB-INF和使用以下相对地址找到它:
WEB-INF
WEB- INF/classes
config.xml
InputStream input = Thread.currentThread() .getContextClassLoader() .getResourceAsStream("..//config.xml");
这是正确的方法吗?
还是我应该使用第getServletContext().getRealPath("config.xml")一个?但是我不知道如何获得getServletContext()一个.java。(我尝试new HttpServlet获取getServletContext(),但是由于它是一个抽象类,因此无法实例化……如何获取getServletContext()?)
getServletContext().getRealPath("config.xml")
getServletContext()
.java
new HttpServlet
该方法getRealPath()不能保证能正常工作,例如,如果您的Web应用程序未从war文件扩展,则文件系统上没有指向war文件内文件的“真实路径”。
getRealPath()
因为您说的是使用ServletContextListener,所以可以从ServletContextEvent中获取ServletContext:
sce.getServletContext().getResourceAsStream("/WEB-INF/config.xml");