Please Enable JavaScript!
Gon[ Enable JavaScript ]

자신만의 filter class 만들어서 적용하기

자바(JAVA)
반응형

자신만의 filter class 만들어서 적용하기 

 

개발환경 : JDK 1.5, eclipse-Galileo , window XP

 

(1) xml 설정


Spring 에서 제공하는 필터 클래스를 쓸수도 있지만 자기의 입맛에 맞게 필터클래스를
만들어
사용할수도 있다.설정은 web.xml에 다음과 같이 하며 CommEncodingFilter 사용자 정의 
클래스가 된다.

   EncodingFilter
     common.CommEncodingFilter
     
          encoding
          UTF-8
     



     Encoding Filter
     /*


 

(2) 해당 Class 구현  



CommEncodingFilter javax.servlet.Filter 추상클래스를 상속받게되는데

그러면 다음의 3가지 함수를 구현해야한다. 서블릿초기화, 실행, 해제를 담당하는 함수이다.

Init 함수에 보면 filterConfig.getInitParameter("encoding"); 있다 이것은

위의 xml 에서 설정한 param-name 이름과 동일하며 값은 param-value 된다.

그러니까 UTF-8 값으로 모든 request 값이 셋팅되게 되는것이다.

 


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 CommEncodingFilter implements Filter {

	private String encoding;
	protected FilterConfig filterConfig;
	
	/* (non-Javadoc)
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy() {
		this.encoding = null;
		this.filterConfig = null;
	}

	public void doFilter(ServletRequest request, ServletResponse 
                            response, FilterChain chain) 
	                     throws IOException, ServletException {
		if (request.getCharacterEncoding() == null){
			if (encoding != null){
				request.setCharacterEncoding(encoding);
			}
		}
		chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		/** xml 에서 설정한 encoding 값이 된다 */
		this.encoding = filterConfig.getInitParameter("encoding");
	}
	
	public FilterConfig getFilterConfig(){
		return filterConfig;
	}
	
	public void setFilterConfig(FilterConfig cfg){
		filterConfig = cfg;
	}
}
반응형
Posted by 녹두장군1
,