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();
}
}
}
这样就可以了
相关推荐
二是数据库中只存储图片的在服务器上的路径信息 ,图片存放在分门别类的文件中,使用的时候从数据库读取路径信息到页面img元素即可.在此不讨论两种方案的优劣,我只是写了个hibernate的例子来实现第一种策略.例子...
2.支持读取数据库表和字段的中文注释信息; 3.可以选择数据库; 4.可以选择表,hibernate 主键策略; 5.可以设置生成的 javaBean 的 package 路径; 6.可选择生成的文件保存路径; 7.数据库服务器信息可保存,...
文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...
MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用...
读取hibernate的配置文件和映射文件 3.构建SessionFactory对象 Transaction 1.事务管理对象 Query 1.查询对象,HQL Criteria 1.hibernate提供的更面向对象的一种查询方式。 准备工作: 1.java中的POJO对象存在...
17、Java怎么读取文件和写入文件 65 18、java怎么复制文件 68 19、用JDBC如何调用存储过程 69 20、JDBC中的PreparedStatement相比Statement的好处 71 21、写一个用jdbc连接实例。 71 22、ArrayList和Vector的区别? ...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。 SQL Server 2000与以前版本相比较,又具有以下新特性 : 1.支持XML(Extensive Markup Language,扩展标记语言) 2.强大的...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...