Problemas com os metodos doGet e doPost, Servlets

Pessoal,

Estou lendo a apostila FJ-21 da Caelum, porem esbarrei em um problema e a apostila não aprofunda no assunto.

Basicamente fiz um servlet, cujo pega uma serie de variaveis via POST (definido no arquivo HTML) e da um insert num banco mySQL.

O problema é o seguinte:

A apostila fala em um momento que o metodo service, cujo qual reescrevemos ao extender a classe HttpRequest aceita tanto POST quanto GET.

Dai a apostila fala que para se obrigar a usar um, ou outro, devemos implementar o metodo doGet, ou doPost, porem o eclipse apresenta uma seriei de errors ao adicionar o metodo e não compila.

Segue o código:

[code]package br.com.caelum.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.caelum.jdbc.dao.CadastraContatoDAO;
import br.com.caelum.modelo.Contato;

public class CadastroContato extends HttpServlet{

void doPost(HttpServletRequest req, HttpServletResponse res);

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	/*
	 * PrintWriter out = response.getWriter();
	 
	
	 // escreve o texto
	 out.println("<html>");
	 out.println("<body>");
	 out.println("Primeira servlet");
	 out.println("</body>");
	 out.println("</html>");
	
	*/
	PrintWriter out = response.getWriter();
	
	// pegando os parâmetros do request
	String nome = request.getParameter("nome");
	String email = request.getParameter("email");
	String endereco = request.getParameter("endereco");
	String dataNascimentoString = request.getParameter("dataNascimento");
	Calendar dataNascimento = null;
	
	// fazendo a conversão da data de String para Calendar(se acordo com o modelo)
	try {
		
		Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataNascimentoString);
	    dataNascimento = Calendar.getInstance();
	    dataNascimento.setTime(date);
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		out.println("Erro de conversão de data.");
		return;// para execução do metodo
	}
	
	// Cria intancia um objeto com os parametros da tela de entrada
	Contato contato = new Contato();
	contato.setNome(nome);
	contato.setEmail(email);
	contato.setEndereco(endereco);
	contato.setDataNascimento(dataNascimento);
	
	// salva o contato
	CadastraContatoDAO dao = new CadastraContatoDAO();
	dao.adiciona(contato);
	
	// imprime o nome do contato que foi adicionado
	out.println("<html>");
	out.println("<head>");
	out.println("<title>Usuário: " + contato.getNome() + " cadastrado</title>");
	out.println("<head>");
	out.println("<body>");
	out.println("Contato: " + contato.getNome() + " adicionado com sucesso!!!");
	out.println("</body>");
	out.println("</html>");
			
}	

}[/code]

Muito grato,

Daniel

Apresenta erro por que você declarou o método errado uai:
void doPost(HttpServletRequest req, HttpServletResponse res);

Isso aí eh um método abstrato. O.o Ou apaga ou cria uma implementação aí.

e quais são os erros?

att,

e quais são os erros?

att,[/quote]
Um dos erros é o método declarado sem implementação:

void doPost(HttpServletRequest req, HttpServletResponse res); 

Nisso ele vai pode dar um monte de erro maluco.

e quais são os erros?

att,[/quote]
Um dos erros é o método declarado sem implementação:

void doPost(HttpServletRequest req, HttpServletResponse res); 

Nisso ele vai pode dar um monte de erro maluco.[/quote]

ops, então, na vdd eu tinha planejado forçar nosso amigo ate encontrar isso. heheh.

valeu msm assim.

att,

desculpe pessoal.

Realmente isso é um simplorio abstract method, no caso ignorem o “;” e adicionem {}

olhem um trecho da apostila:

Podemos também definir o método para POST e, dessa forma, os dados são passados dentro do corpo do
protocolo HTTP, sem aparecer na URL que é mostrada no navegador.

Podemos, além de definir no formulário como os dados serão passados, também definir quais métodos
HTTP nossa servlet aceitará.

O método service aceita todos os métodos HTTP, portanto, tanto o método GET quanto o POST. Para
especificarmos como trataremos cada método, temos que escrever os métodos doGet e/ou doPost na nossa
servlet:

void doGet(HttpServletRequest req, HttpServletResponse res);
void doPost(HttpServletRequest req, HttpServletResponse res);

alguma sugestão?