java.lang.IllegalStateException: getWriter() has already been called for this response
at org.apache.catalina.connector.Response.getOutputStream(Response.java:568)
at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:180)
at org.apache.jsp.oa.file.downLoad_jsp._jspService(downLoad_jsp.java:94)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at goodghost.tools.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
  代码如下:
<%@ page language="java" pageEncoding="GB2312" import="java.io.*"%>
<jsp:include flush="true" page="check.jsp" />
<jsp:useBean id="classMap" scope="request" class="goodghost.tools.ClassMap" />
<jsp:setProperty name="classMap" property="*" /><% 
%>
<%
String actionDo=request.getParameter("actionDo");
String id_str=request.getParameter("id");
String mainId=request.getParameter("mainId");
System.out.println("id_str:::"+id_str+"mainId:::"+mainId);
String localPath="c:\\downLoadDatabase\\";
goodghost.base.FileList file=(goodghost.base.FileList)classMap.load("oa_file_list","goodghost.base.FileList",new Integer(id_str));
goodghost.base.File main=(goodghost.base.File)classMap.load("oa_file","goodghost.base.File",new Integer(mainId));
String mainName=main.getFileName();//得到主记录名称
String fileName=file.getListName();//得到明细名称
String listUrl=file.getListUrl();
System.out.println("listUrl::"+listUrl);
if(actionDo.equals("download"))
{
    String path=application.getRealPath("/")+listUrl;//得到文件具体路径
//String str[]=listUrl.split("/");
    //String nowP=str[str.length-1];//得到文件的名称含扩展名
//String ss2[]=nowP.split("\\.");
//String extendName="."+ss2[ss2.length-1];//得到文件扩展名
File fileIn=new File(path);
System.out.println("filName::::"+fileIn.getName());
File fileOut=new File(localPath);
 if(!fileOut.exists())
 fileOut.mkdirs();
 try{
 java.io.FileInputStream fin = new java.io.FileInputStream(fileIn);
 response.setHeader("Content-disposition", "attachment; filename=" + new String(fileIn.getName().getBytes("gb2312"), "ISO8859-1"));
 int a = fin.read();
response.getWriter().close();
while (a != -1)
{
        response.getOutputStream().write(a);
a = fin.read();
}

response.getOutputStream().flush();
response.getOutputStream().close();
fin.close();
response.flushBuffer();
out.clear();
out  =  pageContext.pushBody();  }
 catch (RuntimeException e) {   
     e.printStackTrace();   
}   
 catch(Exception e)
 {
 e.printStackTrace();
 } }%>怎么解决呢,,愿各位老大帮帮忙!