내일배움캠프 28일차 TIL - Filter

2024. 5. 27. 23:08·⛺스파르타코딩클럽

240527

오늘의 학습 

    ●  1. Filter

    ●  2. 스프링 숙련 5주차 까지 수강 완료

 

Fiter

필터란 Web 애플리케이션에서 관리되는 영역으로 클라이언트로 부터 오는 요청과 응답에 대해 최초/최종 단계의

위치이며 이를 통해 요청과 응답의 정보를 변경하거나 부가적인 기능을 추가할 수 있다.

주로 범용적으로 처리해야 하는 작업들, 예를들면 로깅 및 보안 처리에 활용한다.

또한 인증, 인가와 관련된 로직들을 처리할 수도 있다.

필터를 사용하면 인증, 인가와 관련된 로직을 비즈니스 로직과 분리하여 관리할 수 있다는 장점이 있다.

Web Application Filter

필터는 한 개만 존재하는 것이 아닌 여러 개가 Chain 형식으로 묶여서 처리가 될 수도 있다.

 

 

Filter 사용 방법

Filter로 사용할 클래스에 Filter interface를 implements하게 되면 doFilter 메서드를 구현 할 수 있게 된다.

doFilter 메서드를 재정의 하여 사용할 수 있는데 해당 메서드 블록이 요청을 제일 먼저 받게 되고 수행을 하게 되면

DispatcherServlet으로 그제서야 넘기게 된다.

@Order(1)
public class TestFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
                         
    chain.doFilter(request, response);
}


1. ServletRequest request

해당 매개변수로는 request 요청으로부터 넘어온 값을 받아서 이용할 수 있고,

2. ServletResponse response

해당 매개변수로는 응답에 대한 값을 담아서 사용자에게 넘겨줄 수 있다.

3. FilterChain chain

해당 매개변수로는 FilterChain 클래스 내부의 doFilter() 메서드를 이용하여 다음 필터로 넘겨줄 수 있다.

 

Filter Chain

위의 예시 코드를 살펴보면 "chain.doFilter(request, response)" 한 줄을 볼 수 있는데 이 한 줄은 chain을 통해 다음 필터로

값을 넘겨 줄 수 있는 코드이다.

필터는 여러개가 존재할 수 있으며 필터를 통해 여러개의 선처리 작업을 진행하고 후처리 작업을 진행할 수 있게 된다.

( 참고로 주로 하는 작업은 JWT 인증 과정 등등이 있다. )

@Order(1)
public class TestFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
                         
    chain.doFilter(request, response);
}

@Order(2)
public class TestFilter2 implements Filter {
    @Override
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
                         
    chain.doFilter(request, response);
}

해당 코드를 보면 @Order(1) 이 존재하는데 이건 스프링 애플리케이션에서 빈의 순서를 지정하기 위해서 사용한다.

여기선 Filter의 순서를 나타내기 위해서 사용하였다.

@Order(1) 번이 먼저 수행이되고 chain.doFilter() 메서드를 통해 다음 필터로 넘겨질 때 @Order(2)번으로 넘겨진다.

 

# 오늘의 회고

Filter를 공부를 하면서 이해를 하기위해 자연스럽게 ServletContainer와 SpringContainer를 공부를 하게 되었고 ServletContainer와 SpringContainer에 대해 알게 되었고 서블릿과 스프링의 동작원리를 어느정도 파악을 하게 되었다.

JWT를 이용하면서 기본적인 Servlet Filter에 대해 알게 되어서 좋았다.

JPA에 대해서도 오늘은 학습을 하며 깨달은 부분이 있어서 좋았다. 오늘은 좀 뿌듯한 하루 였다.

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 30일차 TIL - JWT(Stateless)  (0) 2024.05.29
내일배움캠프 29일차 TIL - ExceptionHandler  (1) 2024.05.28
내일배움캠프 27일차 TIL - JWT  (1) 2024.05.24
내일배움캠프 26일차 TIL - JPA핵심 및 관계, 3계층 분리  (3) 2024.05.23
내일배움캠프 25일차 TIL - 외래키  (1) 2024.05.22
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 30일차 TIL - JWT(Stateless)
  • 내일배움캠프 29일차 TIL - ExceptionHandler
  • 내일배움캠프 27일차 TIL - JWT
  • 내일배움캠프 26일차 TIL - JPA핵심 및 관계, 3계층 분리
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (157)
      • 🎓방송통신대학교 (26)
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 🛠️Backend (54)
        • 📚백엔드 공부 (4)
        • ☕Java (22)
        • 🌳Spring (12)
        • ⚡Python (13)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Data Structure (1)
      • ⛺스파르타코딩클럽 (65)
      • 정보 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Java
    다형성
    유비쿼터스 컴퓨팅
    자바
    Python
    컴퓨터의 이해
    방송대
    클라우드
    파이썬
    컴파일러
    Spring Framework
    입출력
    클래스
    방통대
    spring
    세계화
    유비쿼터스
    스프링
    유비쿼터스 컴퓨팅개론
    방송통신대학교
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 28일차 TIL - Filter
상단으로

티스토리툴바