数据库中照片怎么在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>

1、准备要显示的图片,并创建一个最简单的jsp页面,运行起来。

2、通过ImageIo读取图片。

3、将图像的元字节数据保存到bytearray中。

4、将图像的字节数据用base64编码,转换成base64字符串。

5、把base64编码过的字符串放到img元素的src属性上。

6、最后就可以看到效果了。

我把你的代码稍微改造了下,我这边是可以显示图片的。代码如下:

数据库 *** 作部分:

package com.database

import java.io.InputStream

import java.sql.*

/**

 * @作者 王建明

 * @创建日期 13-10-7

 * @创建时间 下午12:32

 * @版本号 V 1.0

 */

public class DataBaseUtil {

public static InputStream getImageStreamFromDataBase() {

Connection conn = null

try {

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

conn =

DriverManager.getConnection("jdbc:mysql://localhost/quickstart", "root", "123456")

Statement stmt = conn.createStatement()

String sql = "select book_image from tbl_book where id=1 "

ResultSet rs = stmt.executeQuery(sql)

if (rs.next()) {

return rs.getBinaryStream("book_image")

}

} catch (Exception e) {

System.out.println("出现异常: " + e.getMessage())

} finally {

try {

if (conn != null)

conn.close()

} catch (SQLException e) {

e.printStackTrace()

}

}

return null

}

}

servlet部分:

package com.servlet

import com.database.DataBaseUtil

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import java.io.IOException

import java.io.InputStream

import java.io.OutputStream

/**

 * @作者 王建明

 * @创建日期 13-10-7

 * @创建时间 下午12:18

 * @版本号 V 1.0

 */

public class ShowImage extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response)

}

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

InputStream in = DataBaseUtil.getImageStreamFromDataBase()

OutputStream toClient = response.getOutputStream()

response.reset()

response.setContentType("image/jpg")//或gif

int len = 10*1024*1024

byte[] P_Buf = new byte[len]

int i

while((i = in.read(P_Buf)) != -1){

toClient.write(P_Buf, 0, i)

}

in.close()

toClient.flush()

toClient.close()

}

}

web.xml中的servlet配置:

    <servlet>

        <servlet-name>ShowImage</servlet-name>

        <servlet-class>com.servlet.ShowImage</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>ShowImage</servlet-name>

        <url-pattern>/showImage</url-pattern>

    </servlet-mapping>

页面中加载图片方式:

<img src="showImage" />

希望对你有帮助O(∩_∩)O~


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存