- filter를 이용한 문자 인코딩 설정 목차
jsp 웹어플리케이션을 개발하다보면 서버로부터 요청결과로 내려오는 한글이 깨지는 경우가 있다. 이럴경우 문자 인코딩을 설정해줘야한다. request.setCharacterEncoding("utf-8")로 설정해줄수 있지만 일일이 이렇게 하기는 곤란하기 때문에 web.xml에서 filter를 등록하여 요청에 대한 인코딩처리를 일괄적으로 처리 할 수 있다. 프레임워크별로 따로 라이브러리로 인코딩용필터를 지원해주기도 하지만 그렇지 않은경우는 apache 톰켓에 있는 샘플클래스를 이용 할 수 있다.
1. 다음과 같은 톰캣디렉터리로 들어가면 SetCharacterEncodingFilter.java가 존재한다. 복사하면 적절히 자신의 프로젝트에 복사한다.
C:\apache-tomcat-6.0.39\webapps\examples\WEB-INF\classes\filters
SetCharacterEncodingFilter를 열어서 init메코드를 확인해보면 다음과 같이 filterConfig.getInitParameter("encoding")부분이 있는데 이것이 web.xml에서 init_param으로 설정한 정보를 가져오는 부분이다.
- SetCharacterEncodingFilter
⁄** * Place this filter into service. * * @param filterConfig The filter configuration object *⁄ public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); String value = filterConfig.getInitParameter("ignore"); if (value == null) this.ignore = true; else if (value.equalsIgnoreCase("true")) this.ignore = true; else if (value.equalsIgnoreCase("yes")) this.ignore = true; else this.ignore = false; }
- web.xml
<filter> <filter-name>Encoding<⁄filter-name> <filter-class>filters.SetCharacterEncodingFilter<⁄filter-class> <init-param> <param-name>encoding<⁄param-name> <param-value>utf-8<⁄param-value> <⁄init-param> <⁄filter> <filter-mapping> <filter-name>Encoding<⁄filter-name> <url-pattern>⁄*<⁄url-pattern> <⁄filter-mapping>
필터를 이용하면 문자 인코딩뿐만 아니라 컨트롤러의 시작과 끝나는 시점의 처리를 지정 할 수 있기 때문에 유용하다.