oracle中用bolb字段存取图片,多次调用时出错?
丞相 2004-04-13 05:20:38 以下是我从oracle的bolb字段中读取图片用来显示的servlet,运行正常,但如果在一个页面中循环调用这个servlet就会出错,(因为在同一个页面中我想根据不同的id取出几十个图片),提示我
ServletOutputStream 已经关闭,就不能再往里写了,请教各位,怎么解决这个问题?
import java.sql.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DownLoad extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("======DownLoad begin=====");
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@10.216.0.2:1521:ORCL","test","test");
Statement stmt=conn.createStatement();
String id=request.getParameter("id");
String sql="SELECT id, name, content FROM test where id='"+id+"'";
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
Blob blob = rs.getBlob("content");
byte[] ab = blob.getBytes(1, (int)blob.length());
response.setContentType("image/jpeg");
ServletOutputStream op = response.getOutputStream();
op.write(ab);
op.flush();
op.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
System.out.println("======DownLoad end=====");
}
}