Olá desenvolvedores, no tutorial de hoje, ainda no contexto do tema upload iremos implementar o download das imagens de cadastro. Mas antes, vamos a algumas observações. Não podemos ao mesmo tempo em que fazemos uma requisição de download da imagem carregar a lista de usuários e fazer o redirecionamento.
Se insistimos em fazer com que os dois ocorram ao mesmo tempo, estaremos na verdade criando uma competição entre ambos. Assim, implementaremos condições para quando o carregamento deverá ocorrer ou o download.
Assim, para fazermos a requisição para o download, pegaremos o parâmetro passado, consultaremos no banco. E então a imagem será processada e colocada na resposta, onde ela deverá chegar tendo sido escrita em bytes.
DEFININDO PARÂMETROS DE AÇÃO
Assim, dentro do doGet() iremos passar o parâmetro e também decidir quando recarregar os dados na tela e quando fazer o download. Mas que parâmetro é este e de onde ele vem? O primeiro parâmetro de ação, defijnirá quando carregaremos a lista de imagens, desse modo o chamaremos de carregar, e ele virá do link, na página de upload.
No escopo do forEach, ainda na página upload.jsp, criaremos uma nova coluna que receberá o link para o download e o parâmetro de ação. Isto é, iremos fazer a requisição do download para a mesma servlet onde listamos os dados do usuário, mas com um parâmetro distinto.
Mas além do parâmetro de ação, precisaremos de um segundo parâmetro que é o id do usuário para qual a requisição de download está sendo realizada.
SERVLET
E agora na servlet FileUpload, no bloco try do método doGet(), iremos fazer a requisição por meio do parâmetro e armazenar em uma String.
String acao = request.getParamenter(“acao”);
Note, estamos passando um parâmetro que é igual a “carregar”. Desse modo na estrutura de decisão se o parâmetro de ação for igual a carregar, então as imagens serão carregadas.
Mas se não, se o parâmetro de ação for igual ao download, pegaremos o parâmetro da requisição do id do usuário, isto é, o iduser.
E então, ainda no contexto do else if, iremos fazer uma requisição na classe de conexão daoUausario para recuperar a imagem por meio do método buscaoImagem();
String imagem = daoUsuario.buscaoImagem(iduser);
MÉTODO BUSCAIMAGEM()
É preciso agora criar o método buscaoImagem() a partir do qual iremos na classe de conexão daoUsuario possibilitar a busca pela imagem. A assinatura do método ficará como mostrado abaixo.
No escopo do método, dentro de um bloco try implementaremos a Query onde será selecionada a imagem cujo id é igual ao iduser passado por parâmetro. E então montaremos a Query por meio PreparedStatement. Observe que por meio do objeto connection ele recebe o sql, assim, desde que os parâmetros sejam passados corretamente não precisaremos concatenar as condições.
E por se tratar de uma consulta é preciso passar o resultado dessa busca para o ResultSet. O Resultset é uma interface utilizada para guardar dados vindos do banco de dados.
ResultSet resultSet = buscaImagem.executeQuery();
Desse modo, enquanto tiver dados na base de dados a imagem será retornada. E se não existir nenhum dado será retornado nulo (nulo).
EM POUCAS PALAVRAS
Então finalizamos a primeira parte do tutorial de implementação da rotina de download, na parte dois deste tutorial iremos tratar da conversão do arquivo em base64. E toda esta implementação tratará a condição em que o parâmetro de ação é igual a download. Eu fico por aqui e nos vemos na continuação deste tutorial.