spring3 MVC 인코딩 관련 (한글깨짐, 한글이 외계어로 나오는 문제 해결)
지난번 프로젝트에서는 .do를 사용하여 url을 만들었었다.
그래서 web.xml 에서도 인코딩 필터 url-pattern을 *.do 라고 줬었음.
(왜냐면 .do 로 줬을 때 servlet-mapping 에서의 url-pattern도 *.do 로 줬었기 때문, 하단 참고)
.do 방식때
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter>
<filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> |
근데 이번 프로젝트는 restful 하게 짜본다고 해서, url-pattern 을 그냥 / 로만 줬음. 당연히 인코딩 url-pattern도 동일하게 / 로만 줌
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter>
<filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> |
그랬더니 입력받은 값들이 ë¤ì´ì´í¸ ì´ë¹¼ê³ ë¬ë¼ì§ ë 이런식으로 외계어로 나옴...
그래서 properties 에서 모든 인코딩 방식을 UTF-8로 맞춰줬는데도 안됨 ㅠㅠ
문제는 저 인코딩 필터의 url-pattern에 있었음. 하단처럼 모든 url pattern에 인코딩 필터를 적용하지 않아서 그랬던 문제.. 그래서 모든 url pattern에 인코딩 필터를 적용하게끔 수정해주니 외계어가 정상적인 한글로 잘 나옴~!
<filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |