struts2实现文件导出type="stream"
来源:互联网 发布:mysql gis空间数据库 编辑:程序博客网 时间:2024/04/29 19:26
之前项目中使用struts2实现文件导出,但是跟踪代码并没有理解这是怎么做到的。后来网上看了几个大神的文章才略有所悟,在此分享出来,望各位指点。
配置:
<package name="test" namespace="/test" extends="struts-default"> <action name="*" method="{1}" class="com.testAction"> <result name="download" type="stream"> <param name="contentType">application/octet-stream,text/csv;charset=UTF-8</param> <param name="inputName">apendListInputStream</param> <param name="contentDisposition">attachment;filename=${downFileName}</param> <param name="bufferSize">10485760</param> </result> </action></package>
配置解释:
type="stream"
把一般内容输出到流
contentType
指定文件格式(内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片)
contentDisposition
其中attachment 将会告诉浏览器下载该文件,filename 指定下载文件保有存时的文件名
bufferSize
下载缓冲区的大小
downFileName
要求action中必须有downFileName的一个属性,且提供了set get方法,在程序第一次发起对action的请求时给downFileName赋值,如(/test/exportFile.action)。
<param name="inputName">apendListInputStream</param>
参数inputName指定输入流的名称。和前面的文件名一样,Action里提供一个getApendListInputStream()的方法返回值是inputStream。
代码:
public class TestAction extends BaseAction{ private String downFileName; public String getDownFileName() { return downFileName; } public void setDownFileName(String downFileName) { this.downFileName = downFileName; } public String exportFile() throws Exception{ //业务逻辑校验,比如导出数量大小限制等 //文件名命名 String name = "导出结果" + DateFormatUtils.format(new Date())+ ".csv"; downFileName = new String(name.getBytes("gbk"), "ISO8859-1"); return "download"; } public InputStream getApendListInputStream() { InputStream inputStream = null; try { //从数据库或其他地方获取要导出数据list //list生成文件,这个地方如何生成文件,可以参考其他资料,我们只做strust2的逻辑,不纠结文件生成。 CSVWriter writer=null; String[] titles = {"标题1","标题2","标题3","标题4"...}; ByteArrayOutputStream baos = new ByteArrayOutputStream(); for (Test ia : list) { writer = new CSVWriter(new BufferedWriter(new OutputStreamWriter(baos, "GBK"))); writer.writeNext(titles); writer.writeNext(ia); } inputStream=new ByteArrayInputStream(baos.toByteArray()); }catch (Exception e) { log.error("StationMsgAction.getApendListInputStream is error", e); } return inputStream; } }
发送请求:/test/exportFile.action,即可导出文件。
有没有发现很神奇的事情,文件名和文件内容都是依据action中的方法生成的,文件名和文件内容调用哪个方法来生成,都是通过配置中的变量跟actiong中的方法做默认匹配的。虽然精简了代码,但是确实容易让人迷惑。
- struts2实现文件导出type="stream"
- struts2文件下载 <result type="stream">
- struts2文件下载 <result type="stream">
- struts2文件下载 <result type="stream">
- struts2 result type=stream
- struts2 <result type = "stream">
- 关于struts2 中result type="stream"
- Struts2 result type="stream"的用法
- 关于struts2 中result type="stream"
- 关于struts2 中result type="stream"
- Struts2中 的type=stream
- 关于struts2 中result type="stream"
- 关于struts2 中result type="stream"
- action type="stream" 文件下载
- struts2 result="stream''文件下载
- struts2+poi实现excel文件的导出
- struts2+poi实现导出Excel文件
- Struts2+poi实现Excel文件导出
- Unreal Engine 4/虚幻4 视频纹理或者在关卡中播放视频
- Palindrome Number
- python https server and client
- nyoj 330 一个简单的数学题
- .eq()的使用
- struts2实现文件导出type="stream"
- informix 表空间
- 会计科目登错怎么更正
- C语言 将一个字符串转化为整数
- highcharts显示问题
- Android——屏幕匹配
- BPNN中的常用传递函数与训练函数总结
- DataBinding(数据绑定)入门篇
- java web项目各个模块学习地址合集