在jsp页面无法读取工程中新加入的图片的问题。

liweilance 2011-11-11 10:25:18
语言:java,web:jsp.
问题描述
在一个xx工程中,图片放在xx\WebContent\images下面
比如1.jpg。
通过某些处理比如把ppt文件转化成jpg格式放在此文件夹下,在读取该文件夹下的图片
这时不刷新eclipse工程图片就不会显示。
正常读取的过程是我把图片的url放到标签img 中的src下,比如“xx\WebContent\images\1.jpg”
读取之后的路径为http://localhost:8080/xx\WebContent\images\1.jpg
此时能把路径读取出来,但是只要是不刷新eclipse就不能读取该图片。
请教用什么方式能把图片读取出来
...全文
298 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
magong 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 baozhifei 的回复:]

引用 28 楼 magong 的回复:

刚在3.7的Eclipse上做了一下,放到项目中的图片,马上可以访问的。
楼主的版本是不是低了点?


他的情况是程序运行时,生成的测试图片,类似图片上传。不是直接复制到Eclipse中去得
[/Quote]
有说吗?
那就是生成测试图片的程序有问题?
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
Eclipse的构建,是把Eclipse中的文件复制到Tomcat发布的临时目录中去,然后同步一下。

所以,如果图片直接生成到Tomcat的临时目录中去,就一定会显示的。

但是这个图片不会保存在Eclipse项目中
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 magong 的回复:]

刚在3.7的Eclipse上做了一下,放到项目中的图片,马上可以访问的。
楼主的版本是不是低了点?
[/Quote]

他的情况是程序运行时,生成的测试图片,类似图片上传。不是直接复制到Eclipse中去得
magong 2011-11-11
  • 打赏
  • 举报
回复
刚在3.7的Eclipse上做了一下,放到项目中的图片,马上可以访问的。
楼主的版本是不是低了点?
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
不需要构建,是可以读出来的。

是你jsp显示图片没有显示对。

要不上传图片,每传一张还得重新构建一次才能好用吗。

你在好好看看,把你jsp显示图片的代码贴上来,我看看~
liweilance 2011-11-11
  • 打赏
  • 举报
回复
吃饭了~回来再和各位学习
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
如果是你自己的单体测试,那是要自己准备数据的。

我们以前不都是做单体测试的数据吗,然后截图做证据,还要把数据一起传上去~
liweilance 2011-11-11
  • 打赏
  • 举报
回复
打出来了,也看到了。知道是临时的文件,
那就是说我保存的位置还是正确的,在MyProject/resources/images下面
我读取的路径也是正确的,
只是必须要重新构建一次工程。。。
即时我用="${pageContext.request.contextPath}/去读取图片
只要没构建就读取不出来被

[Quote=引用 19 楼 baozhifei 的回复:]
你打印webRoot到控制台,一看你就明白了。Tomcat发布工程的目录是临时的,不是Eclipse的目录
[/Quote]
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
如果你是在你自己电脑上测试,别人是访问不了得,因为图片在你的硬盘上啊。

如果是代码编译好,部署到指定的测试机器上,大家都通过浏览器去访问,就都能看见了。
而且当你正式部署环境的时候,目录也不是临时的了,生成就是生成了。

现在是临时的目录是因为你用Eclipse开发,他就这样,发布工程就用一个临时的目录。正式环境就不这样了。

要是想大家一起测试,就得像Keitas一样,部署到真正的生产环境中去,大家访问一个机器来测试。

[Quote=引用 17 楼 liweilance 的回复:]

那就是说我保存时候的路径不正确
我是保存在工程的/resources/images/下面了,
实际应该保存到通过webroot获取的真实路径下就可以自由取出来了对巴?
但是这个真实路径是个临时文件夹把?
能确保上传到/resources/images/下面的图片一直存在么?
比如一个人上传了图片,别人也能看到么?

引用 13 楼 baozhifei 的回复:
引用 10 楼 l……
[/Quote]
liweilance 2011-11-11
  • 打赏
  • 举报
回复
你的意思是说解决不了被。。。
因为必须构建一次才可以读出来被。。。

[Quote=引用 18 楼 kouyisc 的回复:]
引用 6 楼 liweilance 的回复:
我写错了,没有webcontent。
就是说我把图片放在了这个路径下MyProject/resources/images/xxx.png,
我用这个取
<img src="/images/xxx.png" width="100" height="100" alt="" />
得出

http://localhost:8080/MyProj……
[/Quote]
liweilance 2011-11-11
  • 打赏
  • 举报
回复
你的意思是说图片我还可以保存到工程的相对文件夹下
而不是写在真实路径下?测试的时候再写伪代码
去测试不用刷新工程的图片么?
我觉得如果是这样肯定不行的阿。。
其实测试结果不是给自己看得哦,自己明白是怎么回事
要给别人看得,我不能每次都写伪代码把,,,
求解,谢谢了


[Quote=引用 15 楼 magong 的回复:]
引用 7 楼 liweilance 的回复:

5楼说的我清楚,只是这样要如何测试阿。。。每次都要刷新?
所以想求别的解决方法,谢谢


哦。
测试嘛,
你可以在JSP页面中加入
<%= application.getRealPath() %>
找出Web应用的真实部署目录,然后将图片拷贝到这个目录下的images目录中,不要拷贝到Eclipse项目中了。
[/Quote]
magong 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liweilance 的回复:]

如果我把图片不放在工程的/resources/images/下面
而是放到通过webRoot获得的真实路径下就能直接读取出图片来了。。。
图片怎那么变名称都无所谓也不用刷eclipse

[/Quote]
哦,动作挺快的,已经解决了哦。
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
你打印webRoot到控制台,一看你就明白了。Tomcat发布工程的目录是临时的,不是Eclipse的目录
kouyiSC 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liweilance 的回复:]
我写错了,没有webcontent。
就是说我把图片放在了这个路径下MyProject/resources/images/xxx.png,
我用这个取
<img src="/images/xxx.png" width="100" height="100" alt="" />
得出

http://localhost:8080/MyProject/resources/images/xxx……
[/Quote]

和你是不是在webContent目录或什么目录没多大关系。。关键是myeclipse没有自动构建一次。。。

1. 一般情况下,我们修改了文件名称,保存一下就行了。。必须myeclipse设置自动构建的。
2. 要么就是设置了自动构建,但是修改了名称未保存。。。

这是eclipse工具的机制。。。必须要这么干。。。
liweilance 2011-11-11
  • 打赏
  • 举报
回复
那就是说我保存时候的路径不正确
我是保存在工程的/resources/images/下面了,
实际应该保存到通过webroot获取的真实路径下就可以自由取出来了对巴?
但是这个真实路径是个临时文件夹把?
能确保上传到/resources/images/下面的图片一直存在么?
比如一个人上传了图片,别人也能看到么?

[Quote=引用 13 楼 baozhifei 的回复:]
引用 10 楼 liweilance 的回复:

如果我把图片不放在工程的/resources/images/下面
而是放到通过webRoot获得的真实路径下就能直接读取出图片来了。。。
图片怎那么变名称都无所谓也不用刷eclipse


引用 4 楼 baozhifei 的回复:
JSP中要显示该图片的话,可以这么写

<img src="${pageContext.requ……
[/Quote]
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
你可以打印webRoot到控制台,你就知道Tomcat把工程发布到哪里了,然后打开那个目录,你就知道图片到底生没生成对。

如果图片生成了,就是你jsp没有显示对,就是path变量不对。
magong 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liweilance 的回复:]

5楼说的我清楚,只是这样要如何测试阿。。。每次都要刷新?
所以想求别的解决方法,谢谢

[/Quote]
哦。
测试嘛,
你可以在JSP页面中加入
<%= application.getRealPath() %>
找出Web应用的真实部署目录,然后将图片拷贝到这个目录下的images目录中,不要拷贝到Eclipse项目中了。
hailinger14 2011-11-11
  • 打赏
  • 举报
回复
<img src="<%=path %>/images/xxx.png" width="100" height="100" alt="" />
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liweilance 的回复:]

如果我把图片不放在工程的/resources/images/下面
而是放到通过webRoot获得的真实路径下就能直接读取出图片来了。。。
图片怎那么变名称都无所谓也不用刷eclipse


引用 4 楼 baozhifei 的回复:
JSP中要显示该图片的话,可以这么写

<img src="${pageContext.request.contextPath}/resources……
[/Quote]

是这么回事~
baozhifei 2011-11-11
  • 打赏
  • 举报
回复
<img src="${pageContext.request.contextPath}/resources/images/xxx.png" width="100" height="100" alt="" />


<img src="/images/xxx.png" width="100" height="100" alt="" />

这两句话是有区别的,你懂的,读图片的时候别取错了,${pageContext.request.contextPath}这个是需要加上的。
加载更多回复(33)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧