Eu sou iniciante ao framework do ireport e estou encontrando dificuldades para gerar o relatório apartir de uma aplicação, quando rodo esta aplicação acontece os seguinte erro:
[color=red]Exception in thread “main” java.lang.ClassCastException: java.io.BufferedInputStream cannot be cast to com.lowagie.text.pdf.codec.Base64$InputStream[/color]
packagecontrol;importjava.io.IOException;importjava.io.OutputStream;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importnet.sf.jasperreports.engine.JRResultSetDataSource;importnet.sf.jasperreports.engine.JasperCompileManager;importnet.sf.jasperreports.engine.JasperExportManager;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.engine.JasperReport;importnet.sf.jasperreports.engine.design.JasperDesign;importnet.sf.jasperreports.engine.xml.JRXmlLoader;importpersistence.ProdutoDao;publicclassRelatorioextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{execute(request,response);}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{execute(request,response);}protectedvoidexecute(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ProdutoDaod=newProdutoDao();try{d.open();//JasperReports -> iReport //Passo o ResultSet do JDBC para o Relatorio JRResultSetDataSourceds=newJRResultSetDataSource(d.findAll());//Arquivo do relatório JasperDesignjd=JRXmlLoader.load("c:\\aula\\relatorio.jrxml");//Compilar o relatório JasperReportjr=JasperCompileManager.compileReport(jd);//Mescar os dados do JDBC ao documento do Relatório JasperPrintjp=JasperFillManager.fillReport(jr,null,ds);//Download de PDF response.reset();response.setContentType("application/pdf");OutputStreamout=response.getOutputStream();JasperExportManager.exportReportToPdfStream(jp,out);out.flush();out.close();}catch(Exceptione){e.printStackTrace();}finally{d.close();}}}
No seu DAO, utilizei ProdutoDao:
public ResultSet findAll() throws Exception{
stmt = con.prepareStatement("select * from produto");
rs = stmt.executeQuery();
return rs; //Retorna o proprio ResultSet com os dados do JDBC
}
Ai você baixa o !Report… e cria um relatório com ele… com tutoriais vc consegue fácil !!!
E na sua JSP, você coloca uma action do formulário ou um link mesmo, chamando seu servlet…