스프링 MVC 필터(Filter)

Yuno·2024년 8월 10일

JavaSpring

목록 보기
6/16

✏️스프링 MVC 필터(Filter)란?

필터는 서블릿 API의 일부분으로, 웹 애플리케이션으 요청 및 응답을 가로채서 처리할 수 있는 컴포넌트.
스프링 MVC의 Filter 는 HTTP 요청과 응답을 조작할 수 있으며, 보통 인증, 로깅, 인코딩 설정 등과 같은 작업을 수행

필터는 서블릿 컨테이너에서 관리되며, javax.servlet.Filter인터페이스를 구현하여 사용


📌 주요 메서드

doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

👉 필터가 요청을 처리하고, 체인의 다음 필터 또는 서블릿으로 요청을 전달

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.FilterException;
import javax.servlet.FilterRequest;
import javax.servlet.FilterResponse;
import javax.io.IOExeotion;

public class LoggingFilter 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 at " + System.currentTimeMillis());
    	chain.doFilter(request, response); // 다음 필터나 서블릿 호출
    	System.out.println("Response sent at " + System.currentTimeMillis());
    }
    
    @Override
    public void destroy() {
    	// 정리 코드
    }
}

👉 등록 방법 :

  • 필터는 web.xml 또는 자바 기반 설정으로 등록할 수 있음

자바 기반 설정 예시

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FilterConfig {

	@Bean
    public FilterRegistrationBean<LoggingFilter> loggingFilter() {
    	FilterRegistrationBean<LoggingFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new LoggingFilter());
        registrationBean.addUrlPatterns("/*"); // 필터를 적용할 URL 패턴 설정
        return registrationBean;
    }
}

🤔 필터 와 인터셉터의 차이점

  1. 범위 및 적용 위치
    • 필터 : 서블릿 API 기반으로, 서블릿 컨테이너에서 관리됨.
      요청과 응답을 가로채고 수정할 수 있으며, 주로 웹 애플리케이션의 보안, 로깅, 인코딩 등과 관련된 작업을 처리
    • 인터셉터 : 스프링 MVC 기반으로, 컨트롤러와 뷰 처리 사이에서 작업을 수행.
      요청을 컨트롤러로 전달하기 전, 컨트롤러의 처리 후, 뷰 렌더링 후의 작업을 수행
  2. 등록 방법
    • 필터 : 서블릿 API를 사용하여 등록하며, FilterRegistrationBean 을 통해 스프링에서 등록할 수도 있음.
    • 인터셉터 : 스프링 MVC의 WebMvcConfigurer 를 구현한 설정 클래스에서 등록
  3. 관리 위치
    • 필터 : 서블릿 컨테이너의 필터 체인에서 관리
    • 인터셉터 : 스프링MVC의 핸들러 매핑과 관련이 있음
profile
Hello World

0개의 댓글