나의 마음을 ctrl+c,너의 가슴에 ctrl+v

web.xml filter

java/coding2012. 7. 11. 18:35

1. filter description

web.xml 에 설정된 filter 는 url 호출시, 공통처리 업무를 담당 한다.
web.xml 에서 설정하며,
당연하겠지만 framework 의 servlet Intercept (예를들면 Spring 의 HandlerInterceptorAdapter ) 이전에 실행된다.

example

<?xml version="1.0" encoding="UTF-8"?>
.
. 세부설정 상략

    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>WARN</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
.
. 세부설정 하략
.
</web-app> 


2. filter 중 UrlRewriteFilter
    - 기능 : 특정 Url로 유입시(from), 지정한 Url(to) 로 재호출을 해준다.
   - 설정 : UrlReWriteFilter 를 설정하면, /WEB-INF/urlrewrite.xml 파일이 생성된다. 이 파일에서 설정

example

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
        "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">

<urlrewrite>
 <rule>
  <desc>시스템 이름으로 들어오는 URL에 대해 메인 페이지로 이동함</desc>
  <from>^/([a-zA-Z0-9]+)$</from>
  <to type="redirect">%{context-path}/$1/common/main/loginForm.do</to>
  </rule>
</urlrewrite>

 $1 은 유입되는 주소를 의미한다. (세부설정은 내용이 다양해서 별도 post 로)


3. customer filter 작성

<filter>
    <filter-name>CustomerFilter</filter-name>
    <filter-class>test.cmmn.filter.TestFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CustomerFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>

모든 *.do url로 유입시, test.cmmn.filter.TestFilter 를 거친다.

기본적으로 TestFileter 는 Filter interface를 implements 한다.

Filter interface 는
    public void init(FilterConfig filterConfig) throws ServletException;
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException,     ServletException;
    public void destroy();
의 메소드로 구성되어 있다.

implements 하여 해당메소드를 구현하면 된다.
init - filter 호출시, 설정
doFilter - filter에서 처리해야할 작업처리
destory - filter 종료시 호출

Sample java code

package *******.cmmn.managed;

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;

/** 
 * @Class Name    : AdmFilter
 * @Description    : 관리자모드 필터
 * @author    : ******
 * @create     : 2014. 05. 12.
 */
public final class AdmFilter implements Filter {

 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void destroy() {
  // TODO Auto-generated method stub
  
 }
}

add note : 기본적인 filter 수행에 dispatcher, chain 등 세부적으로 설정 및 확장하여, 활용할 수 있다.
(검색어 : [filter,dispatcher] [filter,chain] )

'java > coding' 카테고리의 다른 글

jQuery plugin 정리 (+ bootstrap color picker 포함)  (0) 2014.05.15
[도움말] jQuery 1.4 chm  (0) 2013.10.24
taglib (el) 명령어 사전 (정리진행중)  (0) 2012.12.26