Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jspservlet从数据库检索多个图像_Java_Database_Jsp_Servlets_Image Processing - Fatal编程技术网

Java 使用jspservlet从数据库检索多个图像

Java 使用jspservlet从数据库检索多个图像,java,database,jsp,servlets,image-processing,Java,Database,Jsp,Servlets,Image Processing,请看一下我用于从数据库检索图像的以下代码段: 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.getConnectio

请看一下我用于从数据库检索图像的以下代码段:

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那样调用图像。

那么,我应该如何设置响应类型,以便在一个页面中显示多个图像呢?如果我能够将图像的名称显示为文本会更好。是否可能?您需要(比如)构建一个HTML页面,其中包含对图像(数字1、2、3)等的引用列表。因此,您需要一个JSP来请求图像列表及其名称,并嵌入到这些图像的链接。这是一个两阶段的过程。你可以。。。如果你把它们都放在一个大图像中,然后使用CSS只显示它所需要的部分。但这绝非易事。