数据库里存储的图片字段定义类型为blob,java里对应的类型为byte[],怎么将图片显示到jsp页面??

如题。参考:其他字段如String型<td><s:propertyvalue="picName"/></td>Date型:<td><s:propertyvalue="%{... 如题。参考:其他字段如String型<td><s:property value="picName"/></td>
Date型:<td><s:property value="%{#util.dateToString(createDate)}"/></td>
(注明date型里是调了一个类型转换方法,就是blob不知道怎么转换才能这样显示出来)
展开
 我来答
匿名用户
2013-06-08
展开全部
我把我以前收集的给你贴出来,希望能对你有所帮助
jsp编程从数据库中取出图片

1、读取图片数据testimageout.jsp文件
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.io.*" %>
<html>
<body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");
Statement stmt=con.createStatement();
ResultSet rs=null;
int id=Integer.parseInt(request.getParameter("id"));
String sql = "select image from picturenews where id='"+id+"'";
rs=stmt.executeQuery(sql);
while(rs.next())
{
ServletOutputStream sout = response.getOutputStream();
InputStream in = rs.getBinaryStream(1);
byte b[] = new byte[0x7a120];
for(int i = in.read(b);i!=-1)
{
sout.write(b);
in.read(b);
}
sout.flush();
sout.close();
}
%>
<body>
</html>

2、取出所要显示的图片showimage.jsp文件
<%@ page contentType="text/html;charset=bg2312"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>显示数据库图片测试页</title>
</head>
<body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");
Statement stmt=con.createStatement();
String sql=new String();
sql = "select id from picturenews";
ResultSet rs=stmt.executeQuery(sql);
//显示最后一条记录的图片
rs.last();
%>
<table>
<tr><td><img src='testimageout.jsp?id=<%=rs.getInt("id")%>'></td></tr>
</table>
</body>
</html>
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
匿名用户
2013-06-08
展开全部
这个试下吧.
....
<body>
<%
//获取图片对象(根据主键)的sql语句
String showImage = " select * "+
" from 存放图片的表 "+
" where id='1' " ;

BufferedInputStream inputImage = null;

try{
//conn为一个Connection对象
Statement st = conn.createStatement();
//获取结果集
ResultSet rs=st.executeQuery(showImage);
//输出文件名
String filename="";
if(rs.next()) {
Blob blob = (Blob)rs.getBlob("BINARYFILE");
filename=rs.getString("FILENAME");
//读取图片字节到数据流中
inputImage = new BufferedInputStream(blob.getBinaryStream());
}

BufferedImage image = null;
image=ImageIO.read(inputImage);
//获取响应的输出流
ServletOutputStream so = response.getOutputStream();
//创建图片到页面
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(so);
encoder.encode(image);
inputImage.close();
}
%>
</body>
<%
catch(Exception e){

}
finally{
closeConn(conn);
}
%>
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-08
展开全部
用AppendChunk和GetChunk方法可以存取或用ADO2.5的Stream对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-08
展开全部
用流还原文件显示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-08
展开全部
图片通常都是放一个链接到数据库里,很少有直接放图片到数据库
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式