RequestDispatcher
A API Servlet inclui a interface javax.servlet.RequestDispatcher com a finalidade de encaminhar a requisição atual para outro recurso, como um outro servlet.
Exemplo:
Um usuário solicita o histórico das compras do mês, ao receber a requisição o Servlet (HistoricoServlet) verifica que o usuário não esta logado no sistema, o HistoricoServlet então encaminhar a requisição para outro servlet, chamado LoginServlet, que tem a finalidade de gerar o formulário de autenticação.
A interface javax.servlet.RequestDispatcher possui dois métodos que permitem esta interação, são:
- void forward (ServletRequest request, ServletResponse response): Permite o servlet processar a requisição parcialmente e encaminhar a requisição para outro servlet para gerar a resposta final. Também pode ser usado para encaminhar a requisição para recursos como JSP ou HTML. Se for chamado depois que a resposta estiver sido comitada será lançada uma IllegalStateException.
- void include (ServletRequest request, ServletResponse response): Permite que o conteudo de outro recurso processe temporariamente a requisição atual. O recurso incluido não pode setar headers (cabeçalhos) ou status code (código de estatus) para a resposta, tentativas de setar serão ignoradas.
Parece uma boa solução, mas como conseguir um RequestDispatcher? Simples: Ambos javax.servlet.ServletContext e javax.servlet.ServletRequest possuem o método public RequestDispatcher getRequestDispatcher(String path) que pode ser utilizado para recuperá-lo.
Existe uma pequena diferença em usar o getRequestDispatcher no ServletContext e no ServletRequest. No ServletContext não é possível utilizar o caminho relativo para um recurso, o caminho deve iniciar com “/”. No ServletRequest é possível utilizar caminhos relativos, por exemplo ServletRequest.getRequestDispatcher(../paginas/index.html).
Tags: JEE, RequestDispatcher, resquest, Servlet
You can comment below, or link to this permanent URL from your own site.