벤권의 개발자 이야기

[Servlet] 필터(Filter) 적용 본문

-/spring

[Servlet] 필터(Filter) 적용

벤권 2023. 10. 3. 00:35

 

req.setCharacterEncoding() 와 같이 한글이 깨지는 것을 방지하기 위해서 매번 POST 요청 마다 코드를 작성해 주어야 하거나 로그인 확인이 필요한 부분은 매번 같은 코드를 작성해주어야 한다.

 

하지만 필터를 이용하면 중복으로 코드를 작성하지 않고 해결할 수 있다.

필터(Filter)

필터는 단어 의미 그대로 특정한 서블릿,JSP 등에 도달하는 과정에서 필터링하는 역할을 위해서 존재하는 서블릿 API의 특별한 객체이다.

@WebFilter 애노테이션으로 특정 경로에 접근할 때 필터가 동작하도록 설계하면 로그인 확인이나 인코딩 설정과 같이 동일한 로직을 중복으로 작성하지 않고 적용할 수 있다.

필터는 한 개 이상, 여러 개를 적용할 수 있다.

아래 코드는 UTF8 인코딩을 설정해주는 필터 예제 이다.

애노테이선 내에 urlPatterns로 여러 경로에 대하여 해당 필터를 적용할 수 있다.

@Log4j2
@WebFilter(urlPatterns = {"/*"})
public class UTF8Filter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        log.info("UTF8Filter ..");
        request.setCharacterEncoding("UTF-8");

        chain.doFilter(request, response);
    }
}

  

위 처럼 /* 로 지정 해놓으면 모든 요청에 대해 해당 필터를 거치게 된다.

 

Comments