Eai Galera, eu to tentando criar um relatorio…criei ele todo no iReport até compilei…tdo certo!! Criei um jsp e uma servlet para chamar este jrxml.
No meu projeto eu criei um diretorio dentro do web-inf chamado reports e depois criei os dois docs .jrxml do relatorio. Adicionei tb a lib jasperreports1.3.3.jar no projeto e compilei tdo…nenhum erro. Mas nao consegui executa-la. Dah o seguinte erro:
exception
javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:143)
GeraNotaFiscal.doGet(GeraNotaFiscal.java:57)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
Ah tb nao conseghui criar o link da jsp para o Servlet…esse erro aparece quando eu coloco o endereço do Servlet direto no browser.
notafiscal.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Nota Fiscal</title>
</head>
<body>
<p >
<a target="_blank">
Gerar Nota Fiscal em PDF
</a>
</p>
</h1>
</body>
</html>
E a Servlet…
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
Connection c = null;
try
{
String drive = "org.postgresql.Driver";
String url = "jdbc:postgresql://127.0.0.1:5432/firex";
Class.forName(drive);
c = DriverManager.getConnection(url,"postgres","postgres");
}
catch(Exception e)
{
e.printStackTrace();
throw new ServletException(e);
}
//gera relatorio
ServletContext context = getServletContext();
byte[] bytes = null;
try
{
//carrega arquivos Jasper
String reportSource1 = "/WEB-INF/reports/NF1Firex.jrxml";
String reportSource2 = "/WEB-INF/reports/CustomerFirex.jrxml";
JasperReport relatorioJasper = JasperCompileManager.compileReport(reportSource1);
JasperReport subrelatorioJasper = JasperCompileManager.compileReport(reportSource2);
Map parametros = new HashMap();
parametros.put("pageRoot",context.getRealPath("/"));
parametros.put("subReport",subrelatorioJasper);
//direciona o relatorio para um stream
bytes = JasperRunManager.runReportToPdf(relatorioJasper,parametros,c);
}
catch(Exception e)
{
e.printStackTrace();
throw new ServletException(e);
}
if(bytes != null && bytes.length > 0)
{
//envia o relatorio em pdf para o browser
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes,0,bytes.length);
outputStream.flush();
outputStream.close();
}
}
Me ajudem por favor!!! :?
