【发布时间】:2013-10-22 06:18:25
【问题描述】:
我正在使用 OpenCsv API,现在我遇到了一些问题。这是我的代码
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
List<UserRegData> userRegDataList = new ArrayList<UserRegData>();
HttpSession session = request.getSession();
userRegDataList = (List<UserRegData>) session.getAttribute("referralData");
List<String[]> dataToWrite = new ArrayList<String[]>();
String csv = "E:\\carewave_backup\\csv\\UserReferral.csv";
CSVWriter writer = new CSVWriter(new FileWriter(csv));
for (UserRegData obj : userRegDataList) {
dataToWrite.add(new String[]{obj.getReferred_by_name(), obj.getInvitee_name(), obj.getInvitee_email(), obj.getInvitee_date(), obj.getIsInviteeRegistered(), obj.getDate_of_invitee_registered()});
}
writer.writeAll(dataToWrite);
writer.close();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
out.close();
}
}
这个 servlet 基本上从会话中检索列表并将其写入 csv 文件。这个 servlet 在用户单击下载 csv 按钮后被触发。现在我需要的是,浏览器应该给出一个下载对话框。无论如何以 csv 格式下载它不先将其写入文件?
【问题讨论】:
-
为什么你认为你必须将它写入服务器上的文件?而不是
writer.writeAll将内容类型设置为text/csv后直接将行写入响应。