HTTP 요청 및 응답을 가로채고 조작할 수 있는 컴포넌트입니다. 이를 통해 특정 요청을 처리하기 전에, 혹은 응답을 클라이언트에게 보내기 전에 필요한 전처리 및 후처리를 수행할 수 있습니다
스프링에서 Filter는 주로 다음과 같은 목적으로 사용 된다.
인증 및 권한 부여(Authentication and Authorization)
사용자의 요청이 특정 리소스에 접근할 권한이 있는지 확인합니다.
로깅 및 감사(Logging and Auditing)
요청 및 응답에 대한 로깅을 수행하거나, 시스템에서 발생하는 이벤트를 감사하기 위해 사용됩니다.
데이터 압축(Data Compression)
응답 데이터를 압축하여 네트워크 대역폭을 절약합니다.
CORS 설정(Cross-Origin Resource Sharing)
다양한 출처에서 오는 요청을 허용하거나 제한하는 CORS 설정을 처리합니다.
입력 검증 및 정리(Input Validation and Sanitization)
요청 파라미터를 검증하고 필요한 경우 정리합니다.
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 필터 초기화 코드 (필요한 경우)
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 요청 처리 전 전처리 코드
System.out.println("Request received");
// 다음 필터로 요청을 전달하거나, 마지막 필터인 경우 서블릿으로 전달
chain.doFilter(request, response);
// 응답 처리 후 후처리 코드
System.out.println("Response sent");
}
@Override
public void destroy() {
// 필터 종료 코드 (필요한 경우)
}
}
내일부터는 팀 프로젝트가 시작 된다. 몰입도 있게 집중 해봐야겠다.