问题描述
我的要求是通过jsp将艺术家详细信息和他的图片插入oracle数据库,并通过另一个jsp程序检索回信息和图片.
My requirement is to insert artist details and his picture through jsp into oracle database and retrieve back information and picture through another jsp program.
艺术家表有五列,第四列是varchar2,第五列是Blob类型.
artist table has five columns, four are varchar2 and fifth column is blob type.
我已经成功插入并能够成功检索,但是它只显示图像的问题.下面是代码.我被困住了.我需要帮助.请建议我.
I have successfully inserted and successfully able to retrieve but the problem it displays only image. Below is the code. I am stuck. I need help. Please suggest me.
PreparedStatement ps=con.prepareStatement("select * from artist");
ResultSet rs=ps.executeQuery();
while(rs.next()){ %>
<table><tr><th>artist fast name:</th><td><%=rs.getString(1) %></td></tr>
<tr><th>artist middle name:</th><td><%=rs.getString(2) %></td></tr>
<tr><th>artist last name</th><td><%=rs.getString(3) %></td></tr>
<tr><th>artist job</th><td><%=rs.getString(4) %></td></tr>
<tr><th>artist image</th><td><img src="
<%
Blob bl=rs.getBlob(5);
byte[] image=bl.getBytes(1, (int)bl.length());
response.setContentType("image/jpeg");
OutputStream o = response.getOutputStream();
o.write(image);
o.flush();
o.close();
}
%>" height="100" width="100" alt="bye"/> </td></tr>
</table>
<%
con.close();
推荐答案
从版本6开始,Java SE提供了JAXB,通过它可以将 bytes 转换为 base64字符串 >.在这里,您还可以将图像byte[]
转换为 base 64字符串,并且可以使用<img
html 标记显示该图像,并将src数据指定为base 64,即.
As of version 6, Java SE provides JAXB by which the bytes may be converted in to base64 string. Here also you may convert the image byte[]
into base 64 string and it can be displayed using the <img
html tag specifying the src data as base 64 i.e.
按如下所示修改您的代码:
Modify your code as follows :
<%
PreparedStatement ps=con.prepareStatement("select * from artist");
ResultSet rs=ps.executeQuery();
while(rs.next()){ %>
<table><tr><th>artist fast name:</th><td><%=rs.getString(1) %></td></tr>
<tr><th>artist middle name:</th><td><%=rs.getString(2) %></td></tr>
<tr><th>artist last name</th><td><%=rs.getString(3) %></td></tr>
<tr><th>artist job</th><td><%=rs.getString(4) %></td></tr>
<tr><th>artist image</th><td>
<%
Blob bl=rs.getBlob(5);
byte[] image=bl.getBytes(1, (int)bl.length());
%>
<img src="data:image/jpeg;base64, <%=javax.xml.bind.DatatypeConverter.printBase64Binary(image)%>
" height="100" width="100" alt="bye"/> </td></tr>
</table>
<%
}
con.close();
%>
这是另一个示例 jsp 页面,用于获得清晰的想法:
Here is another sample jsp page for getting a clear idea :
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.io.*"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
BufferedImage bImage = ImageIO.read(new File("/home/visruth/Desktop/Visruth.jpg"));//give the path of an image
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( bImage, "jpg", baos );
baos.flush();
byte[] imageInByteArray = baos.toByteArray();
baos.close();
String b64 = javax.xml.bind.DatatypeConverter.printBase64Binary(imageInByteArray);
%>
<div>
<p>As of v6, Java SE provides JAXB</p>
<img src="data:image/jpg;base64, <%=b64%>" alt="Visruth.jpg not found" />
</div>
</body>
</html>
这篇关于无法通过jsp显示数据库中的所有信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!