본문으로 바로가기

javascript와 json을 이용한 parameter 넘기고 받기


SAP를 구축하다 보면 웹으로 UI를 구성하는 경우가 많아요. 사용자는 웹을 선호하는 것 같아요. UI 로직은 대부분 자바스크립트라고 보면 될거에요.


SAP도 JSP와 비슷한 BSP라는 서버단 UI프로그램 언어가 있었지만 지금은 SAP HANA로 사업 방향을 돌리면서 지원 중단을 했어요. 그리고 앞으로는 사용하지 말것을 권장하고 있지요.


요즘은 클라이언트단 하드웨어와 웹브라우저가 좋아져서 굳이 서버에 부하를 줘가면서 UI로직을 서버단에서 처리할 필요가 없게 되었어요. 뒤로 갈 수록소스코드를 스파게티 처럼 짜게 되는 SI 프로젝트의 특성상 프로젝트 끝나갈 무렵에는 퍼포먼스(속도)로 얘기가 나오는 경우가 많아요.


이런 상황에서 javascript와 json은 접근하기도 손쉽고 다루기도 매우 편하기 때문에 꼭 써볼만 한 것 같아요.


오늘은 몇가지 방법을 소개를 해볼게요.


요즘 보통 SI는 spring MVC를 쓰는 경우가 많아요. 그래서 javascript로 Spring MVC에 파라메터를 던질 때 json으로 던지는 예제를 소개해 볼게요. 요즘 저도 이것 때문에 꿀빨... 은 아니지만 재미 좀 보고 있거든요.ㅎㅎ



hello.html 이에요.

var parameters = 

{

"name":"kyeongrok",

"age":"28",

"id":"krkim",

"pass":"1123"

}


$.ajax({

  url: "/target.do",

  data: JSON.stringify( parameters )

 

}).done(function(data) {

var rawJsonData = JSON.parse(data);

console.log(rawJsonData);

});

이렇게 넘겨주면 되요.


넘겨줄 때 유의해야 하는 점은 json object를 JSON.stringify()를 이용해 스트링으로 변환해서 넘겨야 된다는거에요. 안그러면 잘 안넘어가요. 테스트 해보면 알거에요.



Controller에서는 아래와 같이 받으면 되요.

String jsonString = request.getParameter("jsonParameter");

String escapedJson = StringEscapeUtils.unescapeHtml(jsonString);

JSONTokener tokener = new JSONTokener( escapedJson );

JSONObject jsonObject = new JSONObject( tokener );



여기에서 주의할 점은 request로 받은 다음에 html escape를 해줘야해요. 파라메터로 넘어오는 동안은 웹에서 " 가 변환되서 들어오기 때문에 바로 JSON으로 변환 해줄 수 없어요.


그리고 JSONObjcect는 http://www.json.org/java/ 요 사이트에 있는 라이브러리를 이용해야해요.



이렇게 하면 따로 하나하나 그려줄 필요 없이 파라메터가 몇 개던지 훅훅 잘 넘어가요. 한땀한땀 get으로 그려줄 필요도 없고 파라메터 개수가 변하거나 필드명이 변해도 문제 없어요.


어차피 json으로 받으면 java에서는 list나 map으로 쉽게 변환해서 사용할 수 있고, 당근 javascript에서도 쉽게 사용할 수 있어요.


파라메터 개수 가지고 하던 고민을 덜 수 있죠.




끗.












댓글을 달아 주세요