친절한 개발자

ajax로 한글데이터 처리하기 본문

개발일지

ajax로 한글데이터 처리하기

착한 개발자 2016. 6. 14. 09:47

비지니스 로직에서 열심히 데이터를 생성해서 view 로 데이터를 넘길때


비동기처리를 위해 jajax를 사용한과정은 다음과 같다.


1. jsp에서 ajax를 호출한다.  이때 처리결과의 양이 좀 많을경우 적절한 로딩 이미지를보여주기 위해

  

   ajax의 옵션을 사용한다.


2. ajajx에서  - controller - service - dao 의 과정을 거쳐 전달받은 데이터

  

   이때 데이터는 단순한 string일 수도있지만 대부분 Object 즉 객체이다.


   com.fasterxml.jackson.databind.ObjectMapper 를 사용한다.


   pom에  관련 라이브러리를 추가한다.


  Aja로 한글을 전달할때  UTF-8환경에서 코딩이 되어 있다면  RequestMapping의 produces를 설정한다.

   


3. 객체를 Json 형식의 String으로 변환한다. 


4. jsp에서 전달받은 Json String에서 필요한 부분을 추출한다.




1.  4.

$.ajax({

url : "test",    

type : "get",

success : function(datavo) {

var htmlCode = "";

$.each(JSON.parse(datavo),function(i, v){

htmlCode += v.gyoung_ju_il +"  " + v.gyoung_ju_bun_ho+"  "

+ v.sun_wi +"&nbsp;&nbsp;" + v.ma_beon +"&nbsp;&nbsp;" +  v.ma_myeong + "<br>";    

});

$("#content1").html(htmlCode);

},

complete : function() {

$("#loading-indicator").hide();

},

beforeSend : function() {

$("#loading-indicator").show();

},

error : function(e) {

alert("readanswer : " + e.message);

},

});



2. 3

@RequestMapping(value = "/test", produces = "application/text; charset=utf8")

public @ResponseBody String bootstrapTest(){



//----- 로직 -------

//list에 데이터가 담겨있다.


ObjectMapper mapper = new ObjectMapper();

String jsondata = null;

try {

jsondata = mapper.writeValueAsString(list);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return jsondata;


}

pom.xml에 추가한다.


<!-- Jackson -->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.7.0</version>

</dependency>


<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-core</artifactId>

<version>2.7.1</version>

</dependency>


<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-mapper-asl</artifactId>

<version>1.9.13</version>

</dependency>



json으로 한글처리할때 produces = "application/text; charset=utf8"