struts将sql查询结果下载到csv

发布于 2022-09-13 00:15:33 字数 1291 浏览 27 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

汹涌人海 2022-09-20 00:15:33

如果不需要保存文件的话,直接写流返回就可以,不需要写文件再返回

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文