Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
15
respostas

Duvidas na classe java - Criação Servlet

1º passo Estou criando um formulário em html que está ok

<html>
  <body>
    <form action="adicionaContato">
      Nome: <input type="text" name="nome" /><br />
      E-mail: <input type="text" name="email" /><br />
      Endereço: <input type="text" name="endereco" /><br />
      Data Nascimento: <input type="text" name="dataNascimento" /><br />

      <input type="submit" value="Gravar" />
    </form>
  </body>
</html>

2º passo Na hora de criar a classe está gerando um erro na linha - Contato contato = new Contato(); - o eclipse pede para criar uma nova classe para esse objeto.

public class AdicionaContatoServlet extends HttpServlet {
    protected void service(HttpServletRequest request,
            HttpServletResponse response)
            throws IOException, ServletException {

        PrintWriter out = response.getWriter();

        // pegando os parâmetros do request
        String nome = request.getParameter("nome");
        String endereco = request.getParameter("endereco");
        String email = request.getParameter("email");
        String dataEmTexto = request.getParameter("dataNascimento");
        Calendar dataNascimento = null;

        // fazendo a conversão da data
        try {
            Date date = new SimpleDateFormat("dd/MM/yyyy")
                    .parse(dataEmTexto);
            dataNascimento = Calendar.getInstance();
            dataNascimento.setTime(date);
        } catch (ParseException e) {
            out.println("Erro de conversão da data");
            return; //para a execução do método
        }

        // monta um objeto contato
        Contato contato = new Contato();
        contato.setNome(nome);
        contato.setEndereco(endereco);
        contato.setEmail(email);
        contato.setDataNascimento(dataNascimento);



        // imprime o nome do contato que foi adicionado
        out.println("<html>");
        out.println("<body>");
        out.println("Contato " + contato.getNome() + 
                " adicionado com sucesso");    
        out.println("</body>");
        out.println("</html>");
    }
}

Esse exercicio tambem pode ser encontrado no site: http://www.caelum.com.br/apostila-java-web/servlets/

15 respostas

Olá Jonathan, tudo bem ?

Você pode postar pra gente o erro que foi impresso pelo console?

Forte abraço!

No editor do eclipse não deixa criar o objeto.

Contato contato = new Contato();

dá erro na linha no objeto Contato.

Mas se mesmo assim tentar rodar aparece o erro no browser

root cause

java.lang.Error: Unresolved compilation problems: Contato cannot be resolved to a type Contato cannot be resolved to a type

Aula02.Adicionacontato.service(Adicionacontato.java:44) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Jonathan, esta classe está dentro do mesmo pacote? Se não estiver, você deve importa-lo.

Como disse o Sandro, sua classe Contato está no mesmo pacote da sua classe AdicionaContatoServlet ? Caso não esteja, você vai precisar importa-la na classe AdicionaContatoServlet.

import pacote.Contato;
public class AdicionaContatoServlet {

Beleza? Abraços.

Esse objeto está dentro da classe AdicionaContatoServlet.

Por isso não importei.

A estrutura do código está como mostra no 1º tópico.

Eu tentei criar uma classe fora chamado de Contato e importar mais mesmo assim o erro de linha vermelha persiste nesse objeto.

Coloque a mensagem que aparece na aba Problems do Eclipse, está meio estranho isso aí.

No console Problems aparece

DescriptionContato cannot be resolved to a type

Resource Adicionacontato.java

Path /Aula02/src/Aula02

Location line 49

Type Java Problem

Contato cannot be resolved to a type Adicionacontato.java /Aula02/src/Aula02 line 49 Java Problem

Estava modificando aqui o código para tentar solucionar e quando fui rodar a aplicação está aparecendo a mensagem agora de aviso.

Server Tomcat v7.0 Server at localhost failed to start.

Já tentei reiniciar a maquina e ainda permanece o problema

verifique se existe um arquivo chamado .snap localizado na pasta .metadata.plugins\org.eclipse.core.resources do diretório da workspace e delete ele. Isso deve resolver.

Além desse erro citado mais acima, o Eclipse aponta algum outro erro ou aviso? Coloque o código completo da classe contato que você está usando, com os includes e tudo. O que parece que está ocorrendo é que o Eclipse não está tendo acesso a classe. Tente dar um Clean no projeto e recompilar. É o que eu faço no Visual Studio .NET quando ele faz gracinhas; como as tecnologias são semelhantes, pode ser que resolva.

Pessoal alguem conseguiu realizar essa atividade desse exercicio ?

Se possivel pode enviar o projeto para o meu email e estudar, pois estou tentando e não consigo solucionar esses erros que aparecem desse projeto e certificar se é de configuração ou programação.

meu email é ti_jonathan@hotmail.com - jonathan.barros@am.senai.br

grato a todos

solução!

Jonathan, vamos fazer o seguinte, mande o seu código fonte da forma está para o meu e-mail slvaldo@ig.com.br, pois será mais fácil para ver onde você pode estar errando (não que eu entenda muito, mas duas cabeças pensando é melhor que uma, né?). Pela minha experiência em programação em outras linguagens, os erros em que a gente perde mais tempo são aqueles erros mais bobos, naqueles conceitos que a gente acha que nunca iria errar (já caí nessa muitas vezes nesses 20 anos de programação...). Abraço, Sandro

Caros amigos, muito obrigado pelo suporte disponibilizado, desinstalei o tomcat e configurei a pasta. depois criei uma classe separa para chamar o objeto instanciado utilizando os metodos get e set.

Fico muito grato pela atenção abraços.