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

  • Os dados são visíveis na barra de endereço, ocasionando falta de segurança. Por exemplo, em uma autenticação de login, se for definido com o tipo GET para fazer a requisição, irá gerar sérias consequências como o nome do usuário e senha digitados anexados na URL;
  • Total de caracteres limitado em uma pesquisa;

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.