당니의 개발자 스토리

Filter Mapping과 Dispatcher 본문

Java, Spring

Filter Mapping과 Dispatcher

clainy 2026. 4. 21. 10:57

Filter 적용 범위와 실행 시점

Filter는 만들었다고 자동으로 알아서 적용된다고 생각하면 안 된다!!!
어디에 적용할지 설정을 해줘야 한다.

이걸 Filter Mapping이라고 한다.

 

대표적으로 두 가지 방식이 있다.

1. 특정 URL만 적용

@WebFilter("/login")
 

→ /login 요청에만 필터 실행

2. 전체 요청 적용

 
@WebFilter("/*")
 

→ 모든 요청에 필터 실행

    • /login
    • /board
    • /api/*
    • 정적 파일까지 다 포함

정적 파일은 css나 js, png 파일들을 말한다.

예를 들어 로그인 필터 만들었는데, /*으로 해서 정적 파일까지 다 포함했다고 하자.

로그인 안됨 → 차단

 

이런 경우, css도 막히고 이미지도 막혀서

 

결국 로그인이 안됐다고 화면이 깨져버리는 문제가 생긴다...

/*

그래서 이렇게 설정하면 정적 파일을 포함한 모든 요청에 필터가 적용된다.


그리고 하나 더 중요한 게 dispatcher다.

dispatcher는 요청이 어떤 상황에서 발생했는지 구분하는 태그이다.

이건 필터가 언제, 어떤 상황에 실행될지를 결정한다.

 

Dispatcher 뜻은 운행 관리원 라는 뜻이 있는데, 쉽게 생각하면 파견된 관리자 정도로 생각하면 된다.

뭔가 의미를 알아야 더 잘 이해가 될 것 같아 찾아봤다

 

Filter 입장에서 보면 요청이 여러 종류가 있다.

 

REQUEST

브라우저 → 서버 직접 요청

클라이언트가 직접 요청할 때 실행

ex)

/login
/board

 

FORWARD
서버 내부에서 forward 할 때 실행

Controller → JSP로 넘김 

forward는 서버 안에서 요청을 다른 곳으로 넘겨서 이어서 처리하게 하는 것이다.

request.getRequestDispatcher("/view.jsp").forward(request, response);

이 요청 그대로 view.jsp한테 넘겨서 이어서 처리해라 라는 의미이다.

forward = "야야, 내가 처리하다가 너한테 넘긴다? 던질게!"

  • Controller: "오키~ 나는 로직 끝났고"
  • JSP: " 그럼 이제 내가 화면 만들어서 마무리할게"

INCLUDE
include 할 때 실행

request.getRequestDispatcher("/header.jsp").include(request, response);

응답 만드는 도중에 이 파일 내용도 끼워 넣어라고 중간에 끼워 넣는 것이다.

 

ERROR
에러 페이지로 갈 때 실행

/board 요청 → Controller 실행 → Exception 발생
→ error.jsp로 이동

요청 처리 중 에러 발생한 경우이다.

 

보통 기본은 REQUEST다.

그래서 대부분의 경우 이거 하나만 체크해도 된다.