Servlet – Entendendo o doGet e doPost – Java

Publicado: 13 de outubro de 2014 em Java

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:

Servlet - doGet e doPost

Servlet – doGet e doPost

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 :

doGet - url - servlet

doGet – url – servlet

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.

Parâmetros - doGet

Parâmetros – doGet

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:

Servlet - doPost

Servlet – doPost

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!");
	}

}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s