본문 바로가기

IT노트(구)/Java

자바 Filter 사용 방법 및 예제

javax.servlet.Filter는

어플리케이션의 모든 Http Request에 대해서 감지를 할 수 있는 강력한 기능이다.(이름 그대로 필터의 역할을 한다!)

설정을 거는 방법도 간단한데


1. javax.servlet.Filter를 구현(implement)하는 클래스를 하나 만들고 내용을 기술한다.

2. web.xml에 해당 filter를 등록한다.


다음 예제는 모든 Http Request에 대해서

RequestURL을 찍어주는 예제이다.(사용자가 어떤 url을 요청했는지 확인할 수 있다.)


[소스 부분]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package org.test.one;
 
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;
import javax.servlet.http.HttpServletRequest;
 
public class TestFilter implements Filter {
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // 모든 요청(Request)에 대해서 이 부분이 실행된다.
        HttpServletRequest request = (HttpServletRequest)req;
        
        System.out.println("RequestURL : "+request.getRequestURL());
        
        chain.doFilter(req, res);
    }
 
    @Override
    public void init(FilterConfig config) throws ServletException { // 초기화할 때 실행되는 부분
        String testParam = config.getInitParameter("testParam");
        
        System.out.println("testParam : "+testParam);
    }
    
 
    @Override
    public void destroy() {
        
    }
}
cs



[web.xml 부분]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
    <filter>
    <filter-name>TestFilter</filter-name>
    <filter-class>
        org.test.one.TestFilter
    </filter-class>
    <init-param>
        <param-name>testParam</param-name>
        <param-value>This is Test Parameter!!!</param-value>
    </init-param>
    </filter>
    <filter-mapping>
        <filter-name>TestFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
cs