【问题标题】:Unable to access file in WEB-INF folder from servlet无法从 servlet 访问 WEB-INF 文件夹中的文件
【发布时间】:2016-08-04 13:24:34
【问题描述】:

我在访问 WebContent 文件夹中的文件时遇到了问题(在这种情况下,我需要访问 WEB-INF 文件夹)

这是我尝试访问 WEB-INF 文件夹的地方。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String dbPath = "/WEB-INF/musicDb.db";
    String xmlPath = "/WEB-INF/musicDb.xml";
    ServletContext context = null;
    context = getServletContext();  
    String test = context.getRealPath(xmlPath);

    File f = new File(test);
    if (f.exists()) {

    }
}

我在 WEB-INF 文件夹中准备好了 musicDb.xml,但是,通过调试,我总是得到这个路径

{my local project path}/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/9321A1/WEB-INF/musicDb.xml

我怀疑这与构建过程中未包含 WebContent 文件夹有关。这可能是错误的。

到目前为止,我发现的几乎所有教程/建议/文章都指向我使用这种方法

getServletContext().getRealPath()

这在我的情况下似乎不起作用

任何帮助将不胜感激。

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    我建议你将文件移动到 /WEB-INF/classes 或将它打包到一个 jar 中,然后将该 jar 放在 WEB-INF/lib 中。使用任何一种 getResourceAsSteam 方法将文件作为资源加载

    请看这里:Best practices to store and access resource files in java web application,正确答案请看这里:Reading Web Application Resources

    【讨论】:

    • 但是为什么将文件移动到子文件夹中会有什么不同呢?顺便说一句,我尝试将路径更改为 /WEB-INF/ 并检查文件是否存在,它返回 true。 (如果这对案件有任何帮助)
    • 好吧,显然,它确实有所作为。我将它移到 WEB-INF/lib 文件夹中,它运行良好。我还是想知道为什么
    • 我不记得了,但我认为 servlet 或 jsp 规范说 WEB-INF 中的文件对 Web 应用程序不可见/不可访问
    猜你喜欢
    • 2014-08-17
    • 2015-07-29
    • 1970-01-01
    • 2016-04-05
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多