您的位置:首页 > 数据库 > Oracle

JSP读取Oracle数据库里的图片Blob字段并显示在页面上

2011-12-16 15:56 549 查看
The original website:/article/4172090.html

/**

* 转载请注明作者longdick http://longdick.iteye.com
*

*/

首先定义一个读取Oracle数据库的Blob字段并把字节写入一个输出流的方法:

Java代码

public static void writeImg(OutputStream os) { Connection con; try { con = ConnectionFactory.getConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select pic from blob_table where b_id=1"); byte[] b = new byte[1024]; if (rs.next()) { Blob blob = rs.getBlob(1); InputStream is = blob.getBinaryStream(); int i = 0; while ((i = is.read(b)) != -1) { os.write(b, 0, i); } os.close(); is.close(); } rs.close(); stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } }

public static void writeImg(OutputStream os) {
Connection con;
try {
con = ConnectionFactory.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select pic from blob_table where b_id=1");
byte[] b = new byte[1024];
if (rs.next()) {
Blob blob = rs.getBlob(1);
InputStream is = blob.getBinaryStream();
int i = 0;
while ((i = is.read(b)) != -1) {
os.write(b, 0, i);
}
os.close();
is.close();
}
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}


然后做一个servlet,在doGet方法里调用writeImg方法

Java代码

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DBOperator.writeImg(response.getOutputStream()); }

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

DBOperator.writeImg(response.getOutputStream());

}


最后只需要在显示的jsp页面里面定义img标签的src属性为servlet的访问地址就可以了:

Html代码

<img src="servlet/newServlet" >
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: