- 浏览: 279983 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (120)
- Struts 1.框架 (12)
- Spring框架 (9)
- hibernate框架 (6)
- web 综合 (15)
- Dwr (1)
- struts 2 (19)
- 设计模式 (0)
- lucene (6)
- oracle (3)
- linux (10)
- mysql (4)
- jquery (0)
- AJAX (1)
- javaScript (1)
- J2SE (4)
- IBATIS (3)
- JPA (1)
- Compass (3)
- 报表 (1)
- 任务调度 (1)
- tomcat (3)
- RMI (0)
- JMS (2)
- WebService (2)
- SOAP (0)
- XML (1)
- 多线程 (8)
- 缓存 (2)
- nginx (3)
- mongodb (1)
- ant打包 (0)
最新评论
-
iceman1952:
Hi 你觉得很好的那两三篇 百度文库的链接,能贴一下吗?
内网穿透&UDP打洞 -
ice86rain:
里面貌似没有用到Lucene
Struts2+Hibernate3.2+Spring2.5+Compass整合 -
sgq0085:
写得非常详细 好文章
JMS之ActiveMQ Linux下安装与应用实例 -
強顔歓笶:
JMS之ActiveMQ Linux下安装与应用实例 -
yixiandave:
forcer521 写道不指定所有子目录都在一起的话,这样用源 ...
linux下nginx稳定版1.6.2安装
struts2支持的下载 , 以及下载方法的实现方式
先说struts的实现
配置struts.xml
jsp页面
jsp点击提交到generateExcel,
generateExcel返回“success”视图 ,由struts.xml的配置可以看出success视图有三个参数
事例如下
点击生成excle表
下载后以.xsl格式打开
如果需要完整的代码请下载后运行
相关的jar包请点击http://wuzhaohuixy-qq-com.iteye.com/blog/711892下载三个zip包 ,解压后加入项目的lib下
先说struts的实现
配置struts.xml
<action name="generateExcel" class="generateExcelAction"> <result name="success" type="stream"> <param name="contentType">application/vnd.ms-excel</param> <param name="contentDisposition">attachment;afilename="AllUsers.xls"</param> <param name="inputName">downloadFile</param> </result> </action>
import java.io.InputStream; import com.opensymphony.xwork2.ActionSupport; import com.test.service.UserService; public class GenerateExcelAction extends ActionSupport { private UserService service; //服务层的接口 public UserService getService() { return service; } public void setService(UserService service) { this.service = service; } public InputStream getDownloadFile() { return this.service.getInputStream(); } @Override public String execute() throws Exception { return SUCCESS; } }
jsp页面
<s:a href="generateExcel.action">生成excel</s:a>
jsp点击提交到generateExcel,
generateExcel返回“success”视图 ,由struts.xml的配置可以看出success视图有三个参数
<param name="contentType">application/vnd.ms-excel</param> //文件的类型 <param name="contentDisposition">attachment;afilename="AllUsers.xls"</param> //attachment的解释 ,此参数默认值为inline ,如果是inline 会在浏览器中打开该 //文件,如ppt,txt会直接在浏览器上显示,但有些文件是不能再浏览器中打开的 ,如 //果选择attachment ,则不管是什么格式都会弹出一个下载框供用户选择 <param name="inputName">downloadFile</param> //说明提交到action的downloadFile执行
public InputStream getDownloadFile() { return this.service.getInputStream(); }
package com.test.service.impl; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.test.bean.User; import com.test.dao.UserDAO; import com.test.service.UserService; public class UserServiceImpl implements UserService { private UserDAO userDao; public UserDAO getUserDao() { return userDao; } public void setUserDao(UserDAO userDao) { this.userDao = userDao; } public void delete(User user) { this.userDao.removeUser(user); } public List<User> findAll() { return this.userDao.findAllUsers(); } public User findById(Integer id) { return this.userDao.findUserById(id); } public void save(User user) { this.userDao.saveUser(user); } public void update(User user) { this.userDao.updateUser(user); } public InputStream getInputStream() { //spring对execle格式下载提供了支持 对应spring中的poi.jar包 HSSFWorkbook wb = new HSSFWorkbook(); //new 一个HSSFWorkbook实例 //创建一个sheet脚本 HSSFSheet sheet = wb.createSheet("sheet1"); //创建一行 ,第一行是标题如 姓名 性别 年龄 HSSFRow row = sheet.createRow(0); //往第一行上插入单元格 HSSFCell cell = row.createCell((short) 0); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("序号"); cell = row.createCell((short) 1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("姓"); cell = row.createCell((short) 2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("名"); cell = row.createCell((short) 3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("年龄"); //获取要生成表的数据 List<User> list = this.findAll(); //以行的形式出入表格中 for (int i = 0; i < list.size(); ++i) { User user = list.get(i); row = sheet.createRow(i + 1); cell = row.createCell((short) 0); cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设置字符的类型 cell.setCellValue(i + 1); cell = row.createCell((short) 1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(user.getFirstname()); cell = row.createCell((short) 2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(user.getLastname()); cell = row.createCell((short) 3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(user.getAge()); } //问题:上序代码在内存中创建了一个execle表格 ,如何下载到本地 //解决方案一:在本地new一个临时file ,把内存中的数据写道本地file中 ,再用inputstream供用户下载 //解决方案二:在内存中直接下载到本地(性能好) //以下对这两种方式都做了实现 ByteArrayOutputStream os = new ByteArrayOutputStream(); try { wb.write(os); } catch (IOException e) { e.printStackTrace(); } byte[] content = os.toByteArray(); InputStream is = new ByteArrayInputStream(content); return is; // 以下是以临时文件的形式实现的 // byte[] content = wb.getBytes(); // InputStream is = new ByteArrayInputStream(content); // // return is; //以下两种方式取得文件名(任选其一)其中CharacterUtils是自定义的一个工具类 // // String fileName = CharacterUtils.getRandomString(10); //RandomStringUtils是源包下的一个工具类 // String fileName = RandomStringUtils.randomAlphanumeric(10); // // fileName = new StringBuffer(fileName).append(".xls").toString(); // // final File file = new File(fileName); // // try // { // OutputStream os = new FileOutputStream(file); // wb.write(os); // os.close(); // } // catch (Exception e) // { // e.printStackTrace(); // } // // InputStream is = null; // try // { // is = new FileInputStream(file); // } // catch (FileNotFoundException e) // { // e.printStackTrace(); // } // // new Thread(new Runnable() // { // public void run() // { // try // { // Thread.sleep(15000); // } // catch (InterruptedException e) // { // e.printStackTrace(); // } // // file.delete();//删除临时文件 // } // }).start(); // // return is; } }
事例如下
点击生成excle表
下载后以.xsl格式打开
如果需要完整的代码请下载后运行
相关的jar包请点击http://wuzhaohuixy-qq-com.iteye.com/blog/711892下载三个zip包 ,解压后加入项目的lib下
发表评论
-
struts2中的异常处理
2010-07-22 17:23 1390Struts2 中的异常处理? 异常有几种类型: 1.意外的错 ... -
struts2的token机制
2010-07-11 18:15 1791token机制:解决页面重复提交 struts2中的步骤: 1 ... -
struts2的ognl表达式
2010-07-11 16:59 897下面是本人写的关于og ... -
struts2的学习笔记+测试源代码
2010-07-11 15:05 2342学习struts2的测试代码 之前用的都是struts1 , ... -
struts2中的国际化问题
2010-07-11 14:54 1055国际化 1.全局范围的资源文件 在src目录下简历资源文 ... -
struts2的输入校验+常用的校验器+基于XML实现的一些特性
2010-07-11 14:25 2956输入验证的流程: 1. 类型转换器对请求参数执行类型转换,并 ... -
srtuts2的拦截器(interceptor)
2010-07-11 14:09 11691. 自定义的拦截器 ... -
struts2上传文件及多文件上传
2010-07-10 18:32 50991. struts2中的文件上传 ... -
struts2如何获取Request-Session-ServletContext-Response
2010-07-10 18:13 63311. 访问和添加request/session/applica ... -
stuts2的类型转换
2010-07-10 18:11 11721.自定义类型转换器 第一步:编写自定义的转换器类 imp ... -
struts2接收请求参数的原理解析
2010-07-10 18:09 1834接受请求参数的原理 在struts2中没有actionForm ... -
struts2动态方法(dynamic)调用的两种方式
2010-07-10 18:07 1615动态方法调用的两种方式 1 . 使用!+方法名调用指定方法 ... -
struts2常用的常量constant
2010-07-10 18:05 1473常用的常量配置 strut ... -
struts2属性注入+修改请求后缀
2010-07-10 18:00 13861. 属性注入 <action name=&quo ... -
struts2的视图类型+中文编码+在struts.xml配置中如何传递action中的属性值
2010-07-10 17:56 2397struts2是通过filter来初始化配置的,struts1 ... -
struts2的action是线程安全的,struts1的action不是线程安全的
2010-07-08 13:33 3899为什么struts2的action是线程安全的,struts1 ... -
struts2的工作流程
2010-07-08 13:22 1602struts2的工作流程 StrutsPrepareAnd ... -
struts2的优点
2010-07-04 20:14 32561.在软件设计上struts2没有像struts1那样跟ser ...
相关推荐
项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。
使用struts2框架,根据数据生成excel表格,以及利用jquery生成二维码技术。
调用PageOffice还可以实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
这是一个Struts2 Hibernate3 Spring2整合的小例子,里面包含了整合所需的jar文件,实现了增删改查,并且实现了根据表格导出excel文件的功能!
根据excel模板动态导出数据库数据 package text; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet....
使用freemarker生成word ,并集成struts2 同时生成及下载文档 资料附有Java源代码和自己总结的使用说明及注意事项 大至预览如下: 1、用word编辑好模板 普通字符串替换为 ${string} 表格循环用标签 姓名:${...
本程序是一个完整的ssh框架整合的项目,实现了基本的增、删、查、改功能,还是现了xls(excel)表格的生成和输入输出支持下载。还是用了简单的表单验证。详情代码中有详细的注释。开发环境(MyEclipse6.5 +SQLServer...
公司正在使用的员工考勤系统,对打卡机生成的原始数据进行了一系列复杂的处理后生成标准...使用了Struts2,框架。对Excel的时间函数进行处理。虽然资源分高了点,但绝对超值,设计公司人员机密,请勿在公共场合讨论。
// 生成Excel文件 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); HSSFSheet sheet = hssfWorkbook.createSheet("测试数据"); // 表头 HSSFRow headRow = sheet.createRow(0); headRow.createCell(0)....
Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和 jaxen-1.1.1.jar ...
Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和 jaxen-1.1.1.jar 是一...
开发环境:Eclipse, JDK1.7, Tomcat7,MySQL,Svn,Maven 软件架构:Struts2+ SpringMVC 项目描述: 通过导入excel表格,生成各种图表 技术描述:1.easyui 制作主页面,2.fusioncharts图表
2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. ...
2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. ...
2.6.1. 动态语言支持 2.6.2. JMX 2.6.3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. 控制反转容器 3.1. 简介 ...