Solucionado (ver solução)
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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software