如何使用java servlet下载csv文件?
我有示例
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:csvmyfile.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("257765758"); fw.append(','); fw.append("110001"); fw.append('n'); fw.append("E3"); fw.append(','); fw.append("Amit"); 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("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写入 要实现这些要求,您需要创建一个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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |