在页面中使用图片在应用中是不可缺少的。很多时候我们都是把文件直接放在本地的文件系统上,这样就可以直接在页面中显示图片信息。现在我介绍的是如何在将保存在数据库中的图像信息检索出来并显示在页面中。所用的是oralce数据库的blob存放图片信息。
要显示图片首先在数据库中必须要有图片存放。第一步我们应该建立一张表。表结构如下:TEST_BLOB(id varchar2(20), blobcol BLOB)
第二步我们就必须将数据倒入到数据库中
编译运行下面的代码:
import java.io.*;
import java.sql.*;
import oracle.jdbc.OracleResultSet;
import oracle.sql.*;
public class TestOracle
{
String username,password;
Connection conn = null;
Statement stmt = null;
{
username="***";
password="***";
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@10.150.6.160:1521:dbwind72",username,password);
stmt=conn.createStatement();
}
catch(Exception ex)
{
System.out.println(ex);
}
}
public void blobInsert(String infile) throws Exception
{
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try
{
System.out.println("try start");
stmt.executeUpdate("INSERT INTO test_blob VALUES('111',EMPTY_BLOB())");
System.out.println("stmt.executeUpdate");
//conn.commit();
ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='111' FOR UPDATE");
System.out.println("stmt.executeQuery");
while (rs.next())
{
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
System.out.println("rs.getBlob");
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
System.out.println("out stream create");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(new File(infile)));
System.out.println("Create new input file");
int c;
while ((c=in.read())!=-1)
{
out.write(c);
}
in.close();
out.close();
}
conn.commit();
}
catch (Exception ex)
{
System.out.println("blobInsert's exception");
conn.rollback();
throw ex;
}
conn.setAutoCommit(defaultCommit);
}
public static void main(String[] args)
{
TestOracle test = new TestOracle();
try
{
test.blobInsert("r:\\onjava_logo.jpg");
}
catch(Exception ex)
{
System.out.println("main's test.blobInsert() Exception"+ex);
}
}
}
这样就把你的R盘下面的onjava_logo.jpg保存到了数据库中。注意:BLOB型的数据必须先插入一个空值然后UPDATE,不能直接往里面插值。
好了,准备工作基本完成,现在开始我们的主题。我在这里直接用了一个jsp文件传送从数据库中检索出来的图片信息。jsp文件代码如下:
//myimage.jsp
<%@ page contentType="image/jpeg" %>
<%@ page import="java.awt.image.*,java.sql.*,com.sun.image.codec.jpeg.*,java.util.*,javax.imageio.*,java.io.*"
%>
<%
// Create image
String username,password,url;
Connection conn = null;
Statement stmt = null;
BufferedInputStream inputimage=null;
username="***";
password="***";
url ="jdbc:oracle:thin:@10.150.6.160:1521:dbwind72";
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection(url,username,password);
stmt=conn.createStatement();
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try {
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_BLOB WHERE ID='111'");
while (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
inputimage = new BufferedInputStream(blob.getBinaryStream());
}
} catch (Exception ex) {
System.out.println("blobRead()'s exception"+ex);
conn.rollback();
throw ex;
}
conn.setAutoCommit(defaultCommit);
// Send back image
BufferedImage image = null;
try{
image = ImageIO.read(inputimage);
}catch(IOException e){
System.out.println(e);
}
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
inputimage.close();
/*/**/
%>
这里我用到了com.sun.image.codec.jpeg包中的JPEGImageEncoder来构造图片。首先从数据库中检索到这个BLOB保存的数据。inputimage = new BufferedInputStream(blob.getBinaryStream());然后包装成一个BufferedInputStream。之后用这个BufferedInputStream构造一个BufferedImage:image = ImageIO.read(inputimage);剩下的事情就好办了,encode就行了。
简要的说完了,希望能对大家有点儿帮助。
分享到:
相关推荐
在IT领域,数据库管理...以上就是使用JSP操作MySQL数据库Blob字段的关键知识点,涵盖了从文件读取、数据库操作到文件输出的完整流程。理解这些概念和步骤对于任何需要在Web应用中存储和检索大文件的开发者都至关重要。
本教程将深入探讨如何在Java环境下,批量地从MySQL数据库中下载存储在Blob字段中的图片,并将其保存到本地文件系统。 首先,我们需要理解Blob类型。Blob是MySQL中的一个数据类型,用于存储大量二进制数据。它分为四...
综上所述,实现图片以BLOB形式存入数据库涉及到前端的图片处理和传输、后端的JSP和Servlet处理、数据库设计和操作,以及性能优化和安全策略。每个环节都需要细致考虑,以实现功能的同时保证系统的稳定性和效率。
`jsp1.rar_jsp blob_jsp 图片_mysql blob_图片 MySQL`这个标题和描述指向了一个具体的场景:使用JSP(JavaServer Pages)从MySQL数据库中读取存储为BLOB(Binary Large Object)类型的图片数据。 首先,我们来理解...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
在我们的例子中,JSP页面会显示从数据库获取的图片。 2. **Servlet**:Servlet是Java Web应用中的一个组件,负责处理HTTP请求和响应。在这里,我们将创建一个Servlet来从数据库中读取图片的二进制数据,并将其转化...
1. **建立数据库连接**:通过DBManager.getConnection()获取数据库连接。 2. **编写SQL查询**:例如,"SELECT picture FROM teacher WHERE id=1",用于获取指定ID教师的图片。 3. **创建PreparedStatement和...
在这个场景中,我们讨论的是如何利用JSP与数据库进行连接,以便动态地从数据库中获取图片并显示在网页上。这个过程涉及多个关键知识点,包括数据库连接、SQL查询、JSP内置对象以及图片数据的处理。 首先,我们需要...
在这个场景中,我们将探讨如何使用JSP来实现图片上传到数据库的过程。 首先,我们需要依赖两个关键库:`commons-io-1.3.2-bin.zip` 和 `commons-fileupload-1.2.2-bin.zip`。Apache Commons IO 提供了强大的文件...
在本文中,我们将探讨如何使用JSP(JavaServer Pages)来实现图片上传并存储到数据库的功能。首先,我们需要理解这个过程涉及的关键步骤:前端用户界面、后端处理以及数据库交互。 1. **前端用户界面**: - 用户...
2. 数据库存储:图片数据可以存储在关系型数据库(如MySQL)的BLOB(Binary Large Object)类型字段中。使用JDBC(Java Database Connectivity)API与数据库交互,执行SQL语句将图片的字节数组插入到特定的BLOB字段...
### 基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案 #### 概述 本文介绍了一种利用JSP技术访问Oracle数据库中BLOB字段存储的坐标点,并将其转换为图形显示的方法。这种方法充分利用了JSP与Java的集成优势,...
本主题将深入探讨如何使用JSP和Servlet来实现一个图片上传功能,并将图片数据存储到Oracle数据库中。 首先,我们需要理解JSP和Servlet的角色。JSP是用于创建动态内容的视图层技术,而Servlet则是Java编写的应用程序...
当用户上传图片时,JSP页面可以接收文件,将其转换为Blob对象,然后存储到Oracle数据库的Blob字段中。在查询时,可以从数据库检索Blob数据,转换回图片格式,并在页面上显示。 图片的上传与显示通常涉及前端和后端...
- **查询图片列表**:通过SQL查询获取已存储在数据库中的图片信息,并在图片列表页面展示。 6. **数据库中的图片存储**: - 数据库使用专门的字段类型如BLOB、MEDIUMBLOB或LONGBLOB来存储图片数据。 综上,JSP...
本话题将深入探讨如何利用JSP实现图片的上传功能,并将其存储到数据库中。 首先,我们需要了解JSP上传图片的基本流程。用户通过浏览器提交包含图片的表单,这个表单通常包含一个`<input type="file">`元素,用于...
在MySQL数据库中存储二进制大对象(BLOB)数据,如图片,是常见的做法,因为这种方式便于管理和检索。在本示例中,我们将探讨如何查询包含二进制图片数据的MySQL数据库,并通过JSP(JavaServer Pages)展示这些图片...
在IT行业中,数据库存储不仅仅是文本数据,也常常用于存储多媒体信息,如图片。"jsp+servlet+oracle上传图片到数据库(非路径)"这个主题涉及的是一个常见的Web应用开发技术,它利用JavaServer Pages (JSP)、Servlet...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而Oracle数据库是广泛应用的关系型数据库管理系统,支持多种数据类型,包括BLOB(Binary Large Object),用于存储大块二进制数据,如图片...