如何从Web档案的WEB-INF目录加载资源

我有一个Web档案放置在WEB-INF目录中的文件。

如何在Java类中加载该文件?

我知道我可以把它放在类目录,并从那里加载。 它只会放在WEB-INF中。

在ServletContext对象上使用getResourceAsStream()方法,例如

 servletContext.getResourceAsStream("/WEB-INF/myfile"); 

你如何得到一个ServletContext的引用取决于你的应用程序…你想从一个Servlet或从JSP做到这一点?

编辑:如果你在一个Servlet对象,然后调用getServletContext() 。 如果您在JSP中,请使用预定义的variablesapplication

这里是没有使用Servlet的情况下,它是如何工作的。

假设我正在尝试访问project / WebContent / WEB-INF / web.xml中的web.xml

  1. 在项目属性Source-tab中,通过指向WEB-INF文件夹的父容器添加源文件夹(在我的情况下是WebContent)

  2. 现在让我们使用类加载器:

     InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml") 

我访问我在我的java(泽西岛)服务器中创build的sqlite数据库文件的问题只适用于path。 一些文档说jdbc连接url应该看起来像“jdbc:sqlite://path-to-file/sample.db”。 我认为双斜线是htt协议样式path的一部分,在部署时会正确映射,但实际上,这是一个绝对path或相对path。 所以,当我把文件放在WebContent文件夹(tomcat项目)的根目录下时,像这样的工作“jdbc:sqlite:sample.db”。

抛出我的一件事是,当我正在通过debugging器,我收到一条消息,说:“打开数据库:…权限被拒绝”。 我认为这是一个文件系统权限或SQL用户权限的问题。 在发现SQLite没有像MySQL这样的angular色/权限的概念之后,我终于改变了文件权限,然后才find我认为是正确的解决scheme,但是我认为这只是一个坏消息(即权限被拒绝,而不是找不到文件)。

希望这有助于某人。