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
}
}