Olá desenvolvedores, dando continuidade a implementação das rotinas de download e upload iremos aprender como fazer download de imagem com o JSF – JavaServer Faces. No tutorial “IMAGEM EM MINIATURA: MOSTRANDO NA TELA” estruturamos o método download(), é preciso agora recuperar o objeto pessoa correspondente no banco de dados para dar início ao processo de download.

A partir da implementação que já temos, conseguimos enviar o código do usuário para o servidor. Agora daremos continuidade a implementação da rotina de download.

MÉTODO CONSULTAR()

No DaoGeneric, o primeiro passo é a criação de um método que irá realizar a consulta no banco de dados e retornar a Entidade. Assim, o método consultar(), que como parâmetro recebe a entidade e o código do usuário deverá obter e iniciar uma transição.

E ainda, no escopo do método teremos uma variável que receberá o resultado da consulta, onde, a partir dos argumentos entidade (classe)e do código passados, deverá buscar na base de dados o usuário correspondente. O código que é recebido como parâmetro sendo uma String, deverá ser convertido em um tipo Long. Então, faremos um commit e retornaremos o objeto consultado.

Em um sistema de banco de dados um “commitar” é finalizar uma transação, tornando visível as alterações provocadas.

MÉTODO DOWNLOAD()

No managedBean, PessoaBean no método download() iremos invocar o método consultar() para obter o objeto, como argumento passaremos a classe Pessoa e código que veio da tela.

Pessoa pessos = daoGeneric.consultar(Pessoa.class, fileDownloadID);

Por outro lado, como é preciso dar uma resposta ao navegador, isto é, de uma funcionalidade que possibilite fornecer uma resposta específica do tipo HTTP ao navegador usaremos a interface HTTPServletResponse. Esta interface possui métodos para acessar cabeçalhos e cookies HTTP.

Poder acessar cabeçalhos HTTP – Hypertext Transfer Protocol, é essencialmente importante porque é exatamente o que o método download() deverá fazer. No response deveremos “setar”, além do cabeçalho, o tipo e o tamanho dos dados. Para então podermos escrever a resposta e finalizá-la para o JSF.

Desse modo, primeiro adicionaremos o cabeçalho, visto que é onde entre outras informações que são um padrão a ser informado no cabeçalho “setaremos” o nome e a extensão do arquivo. Então “setaremos” o tipo do arquivo, informando se tratar de um arquivo de mídia e o tamanho desse conteúdo.

Dessa forma poderemos escrever a saída (resposta), o download da foto original. Com o flush() confirmaremos a resposta. O fluxo de processamento do download é finalizado informando ao JSF que temos uma resposta completa.

EM POUCAS PALAVRAS

Com este tutorial completamos a série de tutoriais sobre upload, download e gravação em JSF. Em algum momento da implementação do método download() será exigido que você lance uma exceção é só clicar adicionar o que lhe é solicitado.