Notice
Recent Posts
Recent Comments
Link
- Outsider's Dev Story
- 흔한 개발자의 개발 노트
- 내 아이큐 80, 너도 80, 둘이 합쳐 160 - 내…
- 조대협의 블로그
- 자바캔(Java Can Do IT) / 최범균 님
- Sangon, Han – 개발자; 읽고 생각하고 쓰고 …
- The Evolution of the Web
- NAVER D2
- Dashboard - SLiPP
- ITWorld Korea - 테크놀로지 리더를 위한 글…
- OKKY - All That Developer
- 웹Frameworks
- 오픈튜토리얼스
- 위키독스 / 온라인 책 제작 공유 플랫폼 서비스
- 블로터
- IT OnAir
- 한 처음에 / 백창92
- Divide my knowledge / 완프최
- SERI.org
Bigfat
[Spring] @RequestMapping의 produces 속성 본문
@RequestMapping의 produces 속성을 이용해 Response의 Content-Type을 제어할 수 있다
한국관광공사가 제공하는 TourAPI를 사용하면서 지역코드(area_code)로 지역명(area_name)을 조회하는 간단한 요청에서 encoding 문제에 부딪혔다. 아래와 같이 ajax 요청으로 areaCode를 보내면 서버에서 areaName을 return하는 식이다. 예를 들면, areaCode로 1을 보내면 서버는 "서울"을 응답해야 한다. 그런데 "서울"이 "??"로 출력되는 인코딩 문제가 발생했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $(function() { $.ajax({ url: '/travel/getAreaName', method: 'get', data: {areaCode:'${content.area}'}, dataType:"text", error:function(textStatus) { console.log(textStatus); }, success:function(areaName) { console.log('선택된 지역 이름 : ' + areaName); } }); }); | cs |
이때까지 @ResponseBody를 사용하여 문자열을 return할 때 영어만 사용했어서 인코딩 문제를 겪지 않았었다. @RequestMapping의 produces 속성을 아래와 같이 작성하면 해결할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 | /** * 지역코드(areaCode)로 지역명을 조회한다 * @param areaCode * @param resp * @return */ @RequestMapping(value="/getAreaName", method=RequestMethod.GET, produces="application/text;charset=utf-8") public @ResponseBody String getAreaName(@RequestParam int areaCode) { return tourApiModule.getAreaName(areaCode); } | cs |
아래는 produces 속성을 작성하지 않았을 때 Response Header의 Content-Type이다.
아래는 produces 속성을 작성한 후 Content-Type이 변경되어 응답하는 것을 확인할 수 있다.
요즘 파이썬이나 Node.js만 계속하다보니 스프링을 소홀히 한 것 같아 반성한다...
'Java > web' 카테고리의 다른 글
[Spring] SiteMesh를 이용한 공통 레이아웃 처리하기 (0) | 2017.07.26 |
---|---|
[Spring] AspectJ 적용 시 NoClassDefFoundError, ClassNotFoundException 발생 (2) | 2017.05.22 |
[모델2] 단일 파일 다운로드 구현하기 (게시판 구현) (0) | 2017.05.01 |
[모델2] Multipart를 이용한 단일 파일 업로드 구현하기 (게시판 구현) (0) | 2017.05.01 |
[Spring] MyBatis Mapper 파일 설정 방법 (0) | 2017.04.28 |