服务器生成文件后,客户端直接响应下载

1、记得那次做一个下载,是生成利用excel模版生成文件,在jsp得到workbook对象,在利用out对象输出,利用浏览器下载,项目页面全是jsp的小脚本和js。

2、在ninemax中做的第一个下载,项目小,全是用jquery-ajax做的,弄得吧弄个下载就没其他更好的办法了,之后在服务器生成一个文件,再在客户端提示一个链接地址,在做这个之前还配了一个apache实现tomcat分发的配置,下载的POI生成的excel。

3、这个项目中用到的还是ssh,不再是用jsp+小脚本了,也没怎么用jquery+ajax,struts2用的是基于annotation的方式,之后才明白一个道理:文件下载,只要客户端接受到一个文件流,浏览器会自动监察到的,下载的是利用ITEXT生成的word文档。

jsp页面:略,只需要请求到下面的action就行。

action:(方法体和前面如何生成文档就略了:文档名包含中文(无乱码))

HttpServletResponse  response = ServletActionContext.getResponse();
   response.setContentType("application/vnd.ms-word");
   response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(file.getName(), "UTF-8"));
   ServletOutputStream stream = response.getOutputStream();
   FileInputStream in = new FileInputStream(file);
   byte [] b = new byte[1024];
   int x = 0;
   while(( x = in.read(b)) > 0){
    stream.write(b);
   }
   stream.flush();
   in.close();
   stream.close();

你可能感兴趣的:(strus2下载)