[Diary] Spring - Filter

Shaun.the.sheep·2025년 7월 19일

[Dairy] S.C.C TIL

목록 보기
11/22
post-thumbnail

들어가기 전...

모든 기능을 알 때에는 그 기능의 목적과 사용방법을 위주로 공부해야 하는 거 같다...

Filter

자세히 들어가기 전에 한번 예제 소스를 확인해보자


@Slf4j
public class CustomFilter implements Filter {
    @Override
    public void doFilter(
            ServletRequest request,
            ServletResponse response,
            FilterChain chain
    ) throws IOException, ServletException {

        // Filter에서 수행할 Logic
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String requestURI = httpRequest.getRequestURI();

        log.info("request URI={}", requestURI);
        // chain 이 없으면 Servlet을 바로 호출
        chain.doFilter(request, response);
    }
}



일단 먼저 위의 doFilter의 함수가 Filter를 상속받은 CutomFilter 클래스 내부에 있다.
그렇게 되면 당연히 상속 받은 Filter 내부의 함수를 Override를 하여 구현해야한다.
이 과정에서 검증과 인증 혹은 예외처리가 가능할 수 있는 것이다.

 HttpServletRequest httpRequest = (HttpServletRequest) request;

이부분을 확대해 보면 다운캐스팅으로 HttpServletRequest로 변경 후에 사용하게 된다.
이유는 기능의 차이 때문이다.
getRequestURI 이 함수 즉 URI를 받아오는 함수를 사용하기 위한 캐스팅이라고 한다.

그러면 이 함수를 이용하여 다음과 같은 함수를 만들 수 있다.

public boolean isProperAccess(String brURIType);

api를 호출하는 mapping된 URI가 몇 개 없으면 if를 사용해도 되지만
개수가 많아지게 되면 String으로 URI를 반환받아 값의 존재를 확인해도 가능하다.

0개의 댓글