Como disponibilizar arquivos para download em Java

30 views
Skip to first unread message

Rafael Ponte

unread,
Nov 18, 2015, 9:48:01 AM11/18/15
to javace, ce...@googlegroups.com
Oi,

Vocês já se perguntaram como os framework web MVC fazem para disponibilizar arquivos para download na sua aplicação? É verdade que eles abstraem todos os detalhes para nós, mas que detalhes seriam estes?

Para entender um pouco de como o servidor envia arquivos para o navegador via protocolo HTTP eis nosso novo post:


De quebra você aprende como definir alguns cabeçalhos na resposta HTTP e a importância de entender como as coisas funcionam por debaixo dos panos.

E aí, já deve de descer o nível do seu framework para resolver algum problema?

Um abraço!
--
Rafael Ponte
TriadWorks | Formação Java
http://cursos.triadworks.com.br

Rafael Uchôa

unread,
Nov 18, 2015, 10:48:59 AM11/18/15
to CEJUG, javace
Ponte,

Só tenha cuidado com o cache do navegador, principalmente pra relatórios. Tente incluir o Last-Modified do arquivo, que já resolve muita coisa.

Segue mais detalhes:

Rafael Uchôa
www.naskar.com.br



--
-- Você está inscrito na lista de discussão técnica do CEJUG. Para sair da lista de discussão, envie um email para cejug+un...@googlegroups.com.
---
Você recebeu essa mensagem porque está inscrito no grupo "CEJUG" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para cejug+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para ce...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/cejug.
Para mais opções, acesse https://groups.google.com/d/optout.

Rafael Ponte

unread,
Nov 18, 2015, 10:57:10 AM11/18/15
to jav...@googlegroups.com, CEJUG
Oi Uchoa,

Excelente dica. Eu pensei em comentar sobre cache mas preferi não. Poderia complicar a vida do leitor.

De qualquer forma é interessante pedir pro navegador fazer cache das imagens quando necessário. Traz um ganho considerável de desempenho nas páginas.

Um abraço!
Você recebeu essa mensagem porque está inscrito no grupo "java.ce" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javace+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para jav...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/javace.

Para mais opções, acesse https://groups.google.com/d/optout.

Rafael Uchôa

unread,
Nov 18, 2015, 11:44:47 AM11/18/15
to CEJUG, javace
Na verdade, é ao contrário.

Você precisa ter cuidado ao gerar arquivos de relatórios (doc, pdf, xls) e não colocar o header do 'Last-Modified' ou 'Expires', pois o navegador pode mostrar o relatório antigo, e o usuário achar que está com os dados mais atuais.

A maneira mais simples de evitar isso é gerar um nome de arquivo diferente a cada processamento, como muitos instituições bancárias fazem.

A mais correta é usar o Cache-Control e Expires.

Eu mandei o link do heroku sobre performance, mas o intuito é mostrar detalhadamente os headers e pra que servem.

Como o artigo fala sobre FileDownload, acho que só o Last-Modified já resolveria e não precisaria explicar tudo sobre cache.



Rafael Uchôa
www.naskar.com.br


Rafael Ponte

unread,
Nov 18, 2015, 11:49:09 AM11/18/15
to jav...@googlegroups.com, CEJUG
Boa Uchoa,

O problema é o "browser pode fazer cache". O que normalmente faço nas apps que trabalho é gerar um nome diferente para cada arquivo gerado dinamicamente.

Enfim, conhecer os cabeçalhos é muito importante, em especial os relacionados a cache.

Rafael Ponte

unread,
Nov 18, 2015, 12:04:59 PM11/18/15
to jav...@googlegroups.com, CEJUG
Uchoa,

Vou adicionar a dica do cache no artigo ainda hoje. Assim que colocar eu informo aqui. Você me convenceu da importância dele.

Um abraço!
Reply all
Reply to author
Forward
0 new messages