Bom, meu amigo
Vou postar como foi que eu fiz para mostrar o meu relatório numa página web. Primeiro eu criei o seguinte Servlet:
public class Relatorio extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/* meu arquivo relatorio está dentro de uma pasta chamado 'relatorio' dentro da pasta WebContent*/
String path = getServletContext().getRealPath("/relatorio/");
String relJasper = path + "\\relatorio.jasper";
Map parameters = new HashedMap();
/*recupera parâmetro que será utilizado para gerar o relatório*/
parameters.put("chave", request.getParameter("chave"));
JasperPrint report = null;
try {
/*são passados o caminho do jasper, os parâmetros e a conexão com o banco*/
report = JasperFillManager.fillReport(relJasper, parameters, DBconf.getConnection());
response.setContentType("application/pdf");
byte x1[] = JasperExportManager.exportReportToPdf(report);
response.getOutputStream().write(x1);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
}
*não esqueça de configurar o servlet no web.xml
No jsp chamei ele deste jeito:
<a href="relatorio?chave=55655" target="page" onClick="window.open('','page','toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=yes,width=800,height=600,left=50,top=50,titlebar=yes')">
<img src="imagens/botao_relatorio.PNG" style="border: 0" title="Gerar Relatorio">
</a>
será aberta uma janela com o relatório gerado.
Espero que isto lhe seja útil!!!