Fazer um forward usando servlets

3 respostas
W

Olá Pessoal, estou aqui com uma dúvida…tenho um servlet e preciso, depois de algumas validações, fazer um forward para uma página jsp. Em páginas jsp sei que posso fazer <jsp:forward page=“URL”/>, mas em servlet, como chamo uma outra página ? Preciso também que essa página chamada recupere valores de atributos. Eu consigo setar o valor desses atributos no servlet e depois recuperá-los na página chamada por esse mesmo servlet , ou tenho que setar esses valore na pagina que antecede a chamado do servlet ? Espero que eu tenha sido claro…e conto com a ajuda de vocês…Obrigado.

3 Respostas

douglasfs

Aí vai uma noção para você
Na servlet :

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;
......
     RequestDispatcher nextView = null;
try &#123;
  //faz de conta que o meumetodo caiu numa exception
   meumetodo&#40;&#41;;
&#125;
catch&#40;Exception e&#41; &#123;
     HttpSession sessao = request.getSession&#40;true&#41;;
     sessao.setAttribute&#40;"erro",e&#41;;
     nextView = request.getRequestDispatcher&#40;"/Error.jsp"&#41;;
     nextView.forward&#40;request,response&#41;;
&#125;

no Error.jsp

&lt;%
    Exception excecao = &#40;Exception&#41; session.getAttribute&#40;"erro"&#41;;
    if &#40;excecao == null&#41;
        out.println&#40;"Não existe erros"&#41;;
    else &#123;       
        out.println&#40;excecao.toString&#40;&#41;&#41;;
        StringWriter sw = new StringWriter&#40;&#41;;
        PrintWriter pw = new PrintWriter&#40;sw&#41;;
        excecao.printStackTrace&#40;pw&#41;;
        out.print&#40;sw&#41;;
        sw.close&#40;&#41;;
        pw.close&#40;&#41;;
        // remove o atributo da sessao
        session.removeAttribute&#40;"erro"&#41;;
    &#125;
%&gt;
urubatan

a partir de um servlet, para fazer um forward ou um include como o de uma JSP (não é para mandar o browser para outra pagina, e sim dizer para outra pagina ou servlet se sua aplicação continuar o processamento, exatamente como no <jsp:forward /> sitado)

você utiliza este codigo :-)

RequestDispatcher d= request.getRequestDispatcher&#40;&quot;caminhorelativo para uma jsp/servlet/...&quot;&#41;;
		d.forward&#40;request,response&#41;;

você pode obter também um RequestDispatcher a partir do ServletContext, a unica diferença entre os dois request dispatchers é que o obtido no request, aceita caminhos relativos ao servlet atual, o obtido no ServletContext não, aceita apenas caminhos absulutos (iniciados por "/" )

W

Valeu pela ajuda…vou tentar fazer aqui…obrigado

Criado 11 de maio de 2003
Ultima resposta 12 de mai. de 2003
Respostas 3
Participantes 3