스프링 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()으로 필터 인스턴스가 생겼고, 초기 파라미터를 잘 읽어왔음을 확인할 수 있습니다.
그리고, 여러 요청을 했을 때 필터가 실행된 것도 확인할 수 있습니다.
'Dev- > Spring' 카테고리의 다른 글
Spring Security 관련 에러 해결법 (0) | 2018.08.15 |
---|---|
아주 기초적인 Spring Security 사용법 (1) (0) | 2018.08.15 |
Filter, Interceptor, AOP (0) | 2018.08.08 |
'좋아요' 기능 추가하기 (0) | 2018.08.02 |
오픈 API 사용하기 - 네이버 아이디로 로그인(로컬) (3) | 2018.07.25 |