(springmvc)从oracle读取blob类型图片并在jsp中显示

最近工作中遇到从数据库中读取blob类型的图片,并在页面显示的问题,想了下,大概有两种方式,一是将数据转换成文件,保存在本地,然后将文件地址传到前台页面,读取保存的图片文件;二是将文件转换成数据流,直接在页面显示,我觉得第二个方法比较简单,而且处理速度更快点。下面我将我的操作过程记录下来,给大家一个参考。

思路、步骤:

1:从数据库读取blob图片

2:转换成数据流

3:显示在页面

首先,我们在springmvc中建立一个controller方法

@RequestMapping("/toolUtil/")
public class ToolUtil{
    @AutoWired
    private ToolUtilManager toolUtilManager;//持久层
    /**
     * 获取图片
     * @param request
     * @param response
     */
    @RequestMapping("getPhoto_Blob")
    public void getPhoto_Blob(HttpServletRequest request,HttpServletResponse response){
    	String id = request.getParameter("id");
    	//这个我就不详细写了,就是通过传递的id查询你要显示的图片
    	Map resultMap = toolUtilManager.getPhoto_Blob(id)
    	//blob就是你要显示的那张图片
    	Blob blob = (Blob) resultMap.get("Photo");
    	InputStream in = null;
	try {
	    in = blob.getBinaryStream();
	    OutputStream out = response.getOutputStream();
    	    data = new byte[(int)blob.length()];
    	    int i = 0;
	    while((i=in.read(data))!=-1){
	       out.write(data);
	    }
	    out.close();
	    in.close();
	} catch (Exception e) {
	    e.printStackTrace();
	}
    }
    
}

好了,这就是controller里的方法,这几行代码完成步骤1和步骤2,下面我们要在页面显示

<!-- 获取id为1的blob类型图片,定义宽128,高185 -->
<img src="<%=request.getContextPath()%>/toolUtil/getPhoto_Blob.xhtml?id=1" width="128" height="185"/>

步骤3就完成了,现在你的图片就可以在页面显示了,简单方便。

代码手打,难免有漏字、错字、描述不清现象,欢迎大家批评指教,切勿人身攻击,如果觉得有用,就告诉我一声,给我点鼓励。

时间: 2024-08-26 02:53:21

(springmvc)从oracle读取blob类型图片并在jsp中显示的相关文章

double类型的数值在EditText中显示?

============问题描述============ double类型的数值在EditText中显示?et_count.setText(double型数值) 报错,请问应该怎么写? ============解决方案1============ 你要用String.valueof(double value) ============解决方案2============ et_count.setText(String.valueOf(double型数值)) ============解决方案3====

oracle查询blob类型

下午要查询一个数据,要求是从 表t_report 中查找出 mainbody字段中包含“hibernate”字符串的所有信息.而mainbody字段是blob类型.百度后终于找到答案: DBMS_LOB.INSTR('被查询字段',‘查询内容’,开始位置,第几次出现) select * from t_report where dbms_lob.instr(mainbody,HEXTORAW(utl_raw.cast_to_raw('hibernate')),1,1)>0

【ModelMap】jsp中显示springmvc modelmap传递的对象

最近在做一个小网站,功能非常基础,决定用springmvc搭建. 遇到一个问题,在controller向前端传值时,比如使用ModelMap传了一个字符串,modelmap.addattribute("msg", "hello"),那么在jsp端,直接使用${msg}就可以显示.接着,如果我传递了一个对象,依然可以使用${obj.name}这样的方法来显示该对象的各个属性.然而更多情况下,都需要显示列表,所以我传递了一个List<User>对象,但是在解

在数据库中 存储图片 以及 在界面中显示图片(存储图片路径)- 这种方法相对与存储二进制文件好

花了一下午时间,终于学会了在数据库中存储图片,以及在界面中显示图片了. 存储图片有两种方法: 一种是:直接把图片转换成二进制文件存储在数据库中. 一种是:存储图片的路径到数据库,用的时候直接调用路径给image等图像控件即可. 两种方法,有利有弊,第一种方法适合存储量少且重要的图片信息.第二种方法适合存储量大但不是太重要的图片. 我使用的是第二种方法,简单,实用. 下面就是我具体的实现过程: 首先我新建了两个网页文件,insert_photo.aspx / select_photo.apsx 第

ibatis blob类型图片的处理

xml 中 <result property="meImage" column="MEAL_IMAGE" jdbcType="BLOB" javaType="[B"/> java 中 // 从数据库中取出图片数据二进制数组,利用base64转成字符串     byte[] mi = ca.getMeImage();     if(null==mi || mi.length==0){           }else{

将Opencv,Mat类型图片贴图到windows显示设备中

Opencv对图像的显示,有自带的imshow函数完成.但是,如果需要在windows程序中显示图像的时候,就有点小麻烦了. 现介绍一种方法,是在<Learning openCV Second Edition>中介绍的. 代码如下所示: void CShowPicToDlgDlg::OnBnClickedOk() { RGBTRIPLE* m_bitmapBits; //读取图片 Mat cv_pic_src = imread("11.jpg", CV_LOAD_IMAGE

读取数据库数据,并将数据整合成3D饼图在jsp中显示

首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) 1 import java.io.IOException; 2 import java.sql.SQLException; 3 import org.jfree.chart.ChartFactory; 4 import org.jfree.chart.JFreeChart; 5 import org.jfree.data.general.DefaultPieDataset; 6 7 p

托管到github上的网页图片在百度浏览器中显示不全

这几天做了个较完整的网页放到github上,上传后看网页效果. 在Firefox浏览器中,显示正常. 在百度浏览器中,空了一大块位置(图片位置),偏偏只空了这一块,其它地方的图片都好好的. 点击f12查看,源代码中的<img>也不见了. 将错误信息放到百度上搜,有网友解释是因为 有"ad" 或"ads", 而我那几张图片就放在"ad"文件夹中. 更改文件名后,正常显示了.我........ 应该是百度浏览器里面有个什么插件过滤掉&qu

解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,mybatis 在执行 sql 时会报错,如果表中有 Blob.Clob 类型在转 json 是也会报错,而且我这里也需要将这几种类型都转为 String 类型到前端. long 类型 sql 报错: Blob/Clob 转 json 报错: 解决方案: 自定义 typeHandle 来统一处理数据库这些特殊的字