我认为我的情景很普遍。我有一个数据库,想要我的
我以为将数据写入
以下是我的控制器代码:
Spring MVC
应用程序接受控制器中的请求,调用数据库服务获取数据,并将该数据作为CSV文件发送给客户端。我在这里使用了JavaCSV
库来协助处理:http://sourceforge.net/projects/javacsv/
我发现有几个人做类似的事情,并组合了一些看起来正确的东西。然而,当我调用方法时,什么都没有发生。我以为将数据写入
HttpServletResponse
的outputStream就足够了,但显然我漏掉了什么。以下是我的控制器代码:
@RequestMapping(value="/getFullData.html", method = RequestMethod.GET)
public void getFullData(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException{
List<CompositeRequirement> allRecords = compReqServ.getFullDataSet((String)session.getAttribute("currentProject"));
response.setContentType("data:text/csv;charset=utf-8");
response.setHeader("Content-Disposition","attachment; filename=\yourData.csv\"");
OutputStream resOs= response.getOutputStream();
OutputStream buffOs= new BufferedOutputStream(resOs);
OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs);
CsvWriter writer = new CsvWriter(outputwriter, '\u0009');
for(int i=1;i <allRecords.size();i++){
CompositeRequirement aReq=allRecords.get(i);
writer.write(aReq.toString());
}
outputwriter.flush();
outputwriter.close();
};
我在这里漏掉了什么步骤吗?基本上,没有任何效果。我认为设置标题和内容类型应该会让浏览器检测到响应并触发文件下载操作。