filter를 이용한 문자 인코딩 설정

2014년 03월 06일 by 다루이.

    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>

 


필터를 이용하면 문자 인코딩뿐만 아니라 컨트롤러의 시작과 끝나는 시점의 처리를 지정 할 수 있기 때문에 유용하다.