Servlets 从WebContent/IMAGES/而不是WEB-INF读取文件

Servlets 从WebContent/IMAGES/而不是WEB-INF读取文件,servlets,Servlets,我在Java Web应用程序中具有以下结构: TheProject -- [WebContent] -- -- [WEB-INF] -- -- index.jsp -- -- [IMAGES] -- -- -- image.jpg -- [Source Packages] ----ImageHandlerServlet.java 在ImageHandlerServlet.java中,我使用以下代码 String path = getServletCont

我在Java Web应用程序中具有以下结构:

TheProject
  -- [WebContent]
  -- -- [WEB-INF]
    -- -- index.jsp
  -- -- [IMAGES]
  -- -- -- image.jpg
  -- [Source Packages]
  ----ImageHandlerServlet.java
在ImageHandlerServlet.java中,我使用以下代码

    String path = getServletContext().getRealPath("/Images"); 
这给出了下面的路径。D:\BH\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\proj\Images

    URL path2 =getServletContext().getResource("/image.jpg"); 
返回null

    InputStream stream = getServletContext().getResourceAsStream("/image.jpg"); 
返回null

我想从WebContent/IMAGES/而不是WEB-INF读取文件。使用真实路径可以实现。我该怎么办?我咨询了以下相关职位

  • ServletContext#getResource()
    getResourceAsStream()
    采用与web内容相关的路径。从这一点开始,图像实际上就出现在
    /IMAGES/image.jpg

    InputStream stream = getServletContext().getResourceAsStream("/IMAGES/image.jpg"); 
    
    需要注意的是,在webcontent资源上,您应该绝不使用
    getRealPath()
    File
    API

    还应注意的是,当您打算提供图像时,不需要使用servlet。当将它们放在私有
    /WEB-INF
    文件夹之外时,它们可以通过这种方式在JSP中公开访问,如下所示:

    <img src="${pageContext.request.contextPath}/IMAGES/image.jpg" />
    
    
    
    或在Facelets中:

    <img src="#{request.contextPath}/IMAGES/image.jpg" />
    
    
    
    或者使用JSF:

    <h:graphicImage value="/IMAGES/image.jpg" />
    
    
    
    另见:
    ServletContext#getResource()和
    getResourceAsStream()
    采用与web内容相关的路径。从这一点开始,图像实际上就出现在
    /IMAGES/image.jpg

    InputStream stream = getServletContext().getResourceAsStream("/IMAGES/image.jpg"); 
    
    需要注意的是,在webcontent资源上,您应该绝不使用
    getRealPath()
    File
    API

    还应注意的是,当您打算提供图像时,不需要使用servlet。当将它们放在私有
    /WEB-INF
    文件夹之外时,它们可以通过这种方式在JSP中公开访问,如下所示:

    <img src="${pageContext.request.contextPath}/IMAGES/image.jpg" />
    
    
    
    或在Facelets中:

    <img src="#{request.contextPath}/IMAGES/image.jpg" />
    
    
    
    或者使用JSF:

    <h:graphicImage value="/IMAGES/image.jpg" />
    
    
    
    另见:

    将images文件夹保留在WEB\u INF之外。WEB-INF会阻止对其下任何资源的直接访问。是否无法从WebContent/images文件夹访问image.jpg?您仍然需要一个预定义的位置。除了一些静态图像外,为什么要将图像存储到
    WebContent
    ?如果要将图像动态上载到该位置,则该位置不是上载图像的正确位置。请将图像文件夹保留在WEB\u INF之外。WEB-INF会阻止对其下任何资源的直接访问。是否无法从WebContent/images文件夹访问image.jpg?您仍然需要一个预定义的位置。除了一些静态图像外,为什么要将图像存储到
    WebContent
    ?如果要将图像动态上载到该位置,则该位置不适合上载图像。