`
t641339564
  • 浏览: 26336 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

struts1.2 + Hibernate3实现文件上传下载与其他操作

    博客分类:
  • java
阅读更多

uploadAction.java(上传文件逻辑的处理,Java代码):
package org.upload;

import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.upload.Uploadfile;
import org.upload.UploadfileDAO;
import org.hibernate.*;
import java.util.*;
public class UploadAction extends Action {

private Uploadfile upfile;
private UploadfileDAO dao;

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws HibernateException, UnsupportedEncodingException {
UploadForm uploadForm = (UploadForm) form;
String msg = ""; //提示信息
//获取以下的操作句柄
Hashtable fileh = uploadForm.getMultipartRequestHandler().getFileElements();
for (Enumeration e = fileh.keys(); e.hasMoreElements();) {  //遍历节点
String key = (String) e.nextElement();
FormFile file = null;
file = (FormFile) fileh.get(key);
String fileName = file.getFileName();
if(fileName.equals("")) //检测文件名是否合法
continue;
try {
InputStream stream = file.getInputStream(); //获取文件输入流
OutputStream bos = new FileOutputStream(getServlet()
.getServletContext().getRealPath("/") + "file/" + fileName);
int bytesRead = 0;
byte[] buffer = new byte[2048]; // 2KB buffer
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
stream.close();
upfile = new Uploadfile(fileName,new Float(file.getFileSize()), new java.util.Date());
//数据持久化
dao = new UploadfileDAO();
dao.save(upfile);
} catch (FileNotFoundException e1) {
msg = "Error occurs when uploading.FileNotFoundexception";
request.setAttribute("error", msg);
return mapping.findForward("fail");
} catch (IOException e2) {
msg = "Error occurs when uploading.IOexception";
request.setAttribute("error", msg);
return mapping.findForward("fail");
} catch (Exception e3) {
msg = "Error occurs when uploading.Unknown exception";
request.setAttribute("error", msg);
return mapping.findForward("fail");
}}
return mapping.findForward("success");
}}

DownloadAction.java (下载文件逻辑的处理,Java代码):
package org.upload;
import java.io.IOException;
import java.io.*;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.*;

public class DownloadAction extends Action {
private UploadfileDAO dao;
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws HibernateException, IOException {
dao = new UploadfileDAO();
Integer id = new Integer(request.getParameter("id"));
String fileName = "";
fileName = dao.getfileName(id);
File file = new File(getServlet().getServletContext().getRealPath("/")
+ "file/" + fileName);
InputStream is = new FileInputStream(file);
OutputStream os = response.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = new BufferedOutputStream(os);
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
int bytesRead = 0;
byte[] buffer = new byte[1024 * 2];
while ((bytesRead = bis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);//buffer read
}
bos.flush();bos.close();
is.close();os.close();

return null;
}}

ActionForm层:UploadForm.java:
package org.upload;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
public class UploadForm extends ActionForm {
private FormFile file;

@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
return null;
}

@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
this.file = null;
}

public FormFile getFile() {
return file;
}

public void setFile(FormFile file) {
this.file = file;
}}

支持中文处理的过滤器Filter:
package org.upload;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Filefilter implements Filter {

private String charset;
public void destroy() {  }

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
    req.setCharacterEncoding(charset); //utf-8 recommended
    chain.doFilter(req, res);
}

public void init(FilterConfig config) throws ServletException {
    charset = config.getInitParameter("charset");
}}

po层:pojo:
package org.upload;
import java.util.Date;

public class Uploadfile implements java.io.Serializable {
private Integer id;
private String fileName;
private Float fileSize;
private Date uploadTime;

public Integer getId() {
return this.id;
}

public void setId(Integer id) {
this.id = id;
}

public String getFileName() {
return this.fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public Float getFileSize() {
return this.fileSize;
}

public void setFileSize(Float fileSize) {
this.fileSize = fileSize;
}

public Date getUploadTime() {
return this.uploadTime;
}

public void setUploadTime(Date uploadTime) {
this.uploadTime = uploadTime;
}

public Uploadfile() {
}

public Uploadfile(Integer id) {
this.id = id;
}

public Uploadfile(String fileName, Float fileSize, Date uploadTime) {
this.fileName = fileName;
this.fileSize = fileSize;
this.uploadTime = uploadTime;
}}

相应的hibernate ROM数据库映射文件:.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
">
<hibernate-mapping>
<class name="org.upload.Uploadfile" table="uploadfile">
<id column="id" name="id">
<generator class="native" /></id> <!-- 此处使用了MySQL数据库-->
<property column="fileName" name="fileName" length="50" type="string" />
<property column="fileSize" name="fileSize" type="float" />
<property column="uploadTime" name="uploadTime" type="timestamp" />
</class>
</hibernate-mapping>

dao层代码(UploadfileDAO.java)比较简单,
实现几个方法,比如save(), del(), findAllFile()等,

package org.upload;

import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class UploadfileDAO {
private Session session = null;
private static SessionFactory factory = new Configuration().configure().buildSessionFactory();

public UploadfileDAO() throws HibernateException {   
    this.session = factory.openSession();
}

public void save(Uploadfile upfile) throws HibernateException {
    Transaction tx = this.session.beginTransaction();
    this.session.save(upfile);
    tx.commit();
    this.session.close();
}

public boolean del(Uploadfile file) throws HibernateException {
Transaction tx = this.session.beginTransaction();
this.session.delete(file);
tx.commit();
this.session.close();
return true;
}

public String getfileName(Integer id) throws HibernateException {
Transaction tx = this.session.beginTransaction();
String filename = "";
String hql = "SELECT uf.fileName from Uploadfile as uf where uf.id=:id";
Query q = this.session.createQuery(hql);
q.setInteger("id", id.intValue());
List list = q.list();
tx.commit();
Iterator it = list.iterator();
filename = (String) it.next();
this.session.close();
return filename;
}

public Uploadfile findById(Integer id) throws HibernateException {
Transaction tx = this.session.beginTransaction();
Uploadfile upfile = null;
String hql = "from Uploadfile as uf where uf.id=:id";
Query q = this.session.createQuery(hql);
q.setInteger("id", id);
List l = q.list();
tx.commit();
Iterator it = l.iterator();
upfile = (Uploadfile) it.next();
this.session.close();
return upfile;
}

public List findAllFile() throws HibernateException {
Transaction tx = this.session.beginTransaction();
List arrayList = null;
String hql = "from Uploadfile as uf";
Query q = this.session.createQuery(hql);
arrayList = q.list();
tx.commit();
this.session.close();
return arrayList;
}}

分享到:
评论

相关推荐

    struts1.2+spring2.5+hibernate3.2学习实例(Eclipse)

    由于上传限制,lib包不能上传,大家可以下载spring2.5版本的支持库(下最大的那个zip包),全部加进去就行了,还有mysql的连接包,项目很简单,直接导入eclipse,就可以使用,包内有mysql的sql文件,框架已经搭好,...

    java_jsp项目源码_OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar

    OA办公自动化管理系统是一款基于Struts1.2、Hibernate3.0、Spring2和DWR的综合性企业级应用解决方案,旨在帮助企业实现高效、便捷的办公管理。该系统具备以下功能: 1. 用户管理:支持用户注册、登录、权限分配、...

    jqueryUi+jqGrid+spring+hibernate+struts1.2+mysql 完美例子(带数据库文件)

    spring 2.0.1 ,hibernate3.0,strutd1.2,相关JAR包; 及c3p0-0.9.1.2.jar, mysql-connector-java-5.1.10-bin.jar 。 当时写的时候用的是JDK1.4,没有在JDK1.5下做测试,但在jdk1.5下应该没什么大问题,最多出现语法...

    Struts+Spring+Hibernate实现上传下载

    引言 文件的上传和下载在J2EE编程已经是一个非常古老的话题了,也许您马上就能掰着指头数出好几个著名的大件:如SmartUpload、Apache的...SSH各框架的均为当前最新版本: ·Struts1.2 ·Spring1.2.5 ·Hibernate3.

    struts2_spring3_hibernate3_1.2

    使用技术说明: 1.使用struts2+spring3+hibernate3整合实现用户CRUD功能。 2.使用技术 A.Struts2国际化(i18n)、本地化程序。...文件上传下载 C.DWR集成 D.Struts2异常处理 3.实现方式 基于配置文件

    ssh框架实现上传上载

    写的比较简陋,,基于struts1.2+spring2.0+hibernate3.1框架 基本功能: 注册,登陆,validate框架验证,文件上传,下载,简单过滤器,权限限制,下载列表查看,下载历史记录查看 未处理中文,所有jar包...

    ssh+jbpm+part1

    本工程为struts1.1+spring1.2+hibernate3.0+jbpm3.1.4 可以tomcat下运行,可通过图形模式发布工程,配置了在网页显示jbpm流程图的标签文件。 由于不能上传10M以上的包,本工程分为3个部分上传

    ssh+jbpm

    本工程为struts1.1+spring1.2+hibernate3.0+jbpm3.1.4 可以tomcat下运行,可通过图形模式发布工程,配置了在网页显示jbpm流程图的标签文件。 由于不能上传10M以上的包,本工程分为3个部分上传

    myeclipse6.5整合ssh实例

    一个自己写的使用myeclipse6.5整合struts1.2+spring2.5+hibernate3.2的实例,没有包含库文件,太大了csdn不让上传;还有一篇pdf的文档,希望大家喜欢,我的blog上有这篇文章,地址:http://blog.csdn.net/hua_wei

    java web技术开发大全(最全最新)

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    java web开发技术大全

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    ssh(structs,spring,hibernate)框架中的上传下载

    Struts+Spring+Hibernate实现上传下载    本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本:  •Struts 1.2  •Spring 1.2.5  •Hibernate 3.0  本文...

    JAVA WEB典型模块与项目实战大全

    第15章 在线文件上传和下载(struts 2.x+fileupload)  15.1 在线文件上传和下载模块原理  15.2 文件上传组件fileupload  15.3 初步使用文件上传组件(components-fileupload)  15.4 单文件的上传  15.5 多...

    SSH增删改查(简单的宠物信息操作)

    自己用ssh写的简单的增删改查功能,自认为写的还可以 采用的是struts1.2 ,hibernate3.2 ,spring2.0 文件上传限制没有办法

    公文传输系统velocity struts spring hibernate(lib太大只发截图自己去下)

    1.1.3 文件上传路径配置 找到“uploadPath”定义部分,根据系统的发布路径来修改文件的上传路径。 1.1.4 保存修改文件。 1.2 修改Velocity配置文件 1.2.1 查找并打开GWCS/WebRoot/WEB-INF/velocity.properties...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    Struts2 in action中文版

    3.5 案例研究:文件上传 56 3.5.1 通过struts-default包获得内建的支持 56 3.5.2 fileUpload拦截器做什么 57 3.5.3 Struts 2公文包示例代码研究 58 3.6 小结 60 第4章 使用拦截器追加工作流 61 4.1 为什么要拦截...

Global site tag (gtag.js) - Google Analytics