为什么使用在一个jsp中img不能循环读取另外一个jsp作为显示图片!!

truemanone 2009-03-31 03:14:40
下面这个页面先session这个student对象
<%
for(int i=0; i <nn; i++)
{

student[i] =(Studentdata)request.getAttribute("aa"+i); //循环获取值变量名自动加i;
session.setAttribute("student",student[i]);
%>
<tr>
<td> <%=student[i].getSId() %> </td>
<td> <%=student[i].getSName() %> </td>
<td> <%=student[i].getSSex()%> </td>
<td> <%=student[i].getSAddress() %> </td>
<td>
<img src="picture.jsp"/> //在在这里预想能够通过picture.jsp读取照片显示出来在这个页面,因为每次到这里就循环读取一次信息
</td>
</tr>
<% }%>
然后再新建一个picture.jsp用来显示照片
<% Studentdata student=(Studentdata)request.getAttribute("student");%>
<table border="1">
<tr>
<td> <% //预想让这段代码显示图片在这个表格中
response.setContentType("image/jpeg");
OutputStream sout = response.getOutputStream();
InputStream in = student.getSPicture().getBinaryStream(); //这里读取照片
byte b[] = new byte[in.available()];
int len=0;
while ((len = in.read(b))!= -1) {
sout.write(b,0,len);
}
sout.flush();
sout.close();
in.close();
%>
</td>
</tr>
</table>
我是想查询所有学生的信息,并显示每个学生的对应照片,可是结果是所有的照片都是最后一个学生的照片,我确定所有的照片不是一样的。我预想是让一个循环,每次循环都session.setAttribute("student",student[i]); 那继续执行代码的话,按理img显示的图片是不同的,可是就是全部都是最后一个学生的照片,学生信息没有错。希望高手们给点建议和提醒,是不是代码的执行顺序有什么不对啊还是其他的原因,小弟我不懂,先谢谢了
...全文
343 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
truemanone 2009-04-02
  • 打赏
  • 举报
回复
请问如何在jsp加载的时候就自动触发相应的action并传值过去,而不是要必须通过form表单提交。就是正常的表单按钮提交都要按钮触发请求,但是我想不通过按钮,而是在jsp加载的时候就自动触发相应的action并传值
huguang 2009-04-01
  • 打赏
  • 举报
回复
原来是写asp的吧?
java里就是request.getParameter
truemanone 2009-04-01
  • 打赏
  • 举报
回复
恩,知道了,只有这种办法了现在,不过如果有更好的办法,不用那么麻烦就好了,比如可以不用使用另外一个页面来显示图片,直接在用的页面像输出数据那样输出来就好了。
谢谢你们的宝贵意见,对了,如果我在pictue.jsp中获取img传递的值是不是用request.getquerrystring();啊
酒浪子 2009-04-01
  • 打赏
  • 举报
回复
传id过来后,根据id取出对应的数据,不然的话picture.jsp这个页面就会显示循环的最后条记录的信息.
huguang 2009-04-01
  • 打赏
  • 举报
回复
那我是不是还要在picture.jsp中再一次从数据库中根据id来查询student信息,再把图片显示出来啊
----------------------------------------------------------------------------------------
完全正确,说白了,picture.jsp必须知道你要取谁的照片。之前你的方法是不行的
truemanone 2009-04-01
  • 打赏
  • 举报
回复
有明白和不明白,不明白的是如果根据你说的方法,在picture.jsp中根据student的id取照片,那我是不是还要在picture.jsp中再一次从数据库中根据id来查询student信息,再把图片显示出来啊。还是有另一种意思啊
truemanone 2009-04-01
  • 打赏
  • 举报
回复
是java的,那就用request.getParameter
huguang 2009-03-31
  • 打赏
  • 举报
回复
这个原因很简单,就是http加载图片的过程楼主没弄清楚
http请求,响应这个过程,服务器返回的只有html代码,注意我是相对css和img等说的。
当浏览器解析html的时候,读到需要外联的css或图片的时候,就会再发请求,这也是为什么当网络状况非常不好的时候,
会出现外联的css丢失,图片不显示等情况的发生。

针对楼主的代码,html解析完的时候,session里的student就是最后一个,不论你的picture.jsp请求几次,都是这个student。
不知道我解释清楚了没有

所以解决办法就是不要把student放session里。
你可以这样
<img src="picture.jsp?sid=<%= student[i].getSId() %>"/>
然后在picture.jsp里获取sid,根据student的id取照片

81,078

社区成员

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

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