如何检索和显示数据库中的图像在 jsp 页中

如何检索和显示数据库中的图像在 jsp 页中,第1张

用JSP从数据库中读取图片并显示在网页上:

环境mysql+tomcat:

<1>先在mysql下建立如下的table. 并insert图像

mysql.sql文件如下:

CREATE TABLE photo (

photo_no int(6) unsigned NOT NULL auto_increment,

image blob,

PRIMARY KEY (`photo_no`)

)

<2>把show.jsp放在tomcat的任意目录下. show.jsp作用:从数据库中读出blob,并产生image/jpg.

show.jsp文件如下:

<%@ page contentType="text/htmlcharset=gbk" %>

<%@ page import="java.io.*"%>

<%@ page import="java.sql.*, javax.sql.*" %>

<%@ page import="java.util.*"%>

<%@ page import="java.math.*"%>

<%

String photo_no = request.getParameter("photo_no")

//mysql连接

Class.forName("com.mysql.jdbc.Driver").newInstance()

String URL="jdbc:mysql://localhost:3306/job?user=root&password=111111"

Connection con = DriverManager.getConnection(URL)

//oracle连接

//String URL="jdbc:oracle:thin@localhost:1521:orcl2"

//user="system"

//password="manager"

//Connection con = DriverManager.getConnection(URL,user,password)

try{

// 准备语句执行对象

Statement stmt = con.createStatement()

String sql = " SELECT * FROM PHOTO WHERE photo_no = "+ photo_no

ResultSet rs = stmt.executeQuery(sql)

if (rs.next()) {

Blob b = rs.getBlob("photo_image")

long size = b.length()

//out.print(size)

byte[] bs = b.getBytes(1, (int)size)

response.setContentType("image/jpeg")

OutputStream outs = response.getOutputStream()

outs.write(bs)

outs.flush()

rs.close()

}

else {

rs.close()

response.sendRedirect("./images/error.gif")

}

}

finally{

con.close()

}

%>

<3>把如下文件放在show.jsp的同一目录下.

index.html文件如下:

<HTML>

<HEAD>

<TITLE>图像测试 </TITLE>

</HEAD>

<BODY>

<TABLE>

<TR>

<TD>图像测试</TD>

</TR>

<TR>

<TD><img src="show.jsp?photo_no=2"></TD>

</TR>

</TABLE>

</BODY>

</HTML>

我的笔记:

6:对数据库存取图片进行的 *** 作:

核心思想:通过二进制流的形式进行存储和读取。

具体:存储图片:一般是通过文件上传的方式进行存储的

1.首先通过request获得表单中图片的地址

2.然后根据这个路径可以使FileInputStream获得文件输入流

3.pstmt.setBinaryStream(i,

fis,

fis.available())

最后pstmt.executeUpdate()就完成整个插入语句了。

读取:1.根据url的id传一个对应数据库摸个图片的id号

2.根据这个id执行查询,通过rst.getBinaryStream(1)返回一个输入流(里面存的是图片)

3.读输入流,放到字节数组中,再通过response返回一个能输出二进制流的ServletOutputStream实例(ServletOutputStream

sos=

response.getOutputStream()

),

4.通过这个输出流把字节数组的字节流写出

希望对你有所帮助哈


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6836835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存