- 浏览: 284312 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (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 1419Struts2 中的异常处理? 异常有几种类型: 1.意外的错 ... -
struts2的token机制
2010-07-11 18:15 1830token机制:解决页面重复提交 struts2中的步骤: 1 ... -
struts2的ognl表达式
2010-07-11 16:59 925下面是本人写的关于og ... -
struts2的学习笔记+测试源代码
2010-07-11 15:05 2375学习struts2的测试代码 之前用的都是struts1 , ... -
struts2中的国际化问题
2010-07-11 14:54 1080国际化 1.全局范围的资源文件 在src目录下简历资源文 ... -
struts2的输入校验+常用的校验器+基于XML实现的一些特性
2010-07-11 14:25 2997输入验证的流程: 1. 类型转换器对请求参数执行类型转换,并 ... -
srtuts2的拦截器(interceptor)
2010-07-11 14:09 12021. 自定义的拦截器 ... -
struts2上传文件及多文件上传
2010-07-10 18:32 51261. struts2中的文件上传 ... -
struts2如何获取Request-Session-ServletContext-Response
2010-07-10 18:13 63591. 访问和添加request/session/applica ... -
stuts2的类型转换
2010-07-10 18:11 12061.自定义类型转换器 第一步:编写自定义的转换器类 imp ... -
struts2接收请求参数的原理解析
2010-07-10 18:09 1870接受请求参数的原理 在struts2中没有actionForm ... -
struts2动态方法(dynamic)调用的两种方式
2010-07-10 18:07 1652动态方法调用的两种方式 1 . 使用!+方法名调用指定方法 ... -
struts2常用的常量constant
2010-07-10 18:05 1540常用的常量配置 strut ... -
struts2属性注入+修改请求后缀
2010-07-10 18:00 14081. 属性注入 <action name=&quo ... -
struts2的视图类型+中文编码+在struts.xml配置中如何传递action中的属性值
2010-07-10 17:56 2426struts2是通过filter来初始化配置的,struts1 ... -
struts2的action是线程安全的,struts1的action不是线程安全的
2010-07-08 13:33 3929为什么struts2的action是线程安全的,struts1 ... -
struts2的工作流程
2010-07-08 13:22 1638struts2的工作流程 StrutsPrepareAnd ... -
struts2的优点
2010-07-04 20:14 32801.在软件设计上struts2没有像struts1那样跟ser ...
相关推荐
在实际项目中,我们经常需要提供文件下载功能,比如导出Excel表格、文本文件或者图片。Struts2提供了文件流的方式来实现这一需求,这种方式避免了在服务器上生成临时文件,提高了效率并减少了服务器存储空间的占用。...
此方法接受一个包含多种数据类型的列表,并返回一个 `InputStream`,该流可以被 Struts2 动作类用来生成并下载 Excel 文件。 3. **服务层接口实现**: 创建 `ExcelServiceImpl` 类来实现 `IExcelService` 接口。在...
项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。
这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成Excel文件并将其导出给用户下载。 在Java开发中,导出数据到Excel是常见的需求,特别是在处理大量结构化数据时,如报表或数据分析。JXL库提供了一个...
在Java编程领域,生成Excel表格是一项常见的需求,尤其在数据导出、报表生成或数据分析时。本主题聚焦于“java代码生成excel表并下载”,这是一个关键的后端功能,允许用户自定义表格内容并选择下载路径。下面我们将...
通过以上讲解,我们可以看到,结合Struts2和Apache POI,我们可以轻松实现动态生成和导出Excel表格的功能,满足企业级Web应用的需求。提供的文档和网页资源应该会进一步细化这一过程,帮助开发者更好地理解和实践。
Struts2 和 Apache POI 的结合使用主要集中在创建 Web 应用程序中导出 Excel 文件的功能上。Apache POI 是一个 Java 库,允许开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel。而 Struts2 是一...
通过以上步骤,我们可以实现一个简单的Struts2应用,该应用能够根据用户请求,使用Apache POI库动态生成并导出Excel文件。在实际项目中,可能还需要考虑数据过滤、排序、分页等功能,以及与数据库的交互,这些都可以...
**JSP Struts2 分页 导出Excel** 在Web开发中,经常需要处理大量数据,这时分页显示和导出功能就显得尤为重要。JSP(JavaServer Pages)和Struts2作为Java Web开发中的常见技术,可以帮助我们构建动态、交互的网页...
5. **响应流**: 为了将生成的Excel文件发送到浏览器,你需要将Excel内容转换为字节流,并设置响应头,告知浏览器这是一个Excel文件,例如设置Content-Type为"application/vnd.ms-excel"。 6. **Struts2配置**: 配置...
总结来说,"struts2+poi实现导出Excel文件.docx"的实现方式是利用Struts2的Action和结果类型配置,结合Apache POI库生成Excel文件,并通过HTTP响应返回给客户端,实现数据的导出功能。这一过程涉及了MVC模式、HTTP...
调用PageOffice还可以实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
总结起来,本主题涵盖的核心知识点包括Struts2的Action、Spring的依赖注入和事务管理、Hibernate的数据库操作、Apache POI库的使用以及文件上传和下载的处理。通过理解这些内容,开发者能够构建起一个完整的、支持...
将Struts2与JasperReports结合使用,可以方便地在Web应用中实现动态报表的生成和展示。 首先,我们需要了解Struts2中整合JasperReports的基本步骤: 1. **环境准备**:确保你已经安装了MyEclipse开发环境,并且在...
在这个项目中,“struts2_spring_ibatis根据模板文件导出Excel”是利用这三大框架实现了一个功能,即根据预设的模板文件生成并导出Excel电子表格。 首先,Struts2是基于Model-View-Controller(MVC)架构的Web应用...
- 如果使用反射,可以遍历实体类的所有字段,动态生成Excel列头并设置数据。 - 将工作簿写入输出流,如果是Web应用,这通常是一个HTTP响应流。 - 设置响应头,指示这是一个Excel文件,让用户可以选择保存或打开。...
`contentDisposition`设置使得浏览器将文件作为附件下载,其中`fileName`变量允许动态设置导出文件的名称。 接下来,我们看Action类的实现。Action类通常包含一个或多个方法,这些方法对应于用户的请求。在`panyu....
标题 "Jxls结合Struts2下载" 暗示了一个教程或示例项目,它展示了如何在基于Struts2的Web应用中使用Jxls库来实现动态Excel文件的下载功能。Jxls是一个Java库,它扩展了Apache POI库,使得在Java中处理Excel模板变得...
当我们谈论“Java操作Excel表格”时,通常是指使用Java来读取、写入或处理Microsoft Excel文件,这在数据分析、报表生成或者数据交换等场景中非常常见。本主题将围绕Java如何与Excel交互进行深入探讨。 首先,Java...