===============response向浏览器响应数据,无论是提示信息“操作成功”,还是文件下载。出现:
提示下载action文件。
===都遇到过。
===原因:【一定是response响应头设置无效(代码没执行)或者没设置】。前者很难找。
===【response写会浏览器必须放在最后一句,保证响应头设置执行】
@Action("SubAreaAction_exportXls")
public void exportXls() throws IOException{
ServletOutputStream outputStream = null;
HttpServletResponse response = ServletActionContext.getResponse();
try {
outputStream = response.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 一个流
// 两个头
// mime类型 Excel application/vnd.ms-excel
// 打开方式 默认是浏览器直接打开;=== inline 浏览器中打开;==== attachment 文件下载
//response.setContentType("application/vnd.ms-excel");//==######=下载。action文件。
String fileName="分区导出的数据.xls";
//====下两行解决文件名乱码
String agent = ServletActionContext.getRequest().getHeader("User-Agent");
fileName = FileUtils.encodeDownloadFilename(fileName, agent);
response.setHeader("content-disposition", "attachment;filename="+fileName);
//===下载。action文件。==######=下载。错误原因:setHeader()放在了导出 后面。header设置没执行。。。
//===【总之遇到这种问题,就是response的 header的问题。====代码顺序颠倒。。。。难找。】
service.exportXls(outputStream);
}