As funcionalidades das ações forward e include são bem semelhantes e por isso as vezes confunde! Motivado por isso e pela recente necessidade de alguns alunos meus, resolvi postar aqui um breve artigo sobre as principais diferenças entre as duas ações.
O "forward" serve para transferir o controle para outro componente web (servlet/JSP). Você deve lembrar como ele funciona: redireciona seus objetos request e reponse para o recurso que você aponta no getRequestDispatcher.
//Redireciona para A.jsp
RequestDispatcher dispatcher = request.getRequestDispatcher("A.jsp");
dispatcher.forward(request, response);
Por isso ele só pode ser chamado uma vez pelo seu servlet, porque ele delega toda a responsabilidade da requisição para outro servlet ou JSP. Isto também significa que ele só pode ser redirecionado para um servlet/JSP por vez, nada mais!
Se você tentar executar qualquer método após o forward, terá uma exceção!
Já o "include" serve, como o próprio nome diz, para incluir recursos web na sua página atual (Objeto response). É no reponse que ele age principalmente, e também pode ser chamado quantas vezes você quiser.
Ex.:
RequestDispatcher dispatcher = request.getRequestDispatcher("A.jsp");
dispatcher.include(request, response);
dispatcher = request.getRequestDispatcher("B.jsp");
dispatcher.include(request, response);
Isso fará tanto a página A.jsp quanto a B.jsp serem incluídas na sua página de retorno para o usuário (response)!
Lembre-se: A ação include não redireciona, apenas inclui, por isso você pode chama-lá e continuar executando código logo após, porque ainda está no mesmo recurso web - no caso, no teu servlet!
Comentários
Postar um comentário