Servlets 从WebContent/IMAGES/而不是WEB-INF读取文件
我在Java Web应用程序中具有以下结构: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
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" />
另见:
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" />
另见:
WebContent
?如果要将图像动态上载到该位置,则该位置不是上载图像的正确位置。请将图像文件夹保留在WEB\u INF之外。WEB-INF会阻止对其下任何资源的直接访问。是否无法从WebContent/images文件夹访问image.jpg?您仍然需要一个预定义的位置。除了一些静态图像外,为什么要将图像存储到WebContent
?如果要将图像动态上载到该位置,则该位置不适合上载图像。