Filter
Filter (요청 전·후처리 필터)
들어오는 요청을 전처리(pre-process)하고 후처리(post-process)하는 데 사용되는 추상 클래스입니다. 전처리는 애플리케이션의 교환 핸들러가 호출되기 전에, 후처리는 교환 핸들러가 반환된 후에 일어나요. 필터들은 체인으로 구성되며 HttpContext 인스턴스에 연결됩니다.
본문
HTTP 서버(com.sun.net.httpserver)에서 요청을 처리하는 과정에 개입하려면 이 필터를 사용합니다. 체인 안의 각 필터는 자신의 doFilter(HttpExchange, Chain) 구현 안에서 다음 필터를 호출해요. 체인의 마지막 필터는 애플리케이션의 교환 핸들러를 호출합니다. 필터의 구조는 Filter.Chain(서버와 연결된 필터 체인)이라는 중첩 클래스로 표현됩니다.
정적 팩토리 메서드
beforeHandler(String description, Consumer<HttpExchange> operation)— 주어진 설명과 동작으로, 핸들러 호출 전에 수행되는 전처리 필터를 반환합니다.afterHandler(String description, Consumer<HttpExchange> operation)— 핸들러 호출 후에 수행되는 후처리 필터를 반환해요.adaptRequest(String description, UnaryOperator<Request> requestOperator)— 요청 상태를 검사하고 어쩌면 조정하는 전처리 필터를 반환합니다.
메서드
doFilter(HttpExchange exchange, Filter.Chain chain)— 주어진 교환을 전·후처리하도록 이 필터에 요청합니다. 필터는 요청 헤더를 검사하거나 수정할 수 있고, 적절한 필터 스트림을 만들어HttpExchange.setStreams(...)로 호출해 요청 본문이나 응답 본문을 필터링할 수 있으며, 교환에 속성 객체를 설정해 다른 필터나 교환 핸들러가 접근하게 할 수 있어요. 그리고 다음 두 가지 중 하나를 결정합니다.Filter.Chain.doFilter(HttpExchange)를 호출해 체인의 다음 필터를 호출하거나, 호출하지 않아 호출 체인을 종료하는 것입니다. 첫 번째 선택을 하면doFilter가 반환될 때 체인의 모든 후속 필터가 이미 호출된 상태라 응답 헤더를 검사·수정할 수 있어요. 두 번째 선택을 하면 이 필터가HttpExchange를 사용해 적절한 응답을 직접 보내야 합니다. 어떤 필터 모듈이든IOException을 던질 수 있으며, 잡았다면 반드시 다시 던져야 합니다.exchange나chain이null이면NullPointerException이 발생합니다.
이렇게 필터는 요청·응답을 가로채어 로깅, 인증, 압축 같은 횡단 관심사를 교환 처리에서 분리해 적용할 수 있게 해 줍니다. HttpContext에 여러 필터를 이어 붙여 복잡한 처리 파이프라인을 구성하는 것도 가능해요.
description()— 이 필터에 대한 짧은 설명을 반환합니다.