여기서 클라이언트는 객체로 표현하면 일반적으로 ServletRequest 라 볼 수 있고 서버의 응답은 ServletResponse 로 볼 수 있다. 더 구체적으로는 우리가 웹에서 보통 작업한다면 HttpServletRequest, HttpServletResponse 로 표현할 수 있다. 그런데 이 ServletFilter 라는 이 클래스가 이런 ServletRequest 나 ServletResponse 에 대해 가공 및 검사할 수 있다. 따라서 ServletFilter 는 클라이언트 요청이 서블릿에 도달하기 전이나 서블릿이 응답을 클라이언트에게 보내기 전에 특정 작업을 수행할 수 있다. 즉, 필터링을 하는 것. 서블릿의 수행 전 또는 수행 후에 그 지점에서 특정 작업을 필터링 해 수행할 수 있다는 의미.
따라서 이 ServletFilter 는 톰캣 등과 같은 서블릿 컨테이너 (WAS) 에서 생성되고 실행되고 종료된다.

그림을 보면 클라이언트에 요청이 되어 여러 개의 필터들이 있는데 우리는 이걸 필터체인이라 표현한다. 여러 개의 필터들이 체인 식으로 묶여 있기 때문. 그리고 이 필터들의 모든 작업이 끝나게 되면 그때 서블릿으로 요청이 전달된다. 이걸 구조로 WAS 는 실행하고 있다. 물론 필터는 optional 이다. 생성하지 않아도 되고 해도 된다. 하면 필터를 거쳐 가고 아니면 바로 서블릿으로 가는 것.
Filter 코드를 살펴보자. Filter 인터페이스가 있고 이 안에 init , doFilter , destory 라는 3개의 메소드가 있다. init 과 destory 는 생성 시 초기화 한 번, 종료 시 실행 한 번 되고 doFilter 는 요청에 대해 계속 처리하는 메소드가 된다. 그래서 chain.doFilter 이 라인을 중심으로 이전에는 서비스로 가기 전에 요청 처리 전 수행할 작업을 기술할 수 있고, 이후는 post-processing 으로 응답 처리 후에 수행할 작업(클라이언트에 직접 응답 가기 직전)을 기술하여 필터를 활용할 수 있다. 필터는 기본적으로 WAS 에서 생성되고 실행되고 종료된다.
아까 살펴본 FilterChain 이고 이 FilterChain 은 서블릿 컨테이너 (WAS) 에서 생성되고 수행되고 종료된다. 그리고 또 하나의 컨테이너인 스프링 IoC 컨테이너가 있다. 스프링 시큐리티는 필터 기반으로 요청을 처리하고 수행한다 언급했었다. 모든게 필터 기반으로 움직인다. 이 필터는 원래는 WAS, 즉 서블릿 컨테이너에서 생성되고 실행되고 종료된다. 스프링 컨테이너와는 사실 상관이 없다. 이 필터에서는 스프링 기능을 사용할 수 없다. 가장 대표적으로 DI 기능이나 AOP 기능과 같은 기능들을 일반적인 필터에서는 사용이 불가하다. 그런데 스프링 시큐리티는 이 필터 기반으로 지금 설계하여 스프링 시큐리티의 기능을 동작하고자 했다. 그런데 필터에는 DI 기능이나 AOP 기능을 사용할 수 없다. 그래서 이런 DelegatingFilterProxy 를 통해 스프링에서도 필터라는 타입의 클래스들을 빈으로 생성해 필터의 기능 뿐만 아니라 DI 와 AOP 와 같은 스프링이 가지고 있는 특별한 기능을 갖고 요청 및 처리를 하게끔 설계하고 싶은 것. 그렇게 하기 위해 탄생한 클래스가 DelegatingFilterProxy 이다.

그림의 DelegatingFilterProxy 는 서블릿 컨테이너에서 생성되는 필터로 스프링과는 관계가 없다. 그런데 이 DelegatingFilterProxy 를 스프링이 활용한다. 클라이언트 요청이 올 시 일반적 필터를 거쳐 DelegatingFilterProxy 에 도착하면 DelegatingFilterProxy 는 스프링 IoC 컨테이너에서 SpringSecurityFilterChain 이름으로 생성된 빈을 찾는다. 그 후 DelegatingFilterProxy 는 클라이언트가 요청한 Request 요청을 SpringSecurityFilterChain 에 위임한다. 그러면 필터 기반으로 스프링 시큐리티는 동작하며 요청을 위임받기에 당연히 스프링 빈은 필터를 구현해야 할 것. 필터인 동시에 요청을 처리하는 스프링 빈이 된다. 즉, 서블릿 컨테이너와 스프링 어플리케이션 컨텍스트 간의 연결고리 역할을 하는 필터가 이 필터고, 이 필터는 서블릿 필터의 기능을 수행하는 동시에 스프링 의존성 주입 및 빈 관리 기능과 연동되도록 설계된 필터라고 할 수 있다. 따라서 사실 DelegatingFilterProxy 는 자기가 하는 일은 없고 SpringSecurityFilterChain 이란 이름을 가지고 있는 빈에게 요청을 받아 위임하는 역할을 한다. 그렇게 되면 스프링 시큐리티의 입장에서는 필터의 역할도 하고 요청을 위임받았으므로 DI 나 AOP 같은 모든 스프링에 관련된 특수한 기능들도 다 수행할 수 있다. 이를 가능하게 하기 위해 탄생한 필터가 DelegatingFilterProxy 라 보면 된다. 이후 스프링 MVC 로 넘어갈 것.