从数据库中读取多张图片并显示在同一页面中

一开始想的是while(rs.next())循环读取每张图片并直接保存在session中,传到InputStream中,形成一张张图片,后来发现InputStream对象被覆盖了,意思是在同一页面中显示的是多张一样的图片,而且还是最后一张的。

还想的要images.jsp文件循环输出一下,最后出现的结果是整个页面都出不来图片了。

始终还得记着images文件每次只能形成一张图片,那么我们可以给图片个id,再调用根据id查询的方法,每次根据id获得一张图片,并形成一张图片。执行多次,就会有多张图片。

代码如下;

<%
int i=i;
 while(rs.next()){ //rs是所有记录的总和,是个全部结果集,包含的图片也是全部,所以赋值i=1;从第一张图片开始遍历
%>
  <a href="imageFound.jsp" >//imageFound.jsp原理跟images.jsp文件一样,调用得方法不同,因为有id存在
          <img  src="imageFound.jsp?i=<%=i%>></a>
<%
     i++;
} %>

imageFound.jsp

<%@ page import="java.sql.*" %>
    <%@ page import="java.io.*" %>
    <%@ page import="java.util.*" %>
<% //虽然每次只能生成一张图片,但是每次传过来的i在变,根据i查出的图片也在变
       int i=Integer.parseInt(request.getParameter("i"));//接受传过来的i值,目的匹配与数据库中图片的id
       
       ResultSet rs=info.SelectIds(i);//调用方法根据id查询图片
       while(rs.next()){
	   InputStream  is =rs.getBinaryStream("photo");
	     OutputStream os=null;
	     response.setContentType("text/html");
	     os = response.getOutputStream();
     
	     byte[] buffer=new byte[1024];//一次传的文件量
			int len=0;
			try {
			while((len=is.read(buffer))>0){//读
				os.write(buffer, 0, len);//写 (,起始位置,长度)
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
	}
       }
		out.clear();
		out=pageContext.pushBody();
   
    
%>


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛涛之海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值