Chamar um relatório JasperReports através do Java
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Chamar um relatório JasperReports através do Java
Olá amigos,
Neste artigo iremos aprender como fazer a chamada de um relatório criado em JasperReports através de um programa Java. Caso você não saiba criar relatórios leia este artigo .
1. Criando o projeto
Crie um projeto web Web chamado JasperReportsWeb.
2. Conectando o projeto ao Relatório
Cria a classe chamada “GeraRelatorio” e adicione o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | package br.com.feltex.jasperreportsweb; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.HashMap; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.JasperRunManager; public class GeraRelatorio { // Método para realizar a conexão com o banco de dados public Connection getConexao() throws SQLException, ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost:3306/bdacademicnet", "root", "teco01"); return conexao; } // Método para ser executado em JSE public static void main(String[] args) { System.out.println("Inicio"); GeraRelatorio geraRelatorio = new GeraRelatorio(); String path = "E:/Java/Eclipse/workspace02/JasperReportsWeb/WebContent/relatorios/"; geraRelatorio.gerarPDF(path); System.out.println("Fim"); } public byte[] gerarPDF(String diretorio) { byte[] retorno = null; String relatorio = diretorio + "RelAlunos.jrxml"; String imagem = diretorio + "cherry.jpg"; try { // Faz a compilação do relatório JasperReport jasperReport = JasperCompileManager.compileReport(relatorio); // Cria o mapa de parâmetros que será enviado ao relatório HashMap<String, Object> paramatros = new HashMap<String, Object>(); // Faz o apontamento para a imagem que aparece no top do relatório paramatros.put("logo", imagem); // Preenche os dados do relatório JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, paramatros, getConexao()); // Objeto para a ser retornado retorno = JasperRunManager.runReportToPdf(jasperReport, paramatros, getConexao()); // Gera o arquivo PDF no caminho especificado JasperExportManager.exportReportToPdfFile(jasperPrint, "C:/temp/RelatorioAlunos.pdf"); } catch (Exception e) { e.printStackTrace(); } return retorno; } } |
3. Criação do Servlet
Aqui temos um servlet “RelatorioAlunoServlet” que é uma classe que trabalha com requisições e respostas HTTP em Java. Ao ser executado este servlet irá gerar o “RelatorioAluno.pdf” e abrir uma nova aba no Browser e dará a opção ao usuário de abrir ou salvar o relatório que foi gerado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | package br.com.feltex.jasperreportsweb; import java.io.File; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/RelatorioAlunoServlet") public class RelatorioAlunoServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // Pega o caminho completo de onde a aplicação está rodando ServletContext servletContext = getServletContext(); String diretorio = servletContext.getRealPath(File.separator) + "relatorios/"; // Instaciar a classe que possui os métodos de geração de relatório GeraRelatorio geraRelatorio = new GeraRelatorio(); // Chama o método que gera um array de bytes com o // conteúdo do arquivo PDF byte[] pdf = geraRelatorio.gerarPDF(diretorio); OutputStream outStream = response.getOutputStream(); response.setHeader("Content-Disposition", "inline, filename=RelatorioAluno.pdf"); response.setContentType("application/pdf"); response.setContentLength(pdf.length); outStream.write(pdf, 0, pdf.length); } catch (Exception e) { e.printStackTrace(); } } } |
4. Página Principal
Por fim vamos fazer a página que chamará o Servlet responsável pela exportação do relatório em PDF.
1 2 3 4 5 6 7 8 9 10 11 | <html> <head> <title>Seja bem vindo!</title> </head> <body> Geração de relatório: <br> <a href="RelatorioAlunoServlet" target="_blank">Clique aqui para gerar o relatório!</a> </body> </html> |
Pronto. Agora você pode fazer a chamada do seu relatório.
Execute o seu projeto e clique no link:
5. Conclusão
Vimos que é possível realizar chamadas de uma relatório JasperReports em uma aplicação Java.
Caso você tenha uma aplicação JSE, as famosas aplicações desktop, você pode utilizar o método “main”
da classe GeraRelatorio. Isso gerará o arquivo PDF na destino “C:\temp”.
Então é isso amigos. Por hoje é só e vida que Segue!
Erros possíveis:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Verifique se na pasta WEB-INF\lib da sua aplicação há o arquivo com o Driver do Banco de dados MySQL
Um nome parecido com: “mysql-connector-java-5.1.9.jar”
“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure”
Verifique a conexão com o Banco de Dados:
1. No método getConexao da classe GeraRelatorio veja se todas as informações do seu banco de dados
estão corretas. Verifique as variáveis: nomeBanco, usuario e senha.
2. Se estiver tudo correta, veja se o seu banco de dados foi inicializado.
Links relacionados
Como criar relatórios com o JasperReports
Site Oficial do JasperReports
Deixe um comentário
Você precisa fazer o login para publicar um comentário.