Esse artigo faz parte da revista Java Magazine edição 56. Clique aqui para ler todos os artigos desta edição

yle="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">Integrando Struts2 com JasperReports

Criando relatórios para web usando recursos MVC

Como combinar o Struts2 com o JasperReports para criar relatórios de maneira eficaz e inteligente para aplicações web

Uma das grandes necessidades do desenvolvimento web é a criação e disponibilização de relatórios através de uma forma produtiva e escalável. Baseado nessa necessidade, esse artigo mostra de forma prática como você poderá usar para aplicações web baseadas em Java os recursos do Struts2 e do JasperReports, duas grandes ferramentas open-source, que quando integradas, oferecem muita facilidade e eficácia na criação de aplicações web com relatórios.

Além das vantagens da arquitetura MVC (Model View Controller) que veremos mais adiante, um dos maiores ganhos que essa solução oferece é a possibilidade de criar relatórios sem acesso direto ao banco de dados, eliminando assim, o uso de SQL nos fontes dos relatórios. Essa responsabilidade é delegada para a camada de persistência, ou seja, fornecendo listas de objetos de algum tipo classe de domínio (POJOs) para que o relatório seja renderizado durante sua execução.

Quem é quem?

Este artigo presume alguma vivência tanto com desenvolvimento web usando algum framework MVC e também alguma experiência com criação de relatórios usando o iReport e JasperReports. Mas para nivelamento, vamos revisitar alguns conceitos. Começaremos pelo Struts2, que é um dos mais populares frameworks MVC para o desenvolvimento web, que após sua fusão com o projeto Webwork, ganhou ótimas melhorias nos recursos de controlador de fluxo de navegação, actions, validações, plugins, tags, templates, recursos AJAX, etc.

Já o JasperReports é um projeto open-source de singular sucesso, permitindo gerar relatórios em vários formatos; com agrupamentos, fórmulas, parâmetros, gráficos, sub-relatórios, crosstables, figuras, sub-datasets; várias origens de dados como: SQL, coleções, EJBs, arquivos XML; além de outras funcionalidades bem interessantes. 

É importante lembrar que o JasperReports é uma API para renderizar esses relatórios, mas para ser realmente produtivo com o mesmo, será necessário usar alguma IDE específica para criação e alteração de relatórios. Neste caso, iremos usar o iReport, que é um projeto ligado ao próprio JasperReports e tem uma grande aceitação no mercado. 

Veja na Figura 1 o funcionamento de uma aplicação combinando os componentes básicos do Struts2 com os componentes do JasperReports. Observe que o controlador do Struts irá interceptar uma requisição HTTP, tratar em qual classe Action será criado um objeto do tipo List com base em uma estrutura de JavaBean e DAO (Data Acces Object).  Em seguida, o mesmo controlador irá usar o arquivo .jasper, que contém o relatório compilado do JasperReports, para devolver ao navegador, uma resposta HTTP contendo o relatório renderizado em PDF.

 

Figura 1. Arquitetura usada em aplicações com Struts2 e JasperReports

O Mágico de Oz (Ou: o homem por de trás da cortina)

Você pode estar se perguntando: como integrar o Struts2 com o JasperReports? O responsável por esse trabalho é um plugin do próprio projeto Struts2, chamado struts2-jasperreports-plugin. Veja que na seção “Ferramentas”, ele está listado como uma biblioteca a ser adicionada no projeto e mais à frente, será necessário configurar o mesmo no arquivo struts.xml, como você poderá conferir no tópico “Criando e configurando o arquivo struts.xml”.

Ferramentas

É importante observar que para criar a aplicação de exemplo, iremos precisar dos arquivos jar (bibliotecas) listados na Tabela 1. Para baixar esses itens, veja a seção Links no final do artigo.

 

Para o Struts2

Para o JasperReports

...
Quer ler esse conteúdo completo? Tenha acesso completo