Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Passar conteúdo para uma Servelet

Olá amigos.

Desejo utilizar uma única classe/servelet para realizar o download do relatório em PDF. Abaixo o código atualmente usado para realizar o download de um relatório especifico:

@WebServlet("/downloadRelatorio")
public class DownloadRelatorio extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        File arquivo = new File("C:/POO/Web/SCF/src/scf/relatoriosPdf/relatorioPacientes.pdf");

        //tipo de arquivo
        response.setContentType("application/pdf");

        //nome do arquivo a ser exibido na caixa de download do browser
        response.setHeader("Content-Disposition", "attachment; filename=" + arquivo.getName()+ ";");

        //manda os bytes do arquivo pelo response
        URL url = arquivo.toURI().toURL();
        BufferedInputStream leitor = new BufferedInputStream(url.openStream(), 4 * 1024);
        OutputStream escritor = response.getOutputStream();
        byte[] buffer = new byte[4 * 1024];
        int size = 0;
        while ((size = leitor.read(buffer, 0, buffer.length)) != -1) {
           escritor.write(buffer, 0, size);
        }
        escritor.close();
        leitor.close();
    }
}

Estou pensando a seguinte forma:

1- Fazer com que a minha página em HTML passe uma String para a Servelet. Essa String iria definir qual relatório fazer o download.

2- Ai no caso eu iria mudar somente o comando "File arquivo = new File("C:/POO/Web/SCF/src/scf/relatoriosPdf/relatorioPacientes.pdf");" do código.

Agora a questão, como eu passo a String para a Servelet?

2 respostas
solução!

Oi Maicon

basta você fazer request.getParameter("nome") se quiser pegar o que vem no enderecodoseusite.com/downloadRelatorio?nome=algumvalor.

Tem bastante disso nos cursos de web daqui! recomendo!

Muito obrigado Paulo Silveira, o senhor me ajudou demais.