1:在applicationContext-*.xml的配置文件中
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" >
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"></property>
</bean>
<bean id="lobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>
2:在sessionFactory Bean中
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="lobHandler">
<ref bean="oracleLobHandler" />
</property>
</bean>
加入这个属性
<property name="lobHandler">
<ref bean="oracleLobHandler" />
</property>
3:配置实体的hibernate的*.hbm.xml
<property name="person18" type="org.springframework.orm.hibernate3.support.BlobByteArrayType" length="1048576000">
<column name="PERSON18" />
</property>
这个type是关键
在实体的 PERSON18 属性 的类型是byte[] ,配置基本结束
4:怎样存储呢?
这里是struts2+hibernate+spring 架构
在action中 private File[] upload; 这个upload其实就是jsp页面的上传<input type="file" name="upload"
在提交的时候 action中 开始把上传的图片set到实体的相关属性中去
InputStream in = null;
in = new BufferedInputStream(new FileInputStream(this.getUpload()[0]), BUFFER_SIZE);
byte[] buffer = new byte[BUFFER_SIZE];
in.read(buffer);
//把上传的图片set到 实体中去
person.setPerson18(buffer);
最好直接save实体就可以了
5:读取显示在页面
本人最初的想法是在action中把对象查出来,也就可以得到保存图片的byte[] ,然后放到request中,在页面直接读取,结果失败,
最后的解决办法是
jsp页面:
<img id="imgShow" width="100%" height="100%" src="imageAction.action?person01=${mk.person01}" alt="" />
后台action中
public String loadImage() throws Exception{
InputStream fileInput = null;
String person01 = request.getParameter("person01");
File dir = new File(ServletActionContext.getServletContext().getRealPath("")+ "/1.jpg");
Person p = super.getPersonService().getPersonById(Integer.parseInt(person01));
byte[] bs = p.getPerson18();
if(bs == null){
fileInput = new BufferedInputStream(new FileInputStream(dir), 100*1024);
byte[] buffer = new byte[100*1024];
int i = fileInput.read(buffer);
upLoadImg(buffer);
fileInput.close();
}else{
upLoadImg(bs);
}
return null;
/**
* 上传图片
* @param bs
*/
public void upLoadImg(byte[] bs){
ServletOutputStream out = null;
InputStream in = null;
InputStream in2 = null;
try {
//二进制输出流
response.setContentType("image/jpeg");
//得到输出流
out = response.getOutputStream();
in = new java.io.ByteArrayInputStream(bs);
//强制刷新输出流
out.write(bs);
out.flush();
} catch ( IOException e ) {
e.printStackTrace();
} catch ( Exception e ) {
e.printStackTrace();
} finally {
if ( in != null ) {
try {
in.close();
} catch ( IOException e ) {
e.printStackTrace();
}
}
if ( out != null ) try {
out.close();
} catch ( IOException e ) {
e.printStackTrace();
}
}
}
这样就可以了
相关推荐
神经网络与量子计算的交叉研究.pptx
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
【Ruby】基于Ruby的MKS rebase脚本 Ruby语言基础 将MKS网盘中其他工程路径下的工程文件批量rebase到目标工程路径。 【Ruby】基于Ruby的MKS rebase脚本 Ruby语言基础
18.CSGO赛事管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码(含数据库脚本)+开发文档+lw(高分毕设项目) 详细介绍链接:http://t.csdnimg.cn/CDBjW 内容概要: 全套项目源码+详尽文档,一站式解决您的学习与项目需求。 适用人群: 计算机、通信、人工智能、自动化等专业的学生、老师及从业者。 使用场景及目标: 无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。 项目代码经过调试测试,确保直接运行,节省您的时间和精力。 其他说明: 项目整体具有较高的学习借鉴价值,基础能力强的可以在此基础上修改调整,以实现不同的功能。
46.书籍学习平台的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)论坛,公告,付费专区,免费专区,销售,会员办理,书籍分类 详细设计文档链接:http://t.csdnimg.cn/GSeDN 内容概要: 全套项目源码+详尽文档,一站式解决您的学习与项目需求。 适用人群: 计算机、通信、人工智能、自动化等专业的学生、老师及从业者。 使用场景及目标: 无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。 项目代码经过调试测试,确保直接运行,节省您的时间和精力。 其他说明: 项目整体具有较高的学习借鉴价值,基础能力强的可以在此基础上修改调整,以实现不同的功能。
【资源说明】 基于OpenCVTensorflow的银行卡号识别源码+使用文档+全部资料(优秀项目).zip基于OpenCVTensorflow的银行卡号识别源码+使用文档+全部资料(优秀项目).zip基于OpenCVTensorflow的银行卡号识别源码+使用文档+全部资料(优秀项目).zip 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
AI快速生成原创音乐的平台.txt
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
xiuno模板知乎蓝魔改版源码附多个插件
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。 [5] C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
FS-S01059_STEP_01A.zip
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
基于深度强化学习的住宅区电动汽车充电策略是一种用于优化住宅区电动汽车充电行为的算法。面对日益增长的电动汽车数量和有限的充电资源,该算法结合了深度学习和强化学习方法,旨在实现住宅区电动汽车充电的智能调度和管理。
第5章 s7200编程语言及指令系统.ppt
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。