Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 02 - Introdução aos Servlets

Métodos de execução dos Servlets

Até o momento, todos os Servlets que foram implementados redefiniram o método doGet() da classe HttpServlet. Para entendermos o porquê disso, precisamos estar cientes de que o HTTP (HyperTextTransferProtocol) é o protocolo mais utilizado na comunicação entre clientes e servidores web e ele pode ser utilizado de acordo com vários métodos (GET, POST, HEAD, PUT, etc.). Os métodos GET e POST são os mais utilizados e estão brevemente descritos no Quadro 1. Os detalhes sobre esses dois métodos não serão abordados neste curso.!

Quadro 1 - Métodos GET e POST do protocolo HTTP
Método Descrição
GET Método de acesso ao servidor web utilizado ao se: digitar uma URL em um navegador web; clicar em uma URL de uma página; acionar um formulário que contenha o atributo method="get". No caso, utiliza a própria URL para envio desses dados. Por exemplo, a URL <http://www.meusite.com/arquivo?p1=10> é utilizada para acessar o recurso <http://www.meusite.com/arquivo> passando-se o parâmetro p1 com valor 10.
POST Método de acesso ao servidor web utilizado ao se acionar um formulário web que contenha o atributo method="post". No caso, os parâmetros e valores de acesso a um recurso web não aparecem na própria URL – eles são enviados pelo navegador ao servidor de forma separada.

A implementação do método service() que é dada pela classe HttpServlet reconhece o tipo de método utilizado na requisição web e delega a execução a métodos específicos de acordo com o método utilizado. O termo “delega” quer dizer que o método executa outro método, ou seja, deixando para o segundo o trabalho de processamento da requisição. No caso dos métodos GET e POST, o método service() delega a tarefa de processar as requisições para os métodos doGet() e doPost(), respectivamente.

Para você entender melhor esse funcionamento, observe o exemplo da Figura 8, o qual possui uma página HTML com um link e com um botão que levam à execução do mesmo Servlet. No caso, o link usa o método GET e o botão usa o método POST (observe os atributos action e method do marcador form no código da Listagem 4).

 Tela com link para acesso via método GET e botão para acesso via método POST

O código da página HTML vista na Figura 8 é mostrado a seguir.

Listagem 4 - Código da página HTML com link e botão

Já a implementação da classe ServletGetPost para atender às requisições acionadas pelo link ou botão dessa página é vista a seguir. Esse Servlet redefine tanto o método doGet() como o método doPost() de HttpServlet, apresentando essa informação na mensagem de resposta (veja a Figura 9).

Listagem 5 - Código do ServletGetPost
 Telas geradas pelo ServletGetPost ao usarmos requisição via método POST e GET, respectivamente

Se na hora de implementar um Servlet, você notar que não faz diferença entre os métodos GET e POST (esse é o caso mais comum!), então você pode implementar apenas um dos métodos (digamos, o GET) e fazer com que o outro chame o primeiro. Isso pode ser observado no código do ServletTantoFaz apresentado a seguir.

Listagem 6 - Código do ServletTantoFaz

Caso você não redefina os métodos doGet() ou doPost(), a sua implementação padrão é mostrar uma mensagem de erro padrão indicando que o método HTTP utilizado não é suportado.

Versão 5.3 - Todos os Direitos reservados