PR CENTER

뉴스룸     |     료실

mobile background

PR CENTER

Java Filter와 Spring Filter

관리자
2024-10-28
조회수 177

□ Filter 란?

    - HTTP 요청과 응답을 가로채고 수정할 수 있는 메커니즘을 제공하는 구성 요소

    - URL 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있다.

    - javax.servlet.Filter 인터페이스를 구현한 클래스이다.


▷ 사용 목적

   - 요청과 응답을 동적으로 가로채서 해당 정보를 변환하거나 사용한다.

   - 주로 요청/응답 변형, 인증 및 권한 부여, 로깅 및 감시를 목적으로 사용한다.


□ Filter 동작

1. Filter 동작 순서

- 요청: 여러 필터가 체인 형태로 연결되어 각각의 필터가 순서대로 요청을 처리

- 처리: 체인의 끝에 도달하면 최종적으로 서블릿에게 제어를 전달

- 응답: 역순으로 필터를 거쳐 클라이언트에게 전달


2. 전체 동작 순서

a. 클라이언트 요청이 웹 애플리케이션에 도달

b. 필터 체인에 정의된 필터들이 순차적으로 요청을 (전)처리

c. 최종적으로 서블릿이나 JSP가 요청을 처리

d. 응답이 필터 체인을 통해 클라이언트로 전달

e. 각 필터가 응답을 후처리


□ Filter 생성 및 설정 방법

1. Filter 생성하기

- `javax.servlet.Filter` : Java Servlet API의 일부로, 웹 애플리케이션에서 들어오는 요청과 해당 응답을 가로채고 

   조작하는 데 사용되는 인터페이스

import javax.servlet.Filter;

...

public class JinnyFilter implements Filter {

             // init , doFilter , destroy 메소드 구현

}


- init , doFilter , destroy 메소드

@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");

// ex) request 가공


// 다음 필터 또는 서블릿으로 요청 전달

chain.doFilter(request, response);


// 응답 처리 후 작업

System.out.println("Response sent");

// ex) return or response 처리

}


@Override

public void destroy() {

    // 필터 종료 작업 (자원 반환)

}


2. Filter 설정

      - FilterConfig : 서블릿 필터의 설정과 초기화 정보를 제공하는 인터페이스

    a. @Configuration + FilterRegistrationBean : 필터의 실행 순서와 URL 패턴을 쉽게 지정할 수 있다.

@Configuration

public class FilterConfig {

@Bean

public FilterRegistrationBean<Filter> logFilter() {

FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();

bean.setFilter(new JinnyFilter());

bean.setOrder(1);

bean.addUrlPatterns("/*");

return bean;

}

}

// 어노테이션 없음

public class JinnyFilter implements Filter {

...

}


    b. @Component + [@Order(n) … ] : 필터 클래스를 Spring의 관리 하에 두고, 필요하다면 @Order 어노테이션을 사용하여 

        필터의 순서를 지정할 수 있다.

       -  URL 패턴을 세부적으로 제어하기는 어렵지만, 간단한 필터 등록에 유용하다.

@Component

@Order(1)

public class JinnyFilter implements Filter {

...

}


    c. @WebFilter + @ServletComponentScan

      - URL 패턴을 쉽게 설정할 수 있으며, Spring Boot 애플리케이션 시작 시 자동으로 필터를 스캔하고 등록한다.

@WebFilter(urlPatterns= "/me/*")

public class JinnyFilter implements Filter {

...

}

@ServletComponentScan

@SpringBootApplication

public class FilterApplication {

     public static void main(String[] args) {

           SpringApplication.run(SpringCoreMvc26Application.class, args);

     }

}


□ Spring Filter

- Spring은 Java Servlet API의 필터 기능을 확장하여 다양한 추가 필터들을 제공


□ Spring Security Filter

    - Spring Security는 여러 개의 보안 필터로 구성된 필터 체인을 제공

- 정의: 특정 보안 작업을 수행하는 `javax.servlet.Filter` 인터페이스를 구현했으며,

       Spring Security에서 제공하는 보안 필터

    - 역할: HTTP 요청과 응답을 가로채고, 인증, 인가, 로깅, CSRF 보호 등의 보안 작업을 수행한다.

                                                                                                                                                                                      ⭐발표자 : 이현진님




0 0

페이지 바로가기

@2024 K2SYSTEMS. All rights reserved.

HOME       |       ABOUT US       |       SOLUTION       |       PR CENTER       |       CONTACT       |       인재채용       |       kakao i cloud 고객센터  

@2024 K2SYSTEMS. All rights reserved.