이전 Spring3 + ExtJS 파일업로드 관련하여 포스팅을 한 적이 있습니다.
2014/10/28 - [웹개발강좌/ExtJS] - ExtJS 강좌 - 파일필드를 이용하여 파일업로드하기(html5를 이용한 다중파일 포함)
"Deoki"님께서 질문주신 결과
Spring의 @ResponseBody + Jackson JSON 라이브러리를 이용하여
JSON 파싱한 결과
크롬에서는 정상적으로 JSON 값을 받아왔으나
IE에서는 다운로드가 되는 현상이 발생되었습니다.
이러한 현상이 발생하는 이유는
JacksonMessageConverter의 응답타입이 "application/json" 이어서
IE에서는 정상적으로 동작되지 않는 것이었습니다.
그래서 응답타입을 "text/plain"형태로 설정을 변경을 해주어야 합니다.
크롬에서만 작업하다보니 IE에서 문제가 발생한거라는 것을 몰랐었네요;;
만약 "json-simple" 또는 "json-lib" 와같이 파싱해주는 라이브러리 사용시
response.setContentType을 "text/plain" 으로 설정해주면 문제 없이 IE/크롬 등
모든 브라우저에서 정상작동하는 것이라 신경을 쓰지 않았었는데;;;
상단 포스팅 링크의 코드에 대한 실행결과를 확인해 보도록 하겠습니다.
크롬은 정상적으로 메시지 창이 출력되는 반면,
IE에서는 서버에서 응답받은 결과값이 파일로 다운로드처리가 되었습니다.
그럼 이 부분을 해결하기 위하여
<mvc:annotation-driven />
상단 기존 태그를 다음과 같이 코드 변경을 해주도록 합니다.
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="text/plain;charset=UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven>
위와같이 설정을 해주었다면 다시한번 IE에서 동작을 시켜보도록 하겠습니다.
위와같이 정상적으로 업로드된 파일에 대하여
정상적으로 JSON OBJECT를 받아오는 결과를 확인 할 수 있었습니다.
Spring의 @ResponseBody를 이용한 JSON 구현할때
text/plain 을 적용해주기 위해서는 "mvc:annotation-driven" 태그를
위와같이 적용을 해주는 것이 이 포스팅의 핵심내용입니다.
by 개발로짜
ExtJS 강좌 - ExtJS5 MVC 구조를 이용한 간단 그리드 CRUD 알아보기(2) (5) | 2015.01.07 |
---|---|
ExtJS 강좌 - ExtJS5 MVC 구조를 이용한 간단 그리드 CRUD 알아보기(1) (13) | 2014.12.29 |
ExtJS 강좌 - ExtJS5 MVC 구조 잡아보기(View/Controller + Model+Store 추가) (0) | 2014.11.26 |
ExtJS 강좌 - ExtJS5 MVC 구조 잡아보기(View+Controller 연동) (2) | 2014.11.26 |
ExtJS 강좌 - Sencha CMD로 ExtJS 구조 생성하여 연동테스트 해보기 (1) | 2014.11.24 |