Dúvida em uma parte do filtro

2 respostas
A

E ae pessoal blz

Então eu etudei sobre filtros e consegui desenvover uns teste e esta rodando legal, porém tem um comando que uso sei que funciona mas não sei exatamente como ele funciona. Vou posta o bloco onde esta comando:

package Filtro;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import javax.servlet.Filter;  
import javax.servlet.FilterChain;  
import javax.servlet.FilterConfig;  
import javax.servlet.ServletException;  
import javax.servlet.ServletRequest;  
import javax.servlet.ServletResponse;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  

/**
 *
 * @author alexandre
 * @version
 */
public class LoginFilter implements Filter
{
    public void init(FilterConfig config) throws ServletException 
    {  
           
    }  
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    
    private FilterConfig filterConfig = null;  
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
    throws ServletException, IOException 
    {
         HttpServletRequest req = (HttpServletRequest)request;  
         Login login = (Login)req.getSession().getAttribute("login");  
         if (login != null) 
         {  
             chain.doFilter(request, response);  
         }
         else 
         {  
             HttpServletResponse res = (HttpServletResponse)response;  
             res.sendRedirect(req.getContextPath() + "/index.jsp");  
         }  
    }
}

A parte que não entendo extamente como funciona é só essa linha:
chain.doFilter(request, response);
Sei que essa class acessa a sessão e pega os dados se login não for nulo ele permite o acesso, porém não entendi esse comando. Alguém poderia me explicar?
E desde já agradeço a força que recebi aqui enquanto estudava sobre filtros peguei bem a lógica e estou desenvolvendo.
Valeu

2 Respostas

L

O filtro sempre executa o que ele tem que executar antes (significa: pronto, já fiz o que queria fazer antes de vc acessar o recurso), chama o chain.doFilter (significa: vai, continua fazendo o que ia fazer) e depois executa mais alguma coisa (significa: vc já acessou o que queria mas eu quero filtrar mais alguma coisa).

Uma descrição mais técnica para o método seria: “Ele chama o próximo filtro da cadeia, ou se o filtro chamado for o último, invoca o recurso”. Se vc não chamar o próximo filtro da cadeia, vc barra o acesso ao recurso pois a requisição nunca vai chegar até ele.

qualquer coisa da uma olhada
http://java.sun.com/javaee/5/docs/api/javax/servlet/FilterChain.html

A

Valeu cara pela explicação e o link. Entendi o funcionamento

Criado 3 de dezembro de 2007
Ultima resposta 4 de dez. de 2007
Respostas 2
Participantes 2