java에서 filter는 요청과 응답사이에 작업을 수행하여 데이터 변형, 보안, 로깅 등 전체적인 관리가 필요한 기능들을 제공해서 특정 조건에 맞는 요소들을 걸러내는기능이다.
@WebFilter 어노테이션으로 필터를 정의하고 구성할 수 있다.
주요 속성으로 urlpattern, value, dispatcherType등이 있다.
@WebFilter(urlPattern = "/test/*")
public class Test implements Filter {
public void doFilter(ServletRequest request ,ServletResponse response, FilterChain chain){
chain.doFilter(request, response);
}
}
/test 를 루트에 둔url에대해서 씌우는 filter이다.
당연히, 여러개의 filter도 걸 수 있다. 필요할떄 적절한 필터를 적용해 웹 어플리케이션의 기능을 제어할 수 있다.
필터를 여러개 적용했을때, 적용되는 순서를 설정할 수 있는 속성은 없지만, web.xml에 <filter-mapping>태그로 순서를 정할 수 있다.
물론, 필터 각각이 서로에게 의존하지않도록 설계하는 것이 가장 바람직하다고 생각한다.
이외에도 web.xml에 filter의 이름을 적용하는것과 ,초기 파라미터를 설정하는 방법도 있다.
프로젝트할때 로그인 검증, 타입 검증, 욕설 검열 등등에 필터가 사용되었던 기억이 난다.