본문 바로가기

Dev-/Spring

스프링 Filter 만들기

스프링 Filter 사용법에 대해 간단히 알아보겠습니다.

간단하게 매 요청 URL을 이클립스 콘솔창에 찍어주는 필터를 만들어 볼게요.



우선 기본 인터페이스인 Filter구현한 커스텀 필터 클래스를 하나 만들어 줍니다.


[PrintURLFilter.java]



Filter 인터페이스의 메서드는 아래와 같습니다.


  • init(): 필터 인스턴스 초기화
  • doFilter(): 전/후 처리
  • destroy(): 필터 인스턴스 종료

위 코드에서 


1. init() 보시면

getInitParameter()파라미터를 사용하는 것을 보실 수 있는데


아래에서 보실 [web.xml]에서 

필터를 등록할 때 파라미터를 설정해주었는데, 그것을 받아 사용한 것입니다.


사실... 이게 굳이 무슨 의미가 있을까 생각을 해 봤는데..


[web.xml] 파일만 수정해 주는 것만으로도 

어플리케이션 전체에 적용이 되고, 이미 컴파일 된 클래스에서도 따로 재컴파일 없이 바로 적용가능하다는 장점이 있을 것 같습니다.


2. 그리고 doFilter()chain.doFilter();는 해당 필터의 처리(doFilter())결과를 다음 처리로 넘겨주는 역할을 합니다.

만약에 다음 필터있다면 다음 필터없다면 서블릿으로 전해주겠죠.


따라서 chain.doFilter();를 해주지 않으면 현재 필터링 결과를 확인할 수가 없습니다.




아래는 [web.xml] 입니다.


[web.xml]


필터를 등록해주고, URL 매핑처리를 해줍니다.

보시면 위에서 말씀드린 것처럼 <init-param>으로 초기 파라미터를 설정해준 것을 보실 수 있습니다.



스프링 프로젝트를 실행하고, 여러 URL로 요청을 해봤습니다.



앱이 실행될 때, init()으로 필터 인스턴스가 생겼고, 초기 파라미터를 잘 읽어왔음을 확인할 수 있습니다.

그리고, 여러 요청을 했을 때 필터가 실행된 것도 확인할 수 있습니다.