Dev/JAVA - Web Develope

웹 개발 - 필터 API (Filter API)

Fehoon- 2018. 1. 29. 17:45

 

필터 API (Filter API)

 

서블릿이 요청 받기 전과 결과를 웹브라우저에게 응답하기 전에 특정 작업을 수행할 수 있도록 Filter API를 사용할 수 있다.

 

즉 웹 컴포넌트가 실행되기 전의 선처리 작업과 응답되기 전의 후처리 작업을 수행하는 API이다.

 

다수의 Filter를 체인(Chain)처럼 묶어서 적용시킬 수도 있으며, 선처리 작업의 필터를 요청필터, 후처리 작업의 필터를 응답필터라고 한다.

 

선처리 작업의 대표적인 적용예는 한글인코딩 및 보안관련 작업 등이고, 후처리 작업은 압축및 데이터 변환 작업 등이다.

 

적용 순서

1. Filter 인터페이스를 구현한 클래스를 작성한다.

2. web.xml에 <filter> 태그를 사용하여 등록하거나 @WebFilter 어노테이션을 사용하여 등록한다.

 

import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 

public class ExFilter implements Filter { 

    @Override 
    public void destroy() { 
        //필터 제거 
    } 
    @Override 
    public void doFilter
(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { 
        //요청필터 코드 작업 
        req.setCharacterEncoding("euc-kr"); 
        chain.doFilter(req, resp); 
        //응답 필터 코드 작업 
    } 
    @Override 
    public void init(FilterConfig arg0) throws ServletException { 
        //필터 초기화 
    } 
}

 

 

init 메소드는 필터가 초기화 될 때 수행된다.

chain.doFilter(req,resp) 메소드를 기준으로 선처리 작업과 후처리 작업으로 구분된다.

destroy 메소드는 필터가 제거될 때 수행된다.

 




...............




exFilter
com.test2.ExFilter


exFilter
/*



...............



 

 

필터 url-pattern은 /*로 지정하여 URL 값과 무관하게 항상 필터가 수행되도록 처리하였다.

서블릿을 등록하는 것과 비슷하게 필터를 등록할 수 있다.

필터도 다수 등록이 가능하며 등록시킨 순서대로 필터가 수행되는데 이것을 필터 체인(Filter Chain)이라고 한다.

 

@WebFilter 어노테이션으로 등록하는 방법은 다음 위치에 다음과 같이 추가해주면 된다.

 

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

 

 

참고 서적 : JSP 2.2 & Servlet 3.0 정복하기 - IT HOLIC 63

반응형

'Dev > JAVA - Web Develope' 카테고리의 다른 글

Request url, uri 관련 메소드  (0) 2018.07.04
POJO & EJB?  (0) 2018.02.01