Fala pessoal, tudo bom?
Gostaria de saber como faço para redirecionar um jsp, por exemplo:
O cara efetua o login e entra no sistema, a servlet dispacha ele e a session para uma página (protegida pelo login), nela eu recupero a session e exibo a página, agora se ele acessar diretamente a página protegida, ele vai recuperar uma session que não existe, como faço para não exibir essa página a ele? Entenderam?
Algo assim, fez login, session logado = logou
Ai ele abre o jsp e verifica se a session logado = logou
Se não for, quero que ele vá para outro lugar, saia dessa jsp sem ver o conteudo protegido.
Pesquise por Filters.
Eu fiz esse filter para fazer esse controle pra mim.
public class FilterSessionRequest implements Filter {
private FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
public void doFilter( ServletRequest request, ServletResponse response,
FilterChain chain )
throws IOException, ServletException {
HttpServletRequest rq = (HttpServletRequest)request;
HttpSession session = rq.getSession( false );
HttpServletResponse rp = (HttpServletResponse)response;
if( session == null ) {
rp.sendRedirect( rq.getContextPath() + "/aviso.html" );
} else {
chain.doFilter(request, response);
}
}
}
Meu web.xml:
<filter>
<filter-name>FilterSession</filter-name>
<filter-class>filters.FilterSessionRequest</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterSession</filter-name>
<servlet-name>MeuServlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>MeuServlet</servlet-name>
<servlet-class>servlets.MeuServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MeuServlet</servlet-name>
<url-pattern>/MeuServlet</url-pattern>
</servlet-mapping>
Sempre qd acesso o servlet MeuServlet ele passa pelo filter.
Aqui estou testando se existe a sessão, no seu caso vc vai testar se o usuário está logado, ou seja, um atributo da sessão.
falows!
– EDITADO –
Já descobri o meu erro, tava digitando response.sendRecirect ao inves de redirect… hehehehe
valeu mesmo assim, ficou daora seu filtro…
Sim, para casos onde se usa Servlet.
Mas imagina o seguinte
Tenho uma página que lista todas as transações diarias de uma empresa.
O gerente loga via um jsp, esse jsp passa o POST para o doPost() do servlet, ele verifica, grava a session e retransmite para esse gerente a página transacoes.jsp, nesta pagina verifico a session e libero o acesso.
Agora imagina que um usuário comum da empresa acesse na mão o transacoes.jsp, ele não tem session, não estará logado, não queria fazer <% if %> <html></html> <% else %> <html> </html> que fica muito feio, queria dar um redirect para a pagina de login. Deu para entender?
Use
response.sendRedirect("outraPagina.jsp");
Rafael
[quote=Igor_Barros]Sim, para casos onde se usa Servlet.
Mas imagina o seguinte
Tenho uma página que lista todas as transações diarias de uma empresa.
O gerente loga via um jsp, esse jsp passa o POST para o doPost() do servlet, ele verifica, grava a session e retransmite para esse gerente a página transacoes.jsp, nesta pagina verifico a session e libero o acesso.
Agora imagina que um usuário comum da empresa acesse na mão o transacoes.jsp, ele não tem session, não estará logado, não queria fazer <% if %> <html></html> <% else %> <html> </html> que fica muito feio, queria dar um redirect para a pagina de login. Deu para entender?[/quote]
Entendo! Filtros tb filtram JSP. Antes de alguém acessar uma página sua vc pode passar por esse filtro.