Listener와 Filter는 Java 웹 애플리케이션에서 각각 다른 역할을 합니다. 이 둘은 요청과 응답 흐름에 개입할 수 있지만, 적용되는 방식과 목적이 다릅니다. 아래에서 두 가지의 차이점을 정리해 보겠습니다.
1. Listener
Listener는 애플리케이션의 생명주기 및 특정 이벤트를 모니터링하고 처리하는 데 사용됩니다.
특징:
- 목적: 웹 애플리케이션의 상태나 이벤트(요청, 세션 생성/종료 등)를 감지하고 필요한 작업 수행.
- 적용 범위: 전체 애플리케이션의 특정 이벤트 감지.
- 주요 인터페이스:
- ServletContextListener → 애플리케이션 시작/종료 이벤트 처리.
- HttpSessionListener → 세션 생성/소멸 이벤트 처리.
- ServletRequestListener → 요청 생성/소멸 이벤트 처리.
동작 방식:
- Listener는 이벤트 기반으로 작동하며, 특정 상태가 발생했을 때 자동으로 호출됩니다.
- 예를 들어, HttpSessionListener는 세션이 생성될 때 자동으로 sessionCreated() 메서드를 호출합니다.
장점:
- 애플리케이션의 상태와 생명주기 관리에 유용.
- 특정 상태 발생 시 로직을 자동으로 실행 가능.
2. Filter
Filter는 HTTP 요청과 응답 흐름에 개입하여 데이터를 가공하거나 처리하는 데 사용됩니다.
특징:
- 목적: 요청(Request) 및 응답(Response)을 수정하거나 전처리/후처리.
- 적용 범위: 특정 URL 패턴에 매핑되어 작동.
- 주요 인터페이스:
- javax.servlet.Filter
동작 방식:
- Filter는 클라이언트와 서블릿 간의 요청과 응답을 중간에서 가로채어 처리합니다.
- 주로 보안 검증, 로깅, 인코딩 설정, 캐싱 등의 작업에 사용됩니다.
장점:
- 요청 및 응답을 전처리하거나 후처리할 수 있어 유연한 작업 가능.
- 요청 흐름 제어 가능(예: 인증 실패 시 요청 차단).
주요 차이점
구분ListenerFilter역할 | 애플리케이션의 상태/이벤트 감지 | 요청과 응답 흐름 전/후 처리 |
적용 범위 | 애플리케이션 전반 (글로벌 이벤트) | 특정 URL 패턴 또는 모든 요청/응답 |
호출 시점 | 특정 이벤트 발생 시 (예: 세션 생성, 앱 시작) | 요청/응답 시 항상 실행 |
사용 목적 | 이벤트 기반 작업(로그 기록, 세션 관리 등) | 보안, 로깅, 요청 데이터 변환, 캐싱 등 처리 |
작동 방식 | 상태 변화에 반응 | 요청과 응답 데이터를 가로채어 처리 |
구현 인터페이스 | ServletContextListener, HttpSessionListener 등 | Filter |
예를 들어:
- Listener: 애플리케이션이 시작될 때 초기화 작업, 세션 생성 시 통계 기록.
- Filter: 로그인 요청을 가로채어 인증 여부 확인, 요청 데이터를 변환하거나 응답 데이터를 암호화.
'컴퓨터 지식' 카테고리의 다른 글
[Web] Request, Session, Aplication 등 적용 범위 (0) | 2024.12.03 |
---|---|
[Content-Type] Content-Type 종류 (1) | 2024.12.03 |
[파일]파일 시그니쳐(파일 헤더) (3) | 2024.11.20 |
[유니코드]CJK 한자 (1) | 2024.10.31 |
[IP] 교육자료 (0) | 2024.05.13 |