mysql中的图片在jsp中如何显示出来_将mysql中的Blob的图片在jsp中显示

本文介绍了如何在Java应用中,使用Struts2、Hibernate和Spring框架,将MySQL数据库中Blob类型的图片数据展示在JSP页面上。关键步骤包括:通过Action中的方法获取Blob数据并转换为字节数组,设置HTTP响应类型为image/jpeg,然后在JSP页面上通过标签显示。
摘要由CSDN通过智能技术生成

本来我的例子是用Struts2+Hibernate+Spring三个框架搭建的,但是没有什么大碍,我们只有知道核心部分在怎么实现的就行。

以下是我的Action的代码:

//show image

private static Image image = new Image();

public Image getImage() {

return image;

}

public void setImage(Image image) {

this.image = image;

}

//imageDao对象我是Spring注入进来的,你可以用new创建

public static void showImage(){

byte[] itemImage = null;

HttpServletResponse response = ServletActionContext.getResponse();

response.reset();

response.setContentType("image/jpeg");

try {

image.setId(0);

itemImage = imageDao.getImage(image).getBytes(1,

(int)imageDao.getImage(image).length()); //通过getBytes()方法将获取的Blob类型数据转换

OutputStream out = response.getOutputStream();

out.write(itemImage);

out.flush();

out.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

以下是ImageDAO的method

public Blob getImage(Image image) {

Image img = (Image) template.get(Image.class, image.getId());     //按指定id获取的image对象

Blob blob = img.getImage();

return blob;                     //return blob 对象

}

JSP的代码为:

<s:url%20value=" border="0" width="100" height="100">

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java ,可以使用 JDBC API 将从 MySQL 数据库检索到的 BLOB 数据转换为图片。然后,可以使用 Servlet 或 JSP图片嵌入到 HTML ,以在 Web 页面上显示图片。下面是具体的步骤: 1. 使用 JDBC API 连接到 MySQL 数据库,并执行 SELECT 语句以检索包含图片BLOB 列。 ```java Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); PreparedStatement stmt = conn.prepareStatement("SELECT data FROM images WHERE id = ?"); stmt.setInt(1, 1); ResultSet rs = stmt.executeQuery(); ``` 其,1 是图片所在行的 ID。 2. 从 ResultSet 对象提取 BLOB的二进制数据。 ```java if (rs.next()) { Blob blob = rs.getBlob("data"); InputStream inputStream = blob.getBinaryStream(); } ``` 3. 将二进制数据转换为图片,并将其写入 Servlet 或 JSP 的输出流。 ```java response.setContentType("image/jpeg"); // 设置响应内容类型为图片类型 OutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[4096]; // 缓冲区大小 int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); // 将图片数据写入输出流 } inputStream.close(); outputStream.close(); ``` 其,response.setContentType() 方法用于设置响应内容类型为图片类型,getOutputStream() 方法用于获取输出流,write() 方法用于将图片数据写入输出流。 4. 在 HTML 嵌入图片。 ```html <img src="/imageServlet?id=1" alt="example"> ``` 其,src 属性指向 Servlet 或 JSP 的 URL,id 参数指定图片所在行的 ID。 完整的代码示例如下: ImageServlet.java: ```java import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ImageServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); PreparedStatement stmt = conn.prepareStatement("SELECT data FROM images WHERE id = ?"); stmt.setInt(1, Integer.parseInt(request.getParameter("id"))); ResultSet rs = stmt.executeQuery(); if (rs.next()) { Blob blob = rs.getBlob("data"); InputStream inputStream = blob.getBinaryStream(); response.setContentType("image/jpeg"); OutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } inputStream.close(); outputStream.close(); } } catch (Exception e) { e.printStackTrace(); } } } ``` index.jsp: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Image Example</title> </head> <body> <img src="/imageServlet?id=1" alt="example"> </body> </html> ``` 其,/imageServlet?id=1 是 Servlet 的 URL,id 参数指定图片所在行的 ID。将 ImageServlet.java 和 index.jsp 部署到 Web 服务器,访问 index.jsp 即可在 Web 页面上显示图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值