首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

getOutputStream() has already been called for this response有关问题

2013-07-09 
getOutputStream() has already been called for this response问题求助报错:org.apache.jasper.JasperExc

getOutputStream() has already been called for this response问题
求助报错:
org.apache.jasper.JasperException: getOutputStream() has already been called for this response
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)

jsp:
<%CustServSpecTool export=new CustServSpecTool();
  try {
    export.exportSpec(request,response);
    out.flush();
    out.clear();
    out = pageContext.pushBody();
  } catch(Exception e) {
    e.printStackTrace();
  out.println("Download template Error:"+e.toString());
  }
%>

java:
 public void exportSpec(HttpServletRequest request,HttpServletResponse response) throws Exception  {
    String result= "";
    ....
    ...
    //System.out.println("result:" + result);
    try{
    response.reset();
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition", "attachment; filename="cfs.xml"");
            response.getOutputStream().write(result.getBytes("GBK"));
            response.getOutputStream().flush();
    }catch(Exception e){
    e.printStackTrace();
    }
}


[解决办法]
又看了一下你的代码,看出问题来了。你在jsp中调用exportSpec 这个方法,这个方法中调用getOutPutStream,实际上此时的JSP本身也会调用getOutPutStream来输出脚本,所以两者冲突报错了。考虑这一点,你完全可以用一个servlet来实现。

热点排行