1.先在MySQL数据库中建立table,表名为pic(可自己起名字),建表如下:
并insert图像,数据库表内容如下:
2.新建文件
<html>
<head>
<title> 图像测试 </title>
</head>
<body>
<table>
<tr>
<td>
图像测试
</td>
</tr>
<tr>
<td>
<img src="show.jsp?ids=15">
</td>
</tr>
</table>
</body>
</html>
3.建立show.jsp文件
<%@ page contentType="text/html; charset=gbk" import="java.io.*,java.sql.*"%><%
String id = request.getParameter("ids");
//mysql连接
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/usersinf" + "?useUnicode=true&characterEncoding=UTF-8",
"root", "");
try{
// 准备语句执行对象
Statement stmt = con.createStatement();
String sql = " SELECT * FROM pic WHERE id = '"+id+"'";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
response.setContentType("image/jpeg");
Blob b = rs.getBlob("binfile");
long size = b.length();
byte[] bs = b.getBytes(1, (int)size);
OutputStream outs = response.getOutputStream();
outs.write(bs);
outs.flush();
rs.close();
}
else {
rs.close();
response.sendRedirect("./images/error.gif");
}
}
finally{
con.close();
}%>
注意:
如使用此代码出现无法加载图片的情况,首先排除是否有失误造成的错误.
如没有自己原因造成的错误考虑如下几点:
(1)是否存在这样的问题
这些换行不可以留,会在图片二进制数据最前面插入一堆\n(换行),造成图片无法显示.
解决方法:
把引入Java类合并在一起写如图:
或者:
把下一行的<%给移到上一行的末尾,形成%><%的样子, 如........%><%@ page .........
(2)如果问题未解决,再次检查代码的末尾是否有多余的空格或回车,把他们删掉,即可显示图片.