【问题标题】:Does ServletContext.getRealPath() work with web fragments?ServletContext.getRealPath() 是否适用于 Web 片段?
【发布时间】:2014-01-13 15:14:14
【问题描述】:

我使用 web 片段(servlet 3 规范),因此可以加载例如META-INF/resources/access.xml 文件位于我的 WAR 的 /WEB-INF/lib/ 的库中,通过 ServletContext.getResourceAsStream("access.xml")。

对ServletContext.getRealPath("access.xml") 执行相同操作不起作用 (=> null)。

规范规定:

getRealPath 方法接受一个String 参数并返回一个路径对应的本地文件系统上文件的String 表示。仅当调用 getRealPath() 时容器已从其包含的 JAR 文件中解压缩它们时,才必须考虑 JAR 文件的 META-INF/resources 目录中的资源 制作完成,在这种情况下必须返回解压后的位置。

我的容器(Tomcat)没有解压罐子,这似乎是问题所在? Tomcat如何解压罐子。打包 WAR 的时候要不要拆罐子?

【问题讨论】:

    标签: java tomcat war servlet-3.0 getresource


    【解决方案1】:

    所以这取决于你想要做什么。如果您试图在包含的库依赖项中获取文件的位置,那么我不确定。如果您想阅读 access.xml 文件的内容,那么您可以使用

    new InputStreamReader(context.getResourcesAsStream("access.xml")); 
    

    然后使用InputStreamReader 获取文件的内容。

    【讨论】:

      【解决方案2】:

      是的,getResourcesAsStream() 始终有效。但是getRealPath() 没有。

      答案:不要尝试将getRealPath() 与网络片段一起使用。

      【讨论】:

        猜你喜欢
        • 2014-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多