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.