struts将sql查询结果下载到csv
struts2实现输入id,查询数据库并将结果下载到csv的功能。
查询结果封装在list中,下载的action中执行以下内容
private static final String TMP_DIR_PATH = System.getProperty("java.io.tmpdir");
fileName_ = createFileName();
File file = new File(TMP_DIR_PATH, fileName_);
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
bufferedWriter.write(UserInfo.getHeader());//写csv的header
bufferedWriter.write("\r\n");//换行符
for (int i = 0; i < list.size(); i++) {
//遍历list,bean中有方法getAllColumnsString()返回属性用逗号拼接的字符串
//如“1,Jack,Beijing\r\n”也就是csv的一行数据
bufferedWriter.write(list.get(i).getAllColumnsString());
}
bufferedWriter.close();
//写完之后返回一个FileInputStream给前台,struts.xml中使用
fileInputStream_ = new FileInputStream(file);
//接下来删除临时文件
file.delete();//但是删除失败了?还在temp里面是为啥?
struts.xml
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;fileName="${fileName}"</param>
<param name="bufferSize">1024</param>
</result>
- 删除temp文件失败之外(这块自己再搜搜看)下载CSV的功能上没有问题,但是想问各位大神,这思想对吗?先写进file再用fileInputStream传给view?
有什么错误或者要注意的可以改善的点吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果不需要保存文件的话,直接写流返回就可以,不需要写文件再返回