一尘不染

如何在JSP的WEB-INF中访问文件?

jsp

我正在使用Tomcat。我想将配置文件放入,WEB-INF而不是默认的根类路径WEB- INF/classes。目前,我把config.xmlWEB-INF和使用以下相对地址找到它:

InputStream input = Thread.currentThread()
    .getContextClassLoader()
    .getResourceAsStream("..//config.xml");

这是正确的方法吗?

还是我应该使用第getServletContext().getRealPath("config.xml")一个?但是我不知道如何获得getServletContext()一个.java。(我尝试new HttpServlet获取getServletContext(),但是由于它是一个抽象类,因此无法实例化……如何获取getServletContext()?)


阅读 217

收藏
2020-06-08

共1个答案

一尘不染

该方法getRealPath()不能保证能正常工作,例如,如果您的Web应用程序未从war文件扩展,则文件系统上没有指向war文件内文件的“真实路径”。

因为您说的是使用ServletContextListener,所以可以从ServletContextEvent中获取ServletContext

sce.getServletContext().getResourceAsStream("/WEB-INF/config.xml");
2020-06-08