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

我正在使用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"); 

您可以使用getServletConfig()方法返回ServletConfig的实例。

 ServletContext sc=getServletConfig().getServletContext(); 

编辑:

 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{ ServletContext sc=getServletContext(); ... }