O protocolo HTTP define oito métodos (GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS e CONNECT) que indicam a ação a ser realizada no recurso especificado. o método determina o que o servidor deve fazer com a URL fornecida no momento da requisição de um recurso. A classe HTTPServlet Fornece uma classe abstrata para ser uma subclasse de um servlet HTTP adequados a um website. A subclasse de HTTPServlet deve substituir pelo menos um método, normalmente um deles é doGet, se o servlet suporta solicitações HTTP GET ou doPost, para solicitações HTTP POST ou os outros método suportados pela classe HTTPServlet.
HTTPServlet: http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html
Basicamente você utiliza o método doGet sempre que a requisição que você faz não altere o estado do servidor, como uma consulta, uma busca e etc. O método doPost envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso especificado. Os dados são incluídos no corpo do comando.
Utilizando os métodos doGet e doPost
1 – Crie uma aplicação do tipo Dynamic Web Project e chame seu projeto de DaServlet001, crie um novo Servlet chamado MeuServlet, você pode deixar que ele herde os métodos padrões do Wizard da IDE Eclipse que são o doGet e o doPost, copie o programa abaixo e rode sua aplicação:
2 – Como você pode ver nós criamos uma pagina html através do método doGet, ele é automaticamente disparado assim que o servidor processa a url da nossa aplicação :
3 – Porem, o método doGet é utilizado para passar informações do navegador para o servidor, isto significa que vamos efetuar uma requisição Client-Server, vamos passar um parâmetro através do nosso browser para que o valor seja processado no servidor de aplicação Java, vamos fazer isto de um modo manual. O método para se passar parâmetros para o servidor é utilizando o caractere de “?” (interrogação) seguido sem espaço pelo nome do parâmetro adicionado do sinal de “=” (igual) e o valor desejado, caso haja mais que um parâmetros separe-os como o caractere “&” (E comercial ou Ampersand). Coloque a seguinte url e digite a tecla enter, mas atente-se a porta correta do seu servidor Tomcat:
http://localhost:9080/DAServlet001/MeuServlet?Parametro1=Meu parametro de teste
Assim que o Servlet executar o método doGet novamente ele vai automaticamente identificar o parâmetro utilizando na requisição GET e imprimir uma linha na pagina HTML.
4 – O método doPost é disparado quando você clica no botão do formulário html e a ação solicita uma requisição ao Servlet, o nosso método apenas imprime uma linha no navegador:
Exemplo:
Neste exemplo nos criamos uma aplicação web dinâmica e um Servlet e utilizamos os métodos doGet e doPost da classe HTTPServlet. Utilizamos também a manipulação simples de um parâmetro para a requisição doGET.
Java
package org.desenvolvimento.aberto; 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; /** * Servlet implementation class MeuServlet * * Classe do Servlet */ @WebServlet("/MeuServlet") public class MeuServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() * * Construtor do Servlet */ public MeuServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) * * Método GET */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String meuHtml = "<html xmlns=\"http://www.w3.org/1999/xhtml\">" + "<head><title>Desenvolvimento Aberto</title></head>" + "<body>" + "<h1>Desenvolvimento Aberto</h1> <br />" + "<h3>Java - Servlet - doGet</h3>" + "Pagina criada pelo metodo do Servlet <br />" + // Para que o método post seja disparado // o form precisa saber o método - method="post" // também funciona com o metodo get "<form action=\"MeuServlet\" method=\"post\"> <br />" + "<input type=\"submit\" value=\"Enviar\">" + "</form>" + "</body>" + "</html>"; PrintWriter imprimir = response.getWriter(); imprimir.println(meuHtml); // Recupera Parametros da URL String parametro = request.getParameter("Parametro1"); if (parametro != null ) { imprimir.println("O parametro digitado foi: " + parametro); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) * * Método POST */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter imprimir = response.getWriter(); imprimir.println("Método POST foi disparado!"); } }