jsp页面上怎么获得数据库中查询得到的图片文件
我用的是struts来实现的
但是不知道怎么将oracle 数据库中查询得到的图片输出到页面上来
我的数据库操作是这样的:
package book;
import java.sql.*;
import java.io.*;
import oracle.jdbc.driver.*;
import oracle.sql.*;
public class AccessImgByDB {
public AccessImgByDB() {
}
//插入图片
public static void insertImg() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@192.168.0.3:1521:EGOV4JS";
Connection con = DriverManager.getConnection(url, "BOOKMAN", "BOOKMAN");
boolean defaultCommitType = con.getAutoCommit();
con.setAutoCommit(false);
Statement stmt = con.createStatement();
stmt.executeUpdate(
"insert into BOOK (BOOKID,BOOKNAME,BOOKIMG) values(119,'数学',empty_blob())");
String cmd = "SELECT * FROM Book WHERE bookname='数学' for update ";
ResultSet rset = stmt.executeQuery(cmd);
System.out.println(cmd);
rset.next();
BLOB blob = null;
try
{
blob = (oracle.sql.BLOB) ((OracleResultSet) rset).
getBlob("BOOKIMG");
}
catch (SQLException ex1)
{
System.out.println("+++++++++++++++发现异常!");
}
File binaryFile = new File(
"D:\\Myproject\\book\\1.jpg");
System.out.println( binaryFile.getPath());
System.out.println( binaryFile.exists());
// SecurityManager manager = new SecurityManager();
// System.out.println("SecurityManager.checkRead(java.lang.String)="+manager.checkRead("D:\\1.JPG"));
FileInputStream instream = new FileInputStream(binaryFile);
OutputStream outstream = blob.getBinaryOutputStream();
int size = blob.getBufferSize();
byte[] buffer = new byte[10000];
int length = -1;
while ( (length = instream.read(buffer)) != -1)
outstream.write(buffer, 0, length);
instream.close();
outstream.close();
con.commit();
con.setAutoCommit(defaultCommitType);
con.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//获取图片
//获取图片
public static void getImg() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@192.168.0.3:1521:EGOV4JS";
Connection con = DriverManager.getConnection(url, "BOOKMAN", "BOOKMAN");
boolean defaultCommit = con.getAutoCommit();
con.setAutoCommit(false);
/* 查询BLOB对象 */
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT * FROM BOOK WHERE BOOKname='数学 '");
rs.next();
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BOOKIMG");
BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());
in.close();
con.commit();
rs.close();
con.close();
}
catch (Exception ex) {
ex.printStackTrace();
/* 正式提交 */
}
}
public static void main(String[] argv) {
System.out.println("insert start");
AccessImgByDB.insertImg();
System.out.println("insert end");
AccessImgByDB.getImg();
}
}