Spring 사용시 ajax를 사용하는 경우가 많이 발생한다 이때 데이터를 text로 받을 수도 있지만 json으로 받아야하는 경우도 발생한다 이때 우리가 알아야하는 하는것은 @ResponseBody , @RestController이다
@RestController 와 @controller 의 차이
@controller
일반적으로 View를 전달하기 위해 사용한다
@RestController
일반적으로 Rest full api를 구성하고 할때 사용하는 어노테이션으로 데이터를 전달하고자 할때 사용한다. 해당 어노테이션은 스프링 4점대부터 사용가능하며 이전 버전에서는 @responsebody를 통해서 데이터를 전달했다.
ajax를 사용시 json형식으로 데이터 받기
pom.xml
jackson을 추가해야 데이터를 json 형태로 변환해서 전달 가능하다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.1.1</version>
</dependency>
index.jsp
url | 요청 url |
type | 어떠한 형식으로 데이터를 요청할 것인가 |
data | 내가 전달하고자 하는 데이터 |
dataType | 서버로 부터 어떠한 데이터를 받을 건인가를 정한다 |
success | 정상적으로 서버가 응답했을 경우 실행 |
error | 정상적으로 서버가 응답하지 못했경우 실행 |
$.ajax({
url: "요청 url",
type: "get",
contentType: "application/json; charset=utf-8;",
dataType : "json",
success: function(result){
console.log(result)
}
})
controller
아래는 @RestContrller 아닌 @ResponseBody를 사용했다. 그리고 Map ,List 와 같은 컬렉션을 사용하여 return 한다 또는 json을 생성하여 return 해도 된다 json 생성 방법은 아래에 작성
@ResponseBody
@RequestMapping("test")
public Map<String, String> test(){
Map<String,String> map = new HashMap<String, String>();
map.put("msg", "성공")
return map;
}
결과
아래와 같은 결과를 출력하게 된다.
json을 생성하여 데이터 받기
전달받고자하는 json 형식
[{
"id": 1,
"msg": "1번 성공",
}, {
"id": 2,
"msg": "2번 성공",
]}
controller
@ResponseBody
@RequestMapping(value="calendar/{tbno}" , method=RequestMethod.GET)
public JSONArray getCalendar(@PathVariable String tbno) {
JSONObject ob = new JSONObject();
ob.put("id", 1);
ob.put("msg", "1번 성공");
JSONObject ob2 = new JSONObject();
ob2.put("id", 2);
ob2.put("msg", "2번 성공");
JSONArray array = new JSONArray();
array.add(ob);
array.add(ob2);
return array;
}
결과
정상적으로 json 데이터를 받아오는 것을 확인 할 수 있다.
'Spring' 카테고리의 다른 글
Spring Tomcat 실행 방법 (0) | 2022.12.02 |
---|---|
Spring json response 보내는 방법 (0) | 2022.12.02 |
Spring jsp 사용시 include를 통해 css , js 가져오기 (1) | 2020.05.11 |
Spring mybatis 값에 따른 쿼리 실행 (0) | 2020.05.09 |
Spring mybatis 단일파라미터 전송시 no getter 에러 (0) | 2020.05.09 |