使用jsp-servlet从数据库中检索多个图像

看一下我用来从数据库中检索图像的以下代码片段:

response.setContentType("image/gif"); String url="jdbc:oracle:thin:@localhost:1521:xe"; String username="xyz"; String password="abc"; Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn=DriverManager.getConnection(url,username,password); String sql="Select name,description,image from pictures"; PreparedStatement stmt=conn.prepareStatement(sql); ResultSet resultSet=stmt.executeQuery(); ServletOutputStream sos=response.getOutputStream(); while(resultSet.next()) { byte[] buffer=new byte[1]; InputStream is=resultSet.getBinaryStream(3); while(is.read(buffer)>0){ sos.write(buffer); } sos.println(); sos.flush(); } sos.close(); conn.close(); 

我正在尝试使用此代码来显示从数据库中检索的图像。 该代码应该从存储在数据库中的多行中检索多个图像。 但是此代码显示单个图像。

为什么会显示多个图像? 您正在将响应的内容类型设置为image / gif,这意味着浏览器将需要单个图像。 但是,您将多个图像流式传输到响应流中。

所以我怀疑浏览器只拍摄了第一张图片。 它也可以拒绝整个响应被破坏(因为我们有多个图像流在一起)。

您需要确定为每个请求检索的图像,并修改上述内容以提取单个图像(通过适当修改SQL)。

您不能一次返回多个图像。 您可以将对servlet的访问视为对文件的访问。

在这里,您创建了一个包含多个图像的“文件”。 大多数图像渲染器只能看到存储在“文件”中的第一个图像。

如果您想拥有多个图像,则必须执行多个请求(或打开多个文件)。

正如Brian和Colin已经指出的那样,你不能有多个图像,所有图像都可以同时访问。 看来你的任务是在同一页面上有很多图像。 然后是Brian建议的方式之一(使用调用图像的JSP)。 另一种方法是将页面划分为多个框架集,这些框架集本身可以像JSP那样调用图像。