Redirect em páginas jsp

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.

:smiley: