$('name')
여기 안에 query selector가 들어간다.on
을 치면 모든 이벤트를 바인딩 할 수 있다.$('#loadBoard').on('click', function(){
loadList();
});
function loadList(){
$.ajax({
url : "list.do",
method : "post",
dataType : "json",
success : listBoard,
error : function(e){
console.log(e);
}
});
}
또한 위 코드에서는 명시가 안 되어있지만 data : { "name" : "박병관" }
이런식으로 data를 넘겨술 수 있다.
추가적으로 dataType
의 default 값은 text
타입이다.
success
속성 옆에 있는 listBoard
는 메서드로 JS 특성상 메서드도 변수로 선언할 수 있다. 이때 괄호없이 값이 들어가게 된다.
@Controller
와는 조금 다르다. @Controller
는 DB에 다녀와서 View Name
을 return하기 위한 class라면 @RestController
는 Json 형태로 객체 데이터를 반환하기위해 사용한다. 최근에 데이터를 응답으로 제공하는 REST API를 개발할 때 주로 사용하며 객체를 ResponseEntity로 감싸서 반환한다고 한다.
단, @Controller
에서 Json 헝태로 반환하게 싶다면 @ResponseBody
를 붙이면 된다. JSON 으로 return 해줄 수 있도록 도와주는 type이다.
@RequestMapping("/list.do")
public @ResponseBody List<Board> list(){
List<Board> list = mapper.boardList();
return list;
}
@RequestMapping("/delete.do")
@ResponseBody public void delete(int idx){
mapper.boardRemove(idx);
}
위와같이 제일 앞에 써도 되고 중간에 써도 동작한다.
@Controller
를 com.gjai.spring
에서만 만들어야 한다. 왜? 바로 servlet-context
에 명시를 해놨기 때문이다.
Spring 환경으로 개발을 하다보면 어떤 pc에서는 이런 error를 볼 수 있는데 이는 ArrayList를 인식하지 못 하여 발생하는 error이다. 이땐 web.xml
에 다음 코드를 추가해주면 해결된다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>