- SPRING 3.9.7 ver 조건의 ajax 처리 예시가 적어서 찾는데 고생을 하였으나
사용해본 결과 , 대강의 문법은 SPRING 4이상 ver과 비슷하다.
하단의 샘플이미지처럼, 비동기 통신이 성공 하였을때 , 크롬 f12 에서 Request Headers , Resonpse headers 로 타입을 확인 할 수
있다.

-front part-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
function ajaxTest2(){
var formarian = {
name: "jamong",
age: 100
}
$.ajax({
url: "stringify",
type: "POST",
data: JSON.stringify(formarian),
contentType: "application/json",
dataType: "json",
success: function(data){
var txt = data.name + data.age;
$('#ajaxText').val(txt);
},
error: function(){
alert("stringify err");
}
});
}
|
cs |
9 : 서버로 data 에 지정된 값을 전달
+)request 안에 포함된 json 형태의 데이터를 서버가 받았을 때, 이것을 보통 VO(혹은 DTO)에 다시 담아 사용하는데 .ajax는 데이터를 문자열화 해주지 않기 때문에 보낼 데이터를 JSON.stringify()로 감싸주어야 합니다.
참고 : https://thiago6.tistory.com/11
10 : contentType: "application/json" 은 , client-> server 로의 데이터 전달을 json으로 지정하는 것이다.
11 : dataType:'json' 은 server->client 로의 데이터 반환 타입을 json으로 지정하는 것이다.
-SPRING MVC controller-
1
2
3
4
5
6
|
@RequestMapping(value = "/stringify",
produces = { MediaType.APPLICATION_JSON_VALUE} , method=RequestMethod.POST)
public @ResponseBody Map<String,Object> getTodayChart(@RequestBody Map<String,Object> map) {
System.out.println(map);
return map;
}
|
cs |
2: produces 에서 JSON객체를 반환하겠다고 지정.
@RequestMapping에는 요청과 응답에 관련한 프로퍼티를 설정할 수 있습니다. produces와 consumes 이 있다.
produces는 어떠한 데이터 형식으로 응답할 것인가를 결정하는 부분입니다.
consumes는 어떠한 요청에 대해서 처리할 것인가를 결정하는 부분입니다.
produces를 설정하지 않는다면 , HTTP 요청의 Accept 로 HTTP Message Convertor가 자동으로 컨버터 시켜준다.
3 : @RequestBody를 Map 앞에 추가해 주어야 한다.
그래야 넘어온 json 값들이 map변수에 key, value값들이 잘 매핑이 된다.
@RequestBody - JSON형태로 받게해주는 Annotation이며 , JSON 데이터를 원하는 타입으로 바인딩 처리
@ResponseBody - 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 용도
메소드의 return형 앞에 @ResponseBody를 붙여서 사용하도록 한다.
-pom.xml-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<!-- Jackson librarys -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<!-- Jackson 2.0 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.12.3</version>
</dependency>
|
cs |
Spring 3.1.1 인 경우 정상적으로 json 을 출력한다. 다만 버전을 3.2.x 로 업데이트한 경우 문제가 발생한다.
Spring 3.2.x 인 경우 Jackson2 가 필수 사항이기 때문이다.
출처: https://syaku.tistory.com/290
해당 글을 보고 , Spring 3.9.7에서도 비슷한 이슈거리라고 생각하였다. 이에따라 pom.xml의 jackson-mapper-asl 을 제외한 모든 jackson 버전을 2.대로 맞추어 주었다.
윗 공식 mvn-repository에서 dependency등록이 가능한 버전들을 검색할 수 있다.
참고 : jackson라이브러리 , @RequestMapping의 produces,consume 참고 https://github.com/kdevkr/spring-demo-ajax
참고 : $.ajax head 용어참고 https://thiago6.tistory.com/7?category=827229
'21년이전 > SPRING' 카테고리의 다른 글
SPRING - 자주사용되는 데이터 전달객체들 + 어노테이션+Lombok (0) | 2021.05.18 |
---|---|
SPRING - (MVC) MyBatis 로 게시판 구현 (0) | 2021.05.06 |
SPRING - (MVC) JDBC Template을 이용해보자. (0) | 2021.05.05 |
SPRING - (MVC) DBCP 게시글 예제 (0) | 2021.05.01 |
SPRING - (MVC) 컨트롤러-뷰 의 데이터 흐름 (0) | 2021.04.29 |