1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Redirecionamento com Servlet

Olá a todos, bom dia.

Estava estudando à apostila FJ21 da Caelum cujo projeto em servlet é o desenvolvimento de uma agenda.

Conseguir desenvolver todo o projeto. No entanto, tem algo que está me deixando intrigado que diz respeito a url retornada após uma operação de inserção, atualização e remoção.

Vejamos só, a minha classe ControllerServlet está como segue abaixo.

@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

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

        String parametro = req.getParameter("logica");
        String nomeDaClasse = "agenda.mvc.logica." + parametro;

        try {
            Class classe = Class.forName(nomeDaClasse);

            Logica logica = (Logica) classe.newInstance();
            String pagina = logica.executa(req, resp);

            RequestDispatcher rd = req.getRequestDispatcher(pagina).forward(req, resp);
        } catch (Exception e) {
            throw new ServletException("A lógica de negócios causou uma exceção", e);
        }
    }

}

A classe para adicionar e alterar contato está com o redirecionamento como que segue abaixo:

return "mvc?logica=ListaContatosLogic";

Já a classe para Listar os Contatos está como segue abaixo:

public class ListaContatosLogic implements Logica {

    @Override
    public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {

        Connection connection = (Connection) req.getAttribute("conexao");
        List<Contato> contatos = new ContatoDAO(connection).getLista();

        req.setAttribute("contatos", contatos);

        return "/WEB-INF/jsp/lista-contatos-jstl.jsp";
    }

}

Sempre que faço uma operação de inserção ou atualização invés de ser redirecionado para a url http://localhost:8080/agenda/mvc?logica=ListaContatosLogic sou redirecionado para a url http://localhost:8080/agenda/mvc.

Alguém sabe o que devo alterar pra alcançar o resultado desejado?

Desde já obrigado pela atenção e compreensão de todos. Abraços!

  • Os parâmetros aparecem na URL quando é usada requisição HTTP GET. Talvez os seus parâmetros "sumam" porque a requisição é POST. O parâmetro "logica" está sendo enviado, apesar de não estar aparecendo na barra de endereço?

    Guilherme Passero   11 de jan de 2016
  • Oi @Guilherme Passero, o parâmetro está sendo enviado com a seguinte "lógica" <input type="hidden" name="logica" value="AdicionaContatoLogic"> a mesma lógica é usada no formulário para alterar.

    jeovane.reges   11 de jan de 2016
  • Quando mando imprimir a variável pagina na classe ControllerServlet ao realizar um update é apresentada a seguinte saída: quando clico botão para alterar -> /WEB-INF/jsp/altera-contato-mvc.jsp ao confirmar à alteração -> mvc?logica=ListaContatosLogic, valor retornado pela classe ListaContatosLogic -> /WEB-INF/jsp/lista-contatos-jstl.jsp e a URL final é http://localhost:8080/agenda/mvc.

    jeovane.reges   11 de jan de 2016
  • E dentro da tag form há o atributo action="POST"?

    Guilherme Passero   11 de jan de 2016
  • Há sim. E no action tem o valor "mvc".

    jeovane.reges   11 de jan de 2016
Mostrar todos os 7 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java servlets eclipse ou faça a sua própria pergunta.