web.xml 환경설정 - Filter 등록
<filter> <filter-name>char Encoding</filter-name> <filter-class>convert.KorConvert</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
java.servlet.Filter 의 생성 주기
웹 응용프로그램이 처음 실행 될때 개체가 생성되고 init() 을 실행
클라이언트 요청이 있을대마다 doFilter() 실행
웹 응용 프로그램이 종료될때 destory() 실행
src.convert.KorConvert.java 예제
package convert; 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 KorConvert implements Filter{ private String encoding; private FilterConfig fg; private boolean ignore = true; @Override public void init(FilterConfig arg0) throws ServletException { fg = arg0; // 필터가 정의되어지는 XML 문서에서 정보를 가져온다. encoding = fg.getInitParameter("encoding"); String value = fg.getInitParameter("ignore"); if(value == null) { ignore = true; } else if(value.equalsIgnoreCase("true")) { ignore = true; } else if(value.equalsIgnoreCase("yes")) { ignore = true; } else { ignore = false; } } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { if( ignore || arg0.getCharacterEncoding() == null) { // ignore 가 true 이거나 setCharacterEncoding으로 설정된 캐릭터셋값이 없을 경우 // 이곳에서 전처리 코드 수행 if(encoding != null) { arg0.setCharacterEncoding(encoding); } arg2.doFilter(arg0, arg1); // 후처리 코드 수행 } } @Override public void destroy() { // TODO Auto-generated method stub } }