最近我从原先的webwork+hibernate框架中转到现在的webwork+hibernate+spring框架,当处理上传的时候我采用了原先的方法的来处理上传,
vm文件
<form action="souupload.action" method="post" enctype="multipart/form-data" name="uploadsource">
文件名:<input name="fileName" type="text" class="btn_grey">
<input type="hidden" name="id" value="$!req.getSession().getAttribute("customer").id">
<input name="EDITFILE" type="file" class="btn_grey">
<input type="submit" name="Submit" value="上传文件" class="btn_grey">
<input type="button" value=" 退 出 " class="btn_grey" onclick="javaScript:window.location.href='index.action';" >
</form>
上传Action中的代码如下:
FileUploadAction
private int fileId=-1;
private int id;
private String fileName;
private EricFileAware ericfileAware;
public String execute()throws Exception{
try {
HttpServletRequest req = ServletActionContext.getRequest();
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) req;
File doc = null;
try {
File[] docs = wrapper.getFiles("EDITFILE");
System.out.println(docs.length);
if (docs != null && docs.length > 0) {
doc = docs[0];
FileInputStream in = new FileInputStream(doc);
Blob blob = Hibernate.createBlob(in);
int fileSize = (int) doc.length();
cn.kyvin.shop.webshop.object.EricFile ericFile=new cn.kyvin.shop.webshop.object.EricFile();
if(this.fileId>0){
}else{
ericFile.setFileName(this.fileName);
ericFile.setFileSize(new Integer(fileSize));
ericFile.setFileData(blob);
this.ericfileAware.insertFile(ericFile);
}
}
} finally {
doc.delete();
}
this.addActionMessage("^o^EricZone资源上传成功^o^");
return SUCCESS;
} catch (Exception e) {
return INPUT;
}
}
FileAware接口中方法如下:
...
public EricFile insertFile(EricFile file) throws ServicesException;
Fileimpl实现类中代码如下:
该实现类扩展了一下 HibernateDaoSupport 这个类中的方法
public EricFile insertFile(EricFile file) throws ServicesException {
try {
Session session =this.getSession();
Transaction tx = null;
byte[] buffer = new byte[1];
buffer[0] = 1;
try {
tx = session.beginTransaction();
Blob blob = file.getFileData();
file.setFileData(Hibernate.createBlob(buffer));
session.save(file);
session.flush();
session.refresh(file, LockMode.UPGRADE);
BLOB blobTemp = (BLOB) file.getFileData();
OutputStream out = blobTemp.getBinaryOutputStream();
InputStream in = blob.getBinaryStream();
byte[] data = new byte[(int) in.available()];
in.read(data);
out.write(data);
out.flush();
in.close();
out.close();
session.flush();
tx.commit();
} catch (Exception he) {
if (tx != null)
tx.rollback();
} finally {
session.close();
}
} catch (HibernateException he) {
}
return file;
}
通过这些程序我上传到oracle数据库中的时候会出现这个错误,当然hbm.xml文件肯定配置没问题
错误提示:
09:15:30,156 ERROR [http-8562-Processor23] SessionImpl:2400 - Could not synchronize database state with session
09:15:30,203 ERROR [http-8562-Processor23] JDBCTransaction:108 - Could not toggle autocommit
net.sf.hibernate.HibernateException: Session is closed
出现这样的问题该如何解决 我也想过通过this.getSessionFactory.openSession来打开session,可是一点用都没有
分享到:
相关推荐
7. **安全考虑**: 除了基本的文件上传功能,还需要考虑安全问题,如文件类型检查(只允许上传图片)、文件大小限制(防止大文件占用过多服务器资源)以及防止恶意文件上传。 8. **异常处理**: 在处理文件上传和...
FastDFS是一个开源的、高性能的、轻量级的分布式文件系统,它对文件进行管理,包括文件存储、文件同步、文件访问(文件上传、文件下载)等功能,解决了大容量存储和负载均衡的问题。fdfsclient.jar包含了与FastDFS...
晟睿STM32F103ZET6开发板跑RT Thread,内核为1.2.0,GUI为0.8版本,可以下载到板子上跑。 1、TFT根据RT Thread驱动框架编写,FSMC总线,可直接用。适合常用的9320、9325、...(网络问题不确定是否上传成功,再上传一次)
本篇文章将深入探讨如何在S2SH(Struts2 + Spring + Hibernate)框架下实现这个功能,并涉及数据流的概念以及上传图片的相关技术。 首先,S2SH是一个经典的Java Web开发框架组合,由Struts2负责前端MVC(Model-View...
这种方式可以有效防止因网络问题导致的文件上传失败,并降低对单次上传请求的内存和带宽需求。 在提供的源码包中,如"Asp.net网络硬盘系统源码.rar"和"netdisk.zip"可能包含了完整的ASP.NET实现的网盘系统源代码,...
针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。 4、 系统的数据要求:1、数据录入和处理的准确性和实时性。2、数据的一致性与完整性。3、数据的共享与独立性。 2.2. 系统的可行性...
7. **用户反馈**:在数据导入完成后,向用户显示结果,告知导入成功还是失败,以及可能遇到的问题。 学习这个源码可以帮助开发者掌握如何在ASP.NET中处理文件上传、读取Excel数据以及与SQL Server交互。对于需要...
9. **错误处理和日志记录**:完善的文件上传系统应该包含错误处理机制,当上传失败时,能给用户清晰的反馈,同时在后台记录详细的日志,方便开发者排查问题。 10. **合规性**:在某些行业,如医疗保健或金融,文件...
7. **学习挑战**: 由于“操作起来有点麻烦”,这意味着学习者需要投入更多时间和精力去理解系统的内部运作,这包括调试代码、阅读文档和解决问题,这对深化理解分布式存储有极大的帮助。 8. **新手教程**: 对于Java...
用.NET Core实现Metaweblog代理,意味着我们可以利用其强大的性能、灵活性和可移植性,构建一个适用于多种操作系统的代理服务。 1. **XML-RPC库**:在.NET Core项目中,`xml-rpc.net.2.0.0`库用于实现XML-RPC协议,...
3. **错误处理与重试机制**:在上传过程中,网络问题可能导致失败,因此项目可能包含健壮的错误处理和自动重试机制。 4. **文件分块上传**:对于大文件,可能采用了分块上传策略,以减少单次上传的数据量,提高上传...
- **会话失效处理**: 解决了因会话失效而导致的日记或评论提交失败的问题。 - **访问统计**: 改进了网站的访问统计方式,并增加了查看网站间的链接明细功能。 - **权限细化**: 新增密友角色,可以为密友指定允许查看...
在.NET框架中,MFC(Microsoft Foundation Class Library)是一个强大的C++类库,它为Windows应用程序开发提供了丰富的功能。在MFC中,网络编程被简化,使得开发者可以更轻松地处理套接字通信,尤其是利用Windows的...
FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络文件传输协议,用于在网络上进行文件的上传和下载。在Linux系统中,使用C语言编写FTP服务器程序能够深入理解网络编程的底层原理,同时也具备高度的灵活性...
开发者在进行Web应用开发时常常需要面对复杂的框架配置、繁琐的编码工作以及缓慢的开发周期等问题。 **1.2 Web 2.0时代** 进入Web 2.0时代后,互联网应用变得更加动态、交互性强。这一时期的典型特征包括社交媒体...