[TIL] 31. Filter

김지수·2024년 6월 3일

TIL

목록 보기
31/53

Filter

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() {
        // 필터 종료 코드 (필요한 경우)
    }
}

오늘의 회고

내일부터는 팀 프로젝트가 시작 된다. 몰입도 있게 집중 해봐야겠다.

profile
서툴고 부족한 점이 많지만, 배우고 발전하며 성장하기 위해 노력하겠습니다.

0개의 댓글