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:
- O cliente solicita um conteúdo (url) que está procurando;
- A requisição é mandada para o servidor onde se processa as informações;
- 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:
- O usuário faz a requisição de uma página;
- O browser formata a solicitação e faz o envio para o servidor;
- O servidor encontra a página solicitada;
- O servidor formata a resposta e faz o envio para o browser;
- 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
<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>
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
<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>
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();
}
}
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.