java - 在数据库中以 BLOB 形式存储的 img 标签中显示图像

标签 java blob java-web-start

我无法显示在 mysql 中保存的 BLOB 图像。我有 bean ,jsp。我使用3多层架构,我想用图片显示所有产品。

在访问器中:

 try {
        Connection cn = getVla().getConnection();
        String sql = "SELECT * FROM products";
        PreparedStatement pst = cn.prepareStatement(sql);
        ResultSet rs = pst.executeQuery();
        ArrayList<products> ls = new ArrayList<products>();
        while(rs.next()) {
            products s = new products();
            s.setPk(rs.getLong("pk"));
            s.setName(rs.getString("name"));
            s.setPrice(rs.getDouble("price"));
            s.setPic(rs.getBlob("pic"));
            s.setComments(rs.getString("comments"));
            ls.add(s);
        }
        return ls;
    }

在产品中:

 public Blob getPic() {
        return pic;
    }

在main.jsp中

<%=
List<products> product = bean.getproducts();

%>
<h1>Product: </h1>
<%  
for(products c : product) { 
%>
From <%= c.getName()%> <br/>
<%= c.getPic()%></b><br/>
<b><%= c.getPrice()%> </b><br/>
<%= c.getComments()%>
<hr/>
<%
}
%>

如何显示图片? (目前我正在显示 com.mysql.jdbc.Blob@2e5f6a64)

最佳答案

您所看到的是 Blob.toString() 的结果。由于它是二进制内容,JVM 无法真正找到一个很好的表示形式。

您应该做的是创建一个单独的 Servlet,仅检索 Blob从数据库并将其内容流式传输到 response.getOutputStream() 。在 JSP 中,添加 <img>标签 src -属性指向Servlet你刚刚写了。

Servlet应一次读取一种产品的图像,因此查询会略有不同:应该足以拥有

String sql = "SELECT pic FROM products where pk = " + pk;

请注意,您需要指定此 pk使用某些请求参数的变量。上面的代码行只是演示该想法的示例。将请求 URL 逐字复制到 SQL 查询中是非常不安全的。 Google 搜索“SQL 注入(inject)”以了解更多相关信息。

使用 Blob.getInputStream() 您可以获得InputStream您可以将其内容复制到 response.getOutputStream()以便将其写回浏览器。不要忘记设置适当的 content-type关于该响应,例如 JPEG 图片的“image/jpg”。

关于java - 在数据库中以 BLOB 形式存储的 img 标签中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833184/

相关文章:

java - 如何从 jenkins 的现有项目生成 .hpi 插件

c# - 我的扩展方法可以变得更好吗? BlockBlobClient GetBlockById dotnet

MySQL Blob 与磁盘( "video frames")

java - JNI 附加/分离线程内存管理

java - 如何获取 Java 类引用的初始化值

Java 7 网络启动

java - 如何在 Mac OS 上使用 launchd 在启动/登录时运行 Java Web Start 程序?

java - 每次运行应用程序时,java Web Start 应用程序是否使用我的浏览器?

java - 如何在maven中一次添加多个依赖?

JavaScript:如何下载包含 UTF-8 编码的法语文本的 CSV 文件