jsp页面已写好了,进入action的请求downloadFile(),可以生成Excel,但没有弹出下载提示框的功能的代码....急啊!!!

解决方案 »

  1.   

    查看代码    看看return 的时候是否出错!
      

  2.   

    在myeclipse中运行可以生成Excel,但将tomcat作为服务器启动后,不能下载到其他的电脑上,要有下载提示框才行
      

  3.   

    public class DownloadFile {
    public  static HttpServletResponse download(String path, HttpServletResponse response) {
         try {
             // path是指欲下载的文件的路径。
             File file = new File(path);
             // 取得文件名。
             String filename = file.getName();
             // 以流的形式下载文件。
             InputStream fis = new BufferedInputStream(new FileInputStream(path));
             byte[] buffer = new byte[fis.available()];
             fis.read(buffer);
             fis.close();
             // 清空response
             response.reset();
             // 设置response的Header
             //response.setHeader("Content-disposition","attachment;filename="+"book.zip");  
             response.addHeader("Content-Disposition", "inline;filename=" + new String(filename.getBytes()));
             response.addHeader("Content-Length", "" + file.length());
             OutputStream toClient = new BufferedOutputStream(response.getOutputStream());          
             response.setContentType("application/OCTET-STREAM;charset=gb2312");
             toClient.write(buffer);
             toClient.flush();
             toClient.close();
         } catch (IOException ex) {
             ex.printStackTrace();
         }
         return response;
     }
    }
    调用方法:
    public class EmployeeAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{
    ActionContext context=ActionContext.getContext();
    HttpServletRequest request ;
    HttpServletResponse response ;
    public HttpServletResponse getDownloadFile(){
    String str="/Excel/empInfo.xls";
    String path = request.getSession().getServletContext().getRealPath(str);
    return DownloadFiles.download(path, response);
    }
    @Override
    public void setServletRequest(HttpServletRequest request) {
    this.request=request;
    }
    @Override
    public void setServletResponse(HttpServletResponse response) {
    this.response=response;
    }
    }
      

  4.   

    报了这样的错:
    严重: Servlet.service() for servlet default threw exception
    java.lang.IllegalStateException
    at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
    at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:819)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:519)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)
      

  5.   

    jsp页面已写好了,进入action的请求downloadFile(),可以生成Excel,但没有弹出下载提示框的功能的代码....急啊!!! 
      

  6.   

    response.setContentType("application/OCTET-STREAM;charset=gb2312");
    这块有点问题。response.setContentType("application/vnd.ms-excel;charset=gb2312");
    试试
      

  7.   

    response.setHeader("Content-Disposition", "attachment;filename=" + file);我这样下载图片和excel都可以弹出