如何在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(); ... }