下面这个页面先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显示的图片是不同的,可是就是全部都是最后一个学生的照片,学生信息没有错。希望高手们给点建议和提醒,是不是代码的执行顺序有什么不对啊还是其他的原因,小弟我不懂,先谢谢了
<%
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显示的图片是不同的,可是就是全部都是最后一个学生的照片,学生信息没有错。希望高手们给点建议和提醒,是不是代码的执行顺序有什么不对啊还是其他的原因,小弟我不懂,先谢谢了
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取照片
----------------------------------------------------------------------------------------
完全正确,说白了,picture.jsp必须知道你要取谁的照片。之前你的方法是不行的
谢谢你们的宝贵意见,对了,如果我在pictue.jsp中获取img传递的值是不是用request.getquerrystring();啊
java里就是request.getParameter