如何使用java servlet下载csv文件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用java servlet下载csv文件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3007字,纯文字阅读大概需要5分钟。
内容图文
![如何使用java servlet下载csv文件?](/upload/InfoBanner/zyjiaocheng/742/597dec3b167e42049b0881e48da67f14.jpg)
我有示例java servlet文件.但它导出到本地文件.但是我需要在点击下载按钮时下载csv文件?
这里是servlet类,我需要在这里添加什么代码来下载csv文件?
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CsvFile extends HttpServlet {
public void doGet (HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
try
{
PrintWriter out = response.getWriter();
String filename = "c:\\csv\\myfile.csv";
FileWriter fw = new FileWriter(filename);
fw.append("Employee Code");
fw.append(',');
fw.append("Employee Name");
fw.append(',');
fw.append("Employee Address");
fw.append(',');
fw.append("Employee Phone");
fw.append(',');
fw.append("Employee ZipCode");
fw.append('\n');
fw.append("E1");
fw.append(',');
fw.append("Vineet");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("224277488");
fw.append(',');
fw.append("110085");
fw.append('\n');
fw.append("E2");
fw.append(',');
fw.append("Amar");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("257765758");
fw.append(',');
fw.append("110001");
fw.append('\n');
fw.append("E3");
fw.append(',');
fw.append("Amit");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("257685858");
fw.append(',');
fw.append("110005");
fw.append('\n');
fw.append("E4");
fw.append(',');
fw.append("Suman");
fw.append(',');
fw.append("Delhi");
fw.append(',');
fw.append("266447678");
fw.append(',');
fw.append("110081");
fw.append('\n');
fw.flush();
fw.close();
out.println("<b>Csv file Successfully created.</b>");
}
catch (Exception ex) {
ex.printStackTrace ();
}
}
}
解决方法:
您正在写入文件而不是HTTP响应.
>您需要将CSV写入HttpServletResponse#getWriter().
>您需要将Content-Disposition标头设置为附件以强制Web浏览器中的“另存为”对话框,最终还有文件名属性.有一个(主要?)警告:MSIE浏览器不会在“另存为”对话框中使用指定的文件名作为实际文件名,而是使用URL的pathinfo的最后一部分.
>您需要将Content-Type标头设置为text / csv,以指示webbrowser它是什么类型的文件,以便在最终用户选择Open而不是Save时找到正确的关联应用程序.通常,在Windows机器上,MS Excel默认与该内容类型相关联.
要实现这些要求,您需要创建一个CsvServlet,它在doGet()方法中基本执行以下操作.
String filename = request.getPathInfo().substring(1); // get rid of leading `/`
response.setHeader("Content-Type", "text/csv");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
PrintWriter writer = response.getWriter();
writer.append("CSV content");
// ...
就这样. flush()和close()顺便说一下并不是绝对必要的,但是如果你想避免请求链中的其他内容正在向响应体添加一些东西(这应该严格不会发生,但它只会发出) IllegalStateExceptions和/或IOExceptions进入服务器日志而不是错误的响应.
然后,使用/ csv / *的url-pattern映射web.xml中的CsvServlet,并在http://example.com/context/csv/filename.csv之前调用它.
也就是说,你可能更像是一个真正的CSV格式化程序/编写器,可以很好地编写String [] []或List< List< String>>到OutputStream或Writer,特此尊重CSV格式规则.字段值本身可能包含引号或逗号,然后CSV格式会中断.
也可以看看:
> JSP page without HTML code for exporting data to Excel Sheet
内容总结
以上是互联网集市为您收集整理的如何使用java servlet下载csv文件?全部内容,希望文章能够帮你解决如何使用java servlet下载csv文件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。