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)
17
respostas

Não localiza a minha busca.

No exercício 3 quando coloco o endereço na web http://localhost:8080/gerenciador/busca ee não acha o arquivo de busca, mas se estiver ate o gerenciador funciona normalmente. O que pode ser isso?

17 respostas

Poste o seu codigo, por favor.

package br.com.alura.gerenciados.web;

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(urlPatterns = "/busca")
public class BuscaEmpresas extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        PrintWriter writer = resp.getWriter();
        writer.println("<html>");
        writer.println("<body>");
        writer.println("Resultado da busca:<br/>");
        writer.println("</body>");
        writer.println("</html>");

    }
}

Você tem que usar o @WebServlet(urlPatterns = "/busca") em cima da definição da classe. Ex:

@WebServlet(urlPatterns="/busca")
public class BuscaEmpresa extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        String filtro = req.getParameter("filtro");
        EmpresaDAO dao = new EmpresaDAO();
        Collection<Empresa> empresas = dao.buscaPorSimilaridade(filtro);

        PrintWriter writer = resp.getWriter();
        writer.println("<html>");
        writer.println("<body>");
        writer.println("Resultado da busca:<br/>");
        writer.println("<ul>");
        for (Empresa empresa : empresas) {
            writer.println("<li>" + empresa.getNome() +  "</li>");
        }
        writer.println("</ul>");
        writer.println("</body>");
        writer.println("</html>");
    }

}

Olá poste o erro para tentarmos identificar o problema.

Mas adiantando algo que eu desconfie Você disse que não encontra a pagina http://localhost:8080/gerenciador/busca ee

Tente colocar dessa forma http://localhost:8080/gerenciador/busca?filtro=ee

Em todo caso se não for esse o problema post aqui a mensagem de erro do browser e se possível a mensagem que está no console do eclipse.

Fernanda, você restartou o servidor ?

Era da funcionar verificou se o deploy foi feito corretamente ? Tente abrir a pasta raiz onde o tomcat está instalado vá em "SuaPastaRaizDoTomcat\webapps\gerenciador" procuro por seu servlet nas pastas filhas e veja se o código está atualizado.

O meu acontece a mesma coisa. Se eu abro o localhost:8080/gerenciador vai normalmente, mas se eu colocar o /busca na frente do gerenciador, não encontra. Já reiniciei o servidor e não consigo fazer funcionar.

Olá Vinicius, poste seu código, e se possível copie o resultado que aparece na página, por exemplo: Status 500, ou 404.

Assim vai ficar mais facil para nós ajudarmos vocês.

Abraço.

Reinicializa o servidor que vai funcionar. Aconteceu comigo também.

Isso ai, não fique com dúvidas;

Verifique o jre do servidor, o ideal é que esteja jdk1.7... a aplicação foi executada com java7 se seu servidor estiver com uma versão diferente não ira executar. Para verficar a JRE do servidor vc clica na aba Servers então irá aparecer o servidor, clique duas vezes e irá aparecer uma tela Overview, em General Information clique no link Runtime Environment.

Se estiver usando o eclipse na plataforma windows, no arquivo html em propriedades marque a opção read-only, isso pode resolver tbm!

Vá no build path de sua aplicação, deve ter 2 JREs ali. Exclua uma delas e deixe somente o 1.7 ou 1.8

Caro amigo o nome do seu pacote esta com o nome de gerenciados e nao (gerenciador )provavelmente você esta chamando o seu projeto errado na url; se não estiver chamando o nome do projeto errado veja se você incluiu ele no tomcat caso os itens acima estiverem certos tente remover o urlpatterns deixando so a busca no caso ficara @WebService("/busca")

Pra mim, ainda fica aparecendo a mensagem abaixo:

HTTP ERROR 404

Problem accessing /gerenciador/busca. Reason:

Not Found

Se eu acessar até /gerenciador/ aí da certo: Bem vindo ao nosso gerenciador de empresas!

Já tentei de várias coisas. Olhei as respostas dos outros colegas pra ver se me ajudava também, mas nada adiantou.

Segue o meu código:

package br.com.alura.gerenciador.web;

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(urlPatterns="/busca")
public class BuscaEmpresa extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {

        PrintWriter writer = resp.getWriter();
        writer.println("<html><body>");
        writer.println("Resultado da busca:<br/>");
        writer.println("</body></html>");

    }

}

Parece algo com NO JSP Support for /gerenciador, mas não sei como solucionar. Também já removi e adicionei a JRE -> JRE System Library [jre1.8.0_51] , .... e nada.

Segue também os logs do console (no Restart):

Starting preview server on port 8080

Modules:
  gerenciador (/gerenciador)

2015-10-01 01:12:15.933:INFO::main: Logging initialized @696ms
2015-10-01 01:12:16.259:INFO:oejs.Server:main: jetty-9.2.9.v20150224
2015-10-01 01:12:16.861:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /gerenciador, did not find org.eclipse.jetty.jsp.JettyJspServlet
2015-10-01 01:12:16.935:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1a407d53{/gerenciador,file:/C:/Users/User/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/gerenciador/,AVAILABLE}{C:/Users/User/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/gerenciador}
2015-10-01 01:12:17.102:INFO:oejs.ServerConnector:main: Started ServerConnector@51081592{HTTP/1.1}{0.0.0.0:8080}
2015-10-01 01:12:17.104:INFO:oejs.Server:main: Started @1872ms

Alguém aí pode me dar um help? Valeu!

solução!

Jefferson,

Provavelmente está faltando um jar no seu build path. Para avaliar JSPs, o Jetty utiliza o Jasper um projeto da Apache. Veja se este jar está no seu build path:

apache-jasper.jar

Abraço!

Olá Joviane e colegas, perdão pela demora no retorno.
Deu certo.
No meu caso era alguma incompatibilidade com a versão do Tomcat. Eu tentei utilizar o 
apache-tomcat-8.0.28 e ficava dando erro.
Eu troquei pelo apache-tomcat-7.0.65 e aí OK.

Obrigado pelas dicas!

Jeff