본문 바로가기
Study_Framework

[Spring] 스프링에서 request와 response의 CharacterEncoding

by 타블로 2008. 10. 20.

 

파일이름 : web.xml
<filter>
    <filter-name>springEncoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>EUC-KR</param-value>
    </init-param>  
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
 
<filter-mapping>
    <filter-name>springEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

 

파일이름 : org/springframework.web.filter.CharacterEncodingFilter.java
protected void doFilterInternal(
    HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
    throws ServletException, IOException {

    if (this.encoding != null && (this.
forceEncoding || request.getCharacterEncoding() == null)) {
        request.setCharacterEncoding(this.encoding);
        if (this.

forceEncoding && responseSetCharacterEncodingAvailable) {
            response.setCharacterEncoding(this.

encoding);
        }
    }
    filterChain.doFilter(request, response);
}


request와 response에 CharacterEncoding을 사용할 때마다 추가하는 것은 정말 귀찮은 작업이다...

그래서 스프링에서는 다음과 같은 방법으로 그 귀찮음을 해결해준다...

2번째 소스를 보듯이 일단 encoding 인자로 넘어온 값을 일단 request의 CharacterEncoding으로 설정하고,

forceEncoding 인자가 true일 경우엔 response의 CharacterEncoding도 encoding 인자의 값으로 설정한다.

이로써 request와 response의 CharacterEncoding을 통일하여 귀찮음을 조금이나마 해소된다.


참고자료 :
1. 웹개발자를 위한 스프링 2.5 프로그래밍 / 저자 최범균