Como baixar os arquivos de documentos do servidor web usando Servlet

Neste artigo veremos os tipos de respostas que podem ser produzidas usando um Servlet. Também iremos ver o processamento de uma resposta multimídia usando um Servlet para baixar um arquivo de documentos.

Quando um pedido chega a um servidor web usando uma URL, o servidor web gera uma resposta para o cliente. Uma resposta pode ser de qualquer tipo. Poderia ser uma resposta textual ou html, uma resposta multimídia como vídeo ou áudio ou um arquivo de documento. Todos estes tipos de respostas são disponibilizados pela tecnologia Servlet em Java. As respostas textuais e html são normalmente processados pelo servidor web, ao passo que as respostas multimídia são disponibilizados para baixar ou abrir ou jogar diretamente usando o aplicativo cliente.

Servlet Response Multimedia:

Quando um usuário envia uma solicitação para puxar um arquivo de documento do servidor web, o usuário é convidado a abrir um arquivo ou para baixar um arquivo a partir do servidor. Servlet torna os arquivos de dados disponíveis para aplicação do cliente e resto da funcionalidade é feito através da aplicação cliente. Um aplicativo cliente pode solicitar que o usuário abra um documento ou faça o download do documento então ele pode baixar ou abrir diretamente o arquivo.

Um desenvolvedor tem que especificar um tipo de resposta do Servlet, sempre que um Servlet está sendo criado. Uma interface HttpServletResponse se encarrega de gerar resposta.

Listagem 1: Classe Servlet WordServlet - o download de um documento do word

Import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/WordServlet") public class WordServlet extends HttpServlet { private static final long serialVersionUID = 1L; public WordServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/msword"); PrintWriter out = response.getWriter(); out.println("Este documento é gerado por servlet"); out.close(); } }

O trecho de código acima cria um arquivo de documento MS-Word que imprime uma declaração de texto simples "Este documento é gerado por servlet".

Listagem 2: Classe Servlet ExcelServlet - o download de um documento excel

Import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/ExcelServlet") public class ExcelServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ExcelServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/vnd.ms-excel"); PrintWriter out = response.getWriter(); out.println("Nome\tCargo\tSalario"); out.println("Raj\tAccountant\t20000"); out.println("Vinay\tAccountant\t20000"); out.println("Rajesh\tAccountant\t20000"); out.println("\tTotal:\t=sum(c2:c3)"); out.close(); } }

O trecho de código acima cria um arquivo de documento do MS-Excel que calcula o salário de todos os funcionários e produz a soma de salário destes empregados.

Na listagem acima de 1 e 2, as sete primeiras linhas do código importa sete classes Java e interfaces que são necessários para executar os Servlet’s. @ WebServlet é a próxima linha de código que é a anotação Servlet para definir um padrão de url para este Servlet Web. Este padrão de url vai ajudar a chamar o Servlet usando a ação da url no form html. O padrão de url para esses servlets são: @ WebServlet ("WordServlet") e @ WebServlet ("ExcelServlet")

Na próxima linha da classe a WordServlet é criada e estende a classe HttpServlet que é definida no pacote javax.servlet.http.

A linha seguinte define uma variável serialVersionUID que é usado pela IDE Eclipse, se não for definida na classe, Eclipse irá emitir um warning. Na linha seguinte o construtor padrão é definido que faz uma chamada a super ().

A próximas linhas definem os métodos doGet () e doPost (). O método doGet () recebe dois parâmetros do tipo de interface, HTTPServletRequest e HttpServletResponse, os quais são definidos no pacote javax.servlet.http e este método chama o método doPost ().

O método doPost () também aceita dois parâmetros do tipo HTTPServletRequest e HttpServletResponse e define o tipo de resposta na primeira linha do método. Para definir o tipo de resposta de um Servlet, um método da interface HttpServletResponse setContentType () é usado.

O Servlet acima irá criar um arquivo de documento do MS-Word como uma resposta da seguinte forma:

response.setContentType(“application/msword”);

Em seguida, chama o método getWriter () da interface de HttpServletResponse que retorna uma referência da classe PrintWriter.

PrintWriter out = response.getWriter();

As próximas linhas chamam o método println () ou print () da classe PrintWriter para escrever na página web. A classe WordServlet chama o método print () para escrever:

out.println("Este documento é gerado por servlet");

A classe ExcelServlet chama o método println () para escrever uma folha de excel, onde / t é usado para separar os dados na próxima coluna. Sum (c3: c3) irá adicionar dados de três linhas de terceira coluna na folha de excel. No final do Servlet, um método close () da classe PrintWriter é chamado para fechar o fluxo de gravação.

Listagem 3: arquivo index.jsp para executar Ms-Word e MS-Excel Servlet

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Download Data</title> </head> <body> View data in following format:<br> <a href = "WordServlet">MS-Word</a><br> <a href = "ExcelServlet">MS-Excel</a> </body> </html>

O trecho de código acima cria uma página web html que cria uma interface com o usuário para visitar Ms-Word e folhas de Ms-Excel. Duas tag’s de âncora foram usadas para que o usuário possa visitar os servlets acima definidos (WordServlet & ExcelServlet), respectivamente.


Figura 1: Mostra uma interface para visitar Ms-Word e MS-Excel Servlet

A figura acima mostra a interface html que dá as url’s para visitar os Servlet’s Ms-Word e Ms-Excel. Uma vez que clicar em MS-Word, ele carrega WordServlet e solicita que o usuário faça o download ou abrir documento do MS-Word. Este documento irá conter a string "Este documento é gerado por servlet" que foi passado para o servlet usando writer stream.

A próximo url, MS-Excel, que carrega ExcelServlet e solicita que o usuário faça o download ou abrir documento do MS-Excel usando o aplicativo apropriado. Este documento irá criar três colums "Nome", "Cargo" e "Salario". Este documento salvar três registros e a quarta fileira produz o salário total para distribuir esses três funcionários.


Figura 2: Visite ExcelServlet que o prompt do usuário irá baixar ou abrir a folha de excel.

A figura acima mostra a ação da url que chama o Servlet ExcelServlet e downloads de um arquivo do Excel, enquanto um aplicativo cliente recebe a resposta do servidor, ele perguntará ao usuário escolher uma ação a ser executada no arquivo excel download.


Figura 3: Mostra o conteúdo da folha de excel baixado usando ExcelServlet.

A figura acima mostra uma captura de tela da folha de excel que foi produzido pelo ExcelServlet.


Figura 4: Visite WordServlet que o prompt do usuário irá baixar ou abrir o documento do MS-Word

A figura acima mostra uma pequena janela solicitando que o usuário escolha uma ação para abrir ou salvar um arquivo do MS-Word, enquanto um pedido de url é enviado para inicializar WordServlet no servidor web.


Figura 5: Mostra o conteúdo do arquivo baixado documento do MS-Word usando o WordServlet

Esta é a captura de tela do arquivo do MS-Word baixado de um servidor web.

Arquivos JAR necessários:


Figura 6: Os arquivos JAR necessários


Figura 7: Estrutura de diretórios necessária para executar a aplicação web Java

Ferramentas necessárias:

Para criar e executar este aplicativo web, precisamos dos seguintes aplicativos abaixo:


Figura 8: Servidor configurado na IDE Eclipse para Application Server e Web Server

Conclusão

Neste artigo foi visto:

Artigo traduzido e originalmente publicado em: http://mrbool.com/how-to-download-document-files-from-webserver-using-servlet/28369

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados