<%@ page contentType="text/html;charset=gb2312"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title>SQL Server</title> 
</head> 
<body> 
<table>
<% 
java.sql.Connection sqlCon; //数据库连接对象 
java.sql.CallableStatement sqlStmt; //可调用语句对象 
java.sql.ResultSet sqlRst; //结果集对象 java.lang.String strCon; //数据库连接字符串 
java.lang.String strSQL; //SQL语句 
java.lang.String inx="1";//装载JDBC-ODBC驱动程序 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //设置数据库连接字符串 
strCon = "jdbc:odbc:imagedemo"; //连接数据库 
sqlCon = java.sql.DriverManager.getConnection(strCon,"sa","netmarch"); //准备SQL语句 
strSQL = "{call P_PRO5(?)}"; //准备可调用语句对象 
sqlStmt = sqlCon.prepareCall(strSQL); //设置输入参数 
sqlStmt.setString(1,inx); 
//执行该存储过程并返回结果集 
sqlRst = sqlStmt.executeQuery(); //获取来自结果集中的数据 
while (sqlRst.next())
{    byte b[] =sqlRst.getBytes(2);
    response.setContentType("image/jpeg"); //假设为jpeg图片.如改为jpg则提示下载到磁盘
    response.getOutputStream().write(b, 0, b.length);
  %><%
}
//关闭记录集 
sqlRst.close(); //关闭可调用语句对象 
sqlStmt.close(); //关闭数据库对象 
sqlCon.close(); 
%> 
</table>
</body> 
</html>

解决方案 »

  1.   

    楼上的朋友。
    这种方法可以实现,但是在此网页中只能返回图片,response.setContentType("image/jpeg"); 
    不能返回“text/html”格式呀
    有没有更好的方法可以显示图片又可以显示html脚本。
        解决马上给分!
      

  2.   

    将html和图片做为两个请求来处理。
    实际对于浏览器来说,也是这么处理的。
      

  3.   

    对,生成图片,一般做一个servlet,显示页面,用一个JSP。
      

  4.   

    请问用的是sqlserver还是oracle,driver呢?
    我在sqlserver2000+sqlserver for JDBC DRIVER环境下调试,无法正确显示图像(显示乱码),不知是什么原因?
    我对存取图像不甚了了,能否帮我分析一下?万分感谢!!
      

  5.   

    //打开数据库
      ResultSet result=null;
      String Sql=null;
      PreparedStatement prestmt=null; 
      DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
      DbaObj.OpenConnection();
     //取得数据库中的数据
     Sql="select  *  from  list order by date desc";
     result=DbaObj.ExecuteQuery(Sql);
     result.next();
     //将数据库中的数据读到流中
      InputStream in =result.getBinaryStream("body"); 
     //设置输出的格式 
      response.reset(); 
      response.setContentType("image/jpeg");
     //循环去出流中的数据 
      byte[] b = new byte[1024]; 
      int len; 
      while((len=in.read(b)) >0) 
      response.getOutputStream().write(b,0,len); 
      in.close();