Fala galera!
Estou tentando fazer meu primeiro relatório com ireport utilizando codigos do struts e do hibernate.
Eu criei dentro do ireport uma configuração de conexão em branco, e montei um relatorio simples para mostrar a lista que busquei no banco de dados.(não sei se fui mto claro, mas vamos prosseguir).
Pois bem, ao criar as classes, fiz conforme os codigos abaixo:
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServlet;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
public class RelProduto extends HttpServlet{
public byte[] exibirRelatorio(List list) {
// Caminho do .jasper
String Relatorio = "Relatorio_Produto.jasper";
// O datasource
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
byte[] bytes = null;
try {
//ServletContext context = getServletContext();
JasperReport relatorioJasper1 = (JasperReport) JRLoader.loadObject("d:/tomcat/webapps/teste2/reports/Relatorio_produto.jasper");
bytes = JasperRunManager.runReportToPdf (relatorioJasper1,new HashMap(), ds );
} catch (JRException e) {
System.out.println(e.getMessage());
}
return bytes;
}
}
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;
import br.unig.teste.dao.ProdutoDao;
import br.unig.teste.hibernate.HibernateFactory;
import br.unig.teste.modelo.Produto;
import br.unig.teste.relatorio.RelProduto;
public class ConsultaAction extends Action{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res){
Session session = new HibernateFactory().getSession();
Produto produto = (Produto)form;
List produtoEncontrado = new ProdutoDao(session).pesqNome(produto);
req.setAttribute("PRODUTOENCONTRADO",produtoEncontrado);
byte[] bytes = new RelProduto().exibirRelatorio(produtoEncontrado);
System.out.println(bytes.length);
//Gerando a Saída
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
ServletOutputStream ouputStream;
try {
ouputStream = res.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mapping.findForward(null);
}
}
Acontece q qdo eu faço uma pesquisa em um jsp e dou um submit, ele abre uma janela para salvar “ConsultaAction.do”, ao inves do pdf que tentei montar para imprimir.
Se alguem puder me ajudar, agradeço!!!