Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JSP中显示文件系统存储的图像_Java_Image_Spring_Jsp_Tomcat - Fatal编程技术网

Java 在JSP中显示文件系统存储的图像

Java 在JSP中显示文件系统存储的图像,java,image,spring,jsp,tomcat,Java,Image,Spring,Jsp,Tomcat,我正在尝试在我的webapp外部显示存储在本地文件系统中的图像。 以下问题: 编辑:我希望文件位于web应用程序之外,因为这些图像是由用户上传的,如果我将它们放在web应用程序中,我可能会在重新部署web应用程序时丢失它们 但该文件未显示在网页上。当我尝试通过:localhost:8080/images/imageName.jpg打开文件时,会出现一个资源不可用错误 我已经在我的server.xml中添加了上下文(遍历Servers->Config->server.xml): 。。。。。。。。

我正在尝试在我的webapp外部显示存储在本地文件系统中的图像。 以下问题:

编辑:我希望文件位于web应用程序之外,因为这些图像是由用户上传的,如果我将它们放在web应用程序中,我可能会在重新部署web应用程序时丢失它们

但该文件未显示在网页上。当我尝试通过:localhost:8080/images/imageName.jpg打开文件时,会出现一个资源不可用错误

我已经在我的server.xml中添加了上下文(遍历Servers->Config->server.xml):

。。。。。。。。
此外,my web.xml的外观如下所示:


违约
/静止的/*
DMSystem
org.springframework.web.servlet.DispatcherServlet
2.
DMSystem
/
我希望它显示的位置:

Mytomcat位于:F:\Software\Servers\tomcat7\tomcat7 而图像文件夹为:F:\Projects\SpringExample\Images

图像路径是相对于tomcat文件夹获取的吗


另外,现在写我正在硬编码上传路径(在我的上传servlet中)和server.xml中的下载路径,是否有办法将它们作为配置或设置信息提供?

最简单的解决方案是复制图像并将其提供给web应用根目录。但是,如果此解决方案因任何原因不适合您,您始终可以创建一个servlet来“代理”您的图像:

创建servlet,将其映射到路径,例如:


imageProxyServlet
/图像氧化/*
然后在servlet类上,执行文件IO以读取图片,然后将其写入响应。不要忘记设置适当的内容类型,如果图像较大,请使用缓冲读/写以避免耗尽内存


然后你就可以为自己的形象服务了。对该URL的请求将被发送到images proxy servlet中

“我正在尝试在我的web应用程序外部显示存储在本地文件系统中的图像。”为什么不将图像包括在web应用程序中?虽然有办法,但web应用程序通常不/不应该访问本地文件系统。您必须编写一些内容来截取请求,从文件系统加载映像,然后返回它。@AndrewThompson:因为这些映像是由用户上载的,如果我重新部署web,它们可能会被删除app@GreyBeardedGeek:是的……这就是我向tomcat的server.xml添加新上下文的原因,tomcat的默认servlet应该拦截请求并重新运行映像?如果我错了,请纠正我是的,你错了。您需要使用该上下文实际部署一个应用程序(一个.war文件,或一个看起来像一个的“分解”目录结构,连同一个WEB-INF/WEB.xml文件)。提示:1)对于未标记xml的问题中的xml格式,请在代码段之前使用
。2) 您确定该代码段格式正确吗?似乎需要关闭