Estou fazendo um trabalho da faculdade e preciso gerar um relatório de vendas por cliente. Eu gostaria que esse relatório fosse aberto em uma nova aba do navegador, eu criei um servlet para gerenciar apenas a emissão dos relatórios:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("application/pdf");
String gerenciamento = request.getParameter("gerenciamento");
ServletContext context = request.getSession().getServletContext();
HttpSession session = request.getSession();
if(gerenciamento.equals("notafiscal"))
{
gerarRelatorio relatorio = new gerarRelatorio();
String id = request.getParameter("idvenda");
int idVenda= Integer.parseInt(id);
VendaDAO dao = new VendaDAO();
String path = context.getRealPath("Relatorios/notaFiscal.jrxml");
byte[] bytes = relatorio.notaFiscalVenda(path, idVenda);
if(bytes!=null && bytes.length > 0)
{
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
}
}
public byte[] notaFiscalVenda(String path,int idVenda)
{
Map<String,Integer> map = new HashMap<String, Integer>();
map.put("idVenda", idVenda);
byte[] bytes = null;
try
{
JasperDesign design = JRXmlLoader.load(path);
JasperReport report = JasperCompileManager.compileReport(design);
bytes = JasperRunManager.runReportToPdf(report,map,conn);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return bytes;
}
java.lang.IllegalStateException: getWriter() has already been called for this response
org.apache.catalina.connector.Response.getOutputStream(Response.java:579)
org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:183)
com.farmatads.dao.svGerarRelatorioController.processRequest(svGerarRelatorioController.java:61)
com.farmatads.dao.svGerarRelatorioController.doGet(svGerarRelatorioController.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.farmatads.Controller.svRelatorioController.processRequest(svRelatorioController.java:60)
com.farmatads.Controller.svRelatorioController.doGet(svRelatorioController.java:118)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Já procurei por todo o forum como resolver isso mas nada.
Agradeço desde já
