[Servlet] Filter

http://cafe.naver.com/jjdev/935


클라이언트 - 서블릿 사이에 있으며


서블릿에 요청할때 혹은 요청후 응답을 받을때 값을 가공하거나 필터링 한다.



사용 예) 서블릿에 요청할때마다 한글 인코딩을 서블릿에서 처리하는데


모든 서블릿으로 가는 요청을 중간에 필터에서 한글 인코딩을 처리후 각각 서블릿으로 요청을 보낼수 있다.



필터는 직접 서블릿을 지정하거나 이름 패턴으로 다수의 서블릿을 지정할 수 있다.


- web.xml

1
2
3
4
5
6
7
8
9
10
<filter>
    <filter-name>FileterTest</filter-name><!--web.xml에서 사용할 필터 이름  -->
    <filter-class>com.blog.board.commons.FilterTest</filter-class><!-- 필터의 위치와 클래스 이름 -->
</filter>
<filter-mapping>
    <filter-name>FileterTest</filter-name><!--web.xml에서 사용할 필터 이름  -->
    <!--서블릿 이름을 직접 지정하거나 패턴으로 여러개의 서블릿을 지정. -->
    <servlet-name>/FilterAction</servlet-name><!--서블릿 이름을 직접 지정함-->
    <url-pattern>/*</url-pattern><!--서블릿 이름을 지정할 패턴-->
</filter-mapping>



예제)

 - 모든 서블릿으로 가는 요청 파라미터 값을 utf-8로 인코딩

 - EncodingFilter 

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
/**
 * Servlet Filter implementation class EncodingFilter
 */
@WebFilter("/*")
public class EncodingFilter implements Filter {
 
    public EncodingFilter() {
        
    }
    public void destroy() {
        
    }
   //필터의 내용.
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
     throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        //기준 위에 적으면 서블릿을 가기 전의 request을 처리.
        chain.doFilter(request, response);//기준.
        //기준 밑에 적으면 서블릿을 거친 포워딩 된 request, 혹은 response을 처리.
        
    }
    public void init(FilterConfig fConfig) throws ServletException {
        
    }
}



'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글

[자바 라이브러리]JDBC  (0) 2013.09.27
자바 개발을 위한 이클립스 설치하기  (0) 2013.09.27
자바 설치하기. JDK(SE)7  (0) 2013.09.27
[Servlet] Listener  (0) 2013.09.27
[Servlet] Filter와 listener  (0) 2013.09.26

댓글()