Cursos / Informática para Internet / Desenvolvimento Web I / Aula
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 HTTPMé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).
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ãoJá 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 ServletGetPostSe 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 ServletTantoFazCaso 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