Método get do http sendo invocado automaticamente

3 respostas Resolvido
SilvairSoares

Bom dia pessoal, estou implementando o método get um servlet aqui com uma lógica muito simples.

Caso o usuário passe uma url no padrão: “…/entidades/id”, deverá ser aberto o formulário de edição já com a entidade correspondente à id digitada após a barra. Porém se o padrão da url for: “…/entidades” será carregada a lista de todas as entidades e aberta a página de listagem de entidades.

Já está tudo funcionando, porém com um problema. Após a execução da última linha está voltado para o início do método get, como se algo estivesse reinvocando o método get, então fica em loop infinito:

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

    String requestUri = req.getRequestURI();
    Long id = RegexUtil.matchId(requestUri);

    if (id != null) {
        // Informou um id
        Entidade entidade = entidadeService.getEntidadeById(id);

        if (entidade != null) {

            req.setAttribute("objEntidade", entidade);                
            req.getRequestDispatcher("paginas/cadastroentidades.jsp").forward(req, resp);
            // Após executar da linha acima, volta automaticamente para a primeira linha do método
        } else {
            resp.sendError(404, "Entidade não encontrada");
        }

    } else {

        List<Entidade> lstEntidades = entidadeService.getEntidades();

        req.setAttribute("lstEntidades", lstEntidades);            
        req.getRequestDispatcher("paginas/listaentidades.jsp").forward(req, resp);
        // Após executar da linha acima, volta automaticamente para a primeira linha do método
    }
}

Qualquer ajuda é bem vinda.

3 Respostas

rafaspimenta
Solucao aceita

Olá Silvair, eu estou iniciando meus estudos em servlets, mas posso tentar te ajudar.

Me parece que está havendo uma chamada recursiva, ou seja, a url que você está passando para o getRequestDispatcher coincide com a da servlet.

Sendo assim, qual é a url da sua servlet? @WebServlet(urlPatterns = "??????")

SilvairSoares

Olá rafaspimenta, valeu pela dica.

A url da servlet é: @WebServlet("/entidades/*")

Lucas_Camara

Veja se há algo que esteja fazendo uma nova requisição dentro das JSP’s. Algum código que esteja chamando uma URL com /entidades/

Criado 5 de julho de 2016
Ultima resposta 5 de jul. de 2016
Respostas 3
Participantes 3