JSP e Servlet - Enviando requisições GET e POST

Veja neste artigo, a introdução dos métodos HTTP (GET e POST), conheça a sua formação, características, anatomia de cada solicitação e processos. e aprenda a enviar solicitações de uma página JSP para um Servlet através de formulários.

Os métodos GET e POST são usados em formulários, páginas de pesquisas, cadastros de informações, acesso de sistemas entre outros. A ação ocorre quando tentamos fazer algum envio de informação para o servidor, onde esperamos uma resposta de retorno. Vamos conhecer algumas características que fazem parte desses métodos.

HTTP

Localizado junto com o nome do endereço web na barra de endereço, é um protocolo de comunicação entre servidores e clientes. Nesse protocolo são realizadas as solicitações (request) feitas pelos browsers e as respostas (responses) pelo servidor.

Quando um servidor web recebe uma solicitação e retorna algo para o cliente, ocorre um processo da seguinte maneira:

  1. O cliente solicita um conteúdo (url) que está procurando;
  2. A requisição é mandada para o servidor onde se processa as informações;
  3. O servidor devolve uma resposta para o cliente (navegador);

Na parte do cliente web, podemos identificar como browser - softwares que se comunicam com o servidor, por exemplo: Mozilla Firefox, Internet Explorer, Opera entre outros. Sendo permitido que o usuário faça solicitações aoo servidor exibindo o resultado do pedido. O processo dessas solicitações se resume da seguinte maneira:

  1. O usuário faz a requisição de uma página;
  2. O browser formata a solicitação e faz o envio para o servidor;
  3. O servidor encontra a página solicitada;
  4. O servidor formata a resposta e faz o envio para o browser;
  5. O browser resgata o HTML e compila, transformando em um formato visível para o usuário final;

Métodos

O protocolo HTTP possui diversos métodos, entre eles estão o POST e GET, geralmente os mais usados. Os métodos têm a tarefa de informar ao servidor o tipo de solicitação que está sendo realizada.

Método GET

O método GET tem a responsabilidade de recuperar informações (dados). Em alguns casos, quando existe algum parâmetro a ser passado, então é inserido na URL junto um sinal de interrogação (?) após o endereço da página, seguido por “&” separando os vários parâmetros, se for o caso.

Desvantagens do GET

Anatomia do GET

RequestHTTP GET GET/servlet/login.do?nome=Thiago&sobrenome=Palmeira HTTP/1.1 Host:localhost:8080 User-Agent: mOzila/4.0(compatible; Windows NT 5.0) Browser Refer: http://localhost/login.jsp Origem do Request Accept: text/xml, application/xml Tipos aceitáveis para resposta Accept-Language: en-us Idiomas Acitáveis Accept-Encoding: gzip, deflate Tipos de codificaçoes aceitas Connection: Keep-Alive Manter a conexão ativa
Listagem 1. Anatomia da Requisição do GET
<html> <head><title>Página de Login</title></head> <body> <form action=” ${pageContext.request.contextPath}/login.do” method=”get”> Nome.: <input type=”text” name=”nome” /> <br /> Sobrenome.: <input type=”text” name=”sobrenome” /> <br /> <br /> <input type=”submit” value=”Enviar”/> </form> </body> </html>
Listagem 2. Enviando uma solicitação GET – login.jsp

Quando realizado o login de teste, informando os parâmetros de Nome = Thiago e Sobrenome = Palmeira, a url se transforma em uma “query string”, como é conhecida. Exemplo: http://localhost:8080/servlet/login.do?nome=Thiago&sobrenome=Palmeira

Método POST

É o método mais seguro quando o assunto é “dados”. Essa solicitação é usada quando tem uma necessidade de alteração do banco de dados, ou inclusões de serviços. Por exemplo, quando um formulário faz uma requisição para o servidor enviando os seus dados do formulário anexados no corpo da solicitação.

RequestHTTP POST POST/servlet/login.do HTTP/1.1 Host:localhost:8080 User-Agent: mOzila/4.0(compatible; Windows NT 5.0) Browser Refer: http://localhost/login.jsp Origem do Request Accept: text/xml, application/xml Tipos aceitáveis para resposta Accept-Language: en-us Idiomas Acitáveis Accept-Encoding: gzip, deflate Tipos de codificaçoes aceitas Connection: Keep-Alive Manter a conexão ativa
Listagem 3. Anatomia da Requisição do POST
<html> <head><title>Página de Login</title></head> <body> <form action=” ${pageContext.request.contextPath}/login.do” method=”post”> Nome.: <input type=”text” name=”nome” /> <br /> Sobrenome.: <input type=”text” name=”sobrenome” /> <br /> <br /> <input type=”submit” value=”Enviar”/> </form> </body> </html>
Listagem 4. Enviando uma solicitação POST – login.jsp

Quando for submetida a página a url é redirecionada para o seguinte endereço: URL=http://localhost:8080/servlet/login.do

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("/Ola") public class Ola extends HttpServlet { private static final long serialVersionUID = 1L; public Ola() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nome = request.getParameter("nome"); String sobrenome = request.getParameter("sobrenome"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("Bem Vindo<h3>"+nome+" " +sobrenome+"</h3>"); out.close(); } }
Listagem 5. Servlet login.do

A mágica acontece quando o usuário submete a página que realiza uma busca no Servlet login.do da Listagem 5. O método doPost está recuperando os valores dos campos que foram definidos como “nome” e “sobrenome” no atributo “name” dos input text da página em JSP, e o objeto PrintWriter efetua a saída dos dados. Esse Servlet funciona tanto para POST como para GET, pois no método doGET está sendo chamado o doPOST e passando os parâmetros de resposta e requisição da página.

Artigos relacionados