- 浏览: 26336 次
- 性别:
- 来自: 贵阳
文章分类
最新评论
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;
}}
相关推荐
由于上传限制,lib包不能上传,大家可以下载spring2.5版本的支持库(下最大的那个zip包),全部加进去就行了,还有mysql的连接包,项目很简单,直接导入eclipse,就可以使用,包内有mysql的sql文件,框架已经搭好,...
OA办公自动化管理系统是一款基于Struts1.2、Hibernate3.0、Spring2和DWR的综合性企业级应用解决方案,旨在帮助企业实现高效、便捷的办公管理。该系统具备以下功能: 1. 用户管理:支持用户注册、登录、权限分配、...
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下应该没什么大问题,最多出现语法...
引言 文件的上传和下载在J2EE编程已经是一个非常古老的话题了,也许您马上就能掰着指头数出好几个著名的大件:如SmartUpload、Apache的...SSH各框架的均为当前最新版本: ·Struts1.2 ·Spring1.2.5 ·Hibernate3.
使用技术说明: 1.使用struts2+spring3+hibernate3整合实现用户CRUD功能。 2.使用技术 A.Struts2国际化(i18n)、本地化程序。...文件上传下载 C.DWR集成 D.Struts2异常处理 3.实现方式 基于配置文件
写的比较简陋,,基于struts1.2+spring2.0+hibernate3.1框架 基本功能: 注册,登陆,validate框架验证,文件上传,下载,简单过滤器,权限限制,下载列表查看,下载历史记录查看 未处理中文,所有jar包...
本工程为struts1.1+spring1.2+hibernate3.0+jbpm3.1.4 可以tomcat下运行,可通过图形模式发布工程,配置了在网页显示jbpm流程图的标签文件。 由于不能上传10M以上的包,本工程分为3个部分上传
本工程为struts1.1+spring1.2+hibernate3.0+jbpm3.1.4 可以tomcat下运行,可通过图形模式发布工程,配置了在网页显示jbpm流程图的标签文件。 由于不能上传10M以上的包,本工程分为3个部分上传
一个自己写的使用myeclipse6.5整合struts1.2+spring2.5+hibernate3.2的实例,没有包含库文件,太大了csdn不让上传;还有一篇pdf的文档,希望大家喜欢,我的blog上有这篇文章,地址:http://blog.csdn.net/hua_wei
JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...
JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...
Struts+Spring+Hibernate实现上传下载 本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本: •Struts 1.2 •Spring 1.2.5 •Hibernate 3.0 本文...
第15章 在线文件上传和下载(struts 2.x+fileupload) 15.1 在线文件上传和下载模块原理 15.2 文件上传组件fileupload 15.3 初步使用文件上传组件(components-fileupload) 15.4 单文件的上传 15.5 多...
自己用ssh写的简单的增删改查功能,自认为写的还可以 采用的是struts1.2 ,hibernate3.2 ,spring2.0 文件上传限制没有办法
1.1.3 文件上传路径配置 找到“uploadPath”定义部分,根据系统的发布路径来修改文件的上传路径。 1.1.4 保存修改文件。 1.2 修改Velocity配置文件 1.2.1 查找并打开GWCS/WebRoot/WEB-INF/velocity.properties...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
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 为什么要拦截...