【发布时间】:2016-06-25 12:59:25
【问题描述】:
我正在开发一个jsp+servlet应用,打包到war,部署到tomcat 8。
我知道 WEB-INF 是存储不提供服务的文件的文件夹,仅在服务器端处理:如 html 或 jsp 片段等。 我需要存储一些xml。 Servlet 在处理请求时会读取这些 xml。
问题是:
我应该将这些 xml 存储在同一个 WEB-INF 文件夹中吗?或者有什么特别的地方吗?我不想这样做非常反模式。
【问题讨论】:
我正在开发一个jsp+servlet应用,打包到war,部署到tomcat 8。
我知道 WEB-INF 是存储不提供服务的文件的文件夹,仅在服务器端处理:如 html 或 jsp 片段等。 我需要存储一些xml。 Servlet 在处理请求时会读取这些 xml。
问题是:
我应该将这些 xml 存储在同一个 WEB-INF 文件夹中吗?或者有什么特别的地方吗?我不想这样做非常反模式。
【问题讨论】:
如果你使用的是 maven,你可以把你的 XML 文件放在 src/main/resources 中。打包为 WAR 时,它们将被放置在 WAR 的 WEB-INF/classes 文件夹中,例如
src/main/resources/settings.xml
将被打包到:
WEB-INF/classes/settings.xml
这样您就可以使用例如读取文件:
MyServlet.class.getResourceAsStream("/settings.xml");
一旦部署到 tomcat 并解包,您可以根据需要编辑/更新 WEB-INF/classes 文件夹中的 settings.xml。请注意,/WEB-INF/classes 文件夹是类路径的根目录。
【讨论】:
放到WEB-INF/中,在ServletContext对象上使用getResourceAsStream()方法,例如
servletContext.getResourceAsStream("/WEB-INF/myfile");
您如何获得对 ServletContext 的引用取决于您的应用程序...您想从 Servlet 还是从 JSP 中进行?
请看这里:Howto load a resource from WEB-INF directory of a web archive
【讨论】: