Dúvida relatório Web?!

3 respostas
arm.jr

Estou fazendo um relatório no IReport para a WEB, gerando um arquivo PDF.

Criei um Servlet relatorio.

[color=blue]public class relatorio extends HttpServlet {

private Connection con = null;
private String driver = "com.mysql.jdbc.Driver";
private String endereco = "jdbc:mysql://localhost:3306/upis";
private String user = "root";
private String pass = "123456";
private ResultSet rs = null;

 
public void droga()
{
  try {
			Class.forName(driver);
			con = DriverManager.getConnection(endereco, user, pass);
			Statement statement = con.createStatement();
			rs = statement.executeQuery("SELECT * from amigos");
			JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
			HashMap parameters = new HashMap();
			
			JasperPrint print = JasperFillManager.fillReport("c:\\Report02.jasper", parameters, jrRS);
			
		//	JasperViewer.viewReport(print, false); //true -&gt significa que se vc fechar o relatório toda a aplicação será fechada!
                                                       
			JasperExportManager.exportReportToPdfFile(print, "c:\\rapaz.pdf");
                              
                                
	} catch (Exception e) {
		System.err.println("Problemas apresentados na operacao de conexao");
	}
 
}

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
           
    droga();
    
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>TUDO CERTO!</title>");
    out.println("</head>");
    out.println("&lt;body&gt; <br> <br>");
    out.println("&lt;h1&gt; <a > ABRIR PDF </a>&lt;/h1&gt;");
    out.println("&lt;/body&gt;");
    out.println("&lt;/html&gt;");
     
    out.close();
    
    
}[/color]

Ele cria o arquivo PDF beleza, mas como eu faço para abrir no browser usando um link?
Tambem queria saber se tem outra forma de fazer esse formulário, eu sei fazer legal para programas desktop, mas para web e um pouco diferente. Ter que salvar o arquivo PDF na maquina e depois abrir eu achei meio estranho, e assim mesmo?!!

Aguardo resposta, valeu!!

3 Respostas

M

Faça um servlet como abaixo e mapei no seu web.xml, ai faça um link chamando este servlet, ai ele exibe no browser:

public class RelAtividades extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest req, HttpServletResponse res)
		throws ServletException, IOException {
		Conexao conexao = new Conexao();
		conexao.conecta(); // Faz a conexão
		// Na variavel pathJasper ficara o caminho do diretório para os relatórios compilados (.jasper)
		String pathJasper = getServletContext().getRealPath("/WEB-INF/classes/biblioteca/relatorios/")+ "/";		
		Double id_atividade_externa = new Double(req.getParameter("id_atividade_externa"));	
		String logo = getServletContext().getRealPath("/imagens/sensatta.gif");		
		// Parametros do relatorio
		Map parametros = new HashMap();
		parametros.put("ID_ATIVIDADE_EXTERNA", id_atividade_externa);
		parametros.put("LOGO", logo);
		try {
			 JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "RelatorioAtividades.jasper", parametros, conexao.conn);
			 byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
			 res.setContentType("application/pdf");
			 res.setContentLength(bytes.length);
			 ServletOutputStream ouputStream = res.getOutputStream();
			 ouputStream.write(bytes, 0, bytes.length);
			 ouputStream.flush();
			 ouputStream.close();
		} 
		catch (IOException e) {
			res.getWriter().println("Erro ao gerar o relatório: " + e);
		}
		catch (Exception e) {
			res.getWriter().println("Erro ao gerar o relatório: " + e);
		}
		finally {		        
		     try{
		    	 conexao.conn.close();
		    	 //pool.close();
		      }
		     catch(Exception e){e.printStackTrace();}
	    } 
	}
	
	
	protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
		throws ServletException, IOException {
		doPost(arg0, arg1);
	}
}
arm.jr

Valeu bacana!

Certinho!!

:smiley:

Amigo, eu queria saber outra coisa, como eu faço para abrir esse PDF dessa mesma forma, mas agora, mas colocando o código direto na pagina JSP.

M

Cara, esta de exibir o código JSP não sei, mas navegando pela net já encontrei algo explicando isso, dê uma pesquisada e se achar post aqui a solução, por favor. Assim a comunidade GUJ terá a solução mais fácil qdo precisar.

Criado 15 de setembro de 2006
Ultima resposta 20 de set. de 2006
Respostas 3
Participantes 2