어노테이션 | 기능 |
---|---|
@RestController | Controller가 REST 방식을 처리하기 위한 것임을 명시한다. |
@ResponseBody | 뷰로 전달되는게 아니라 데이터 자체를 전달하기 위한 용도 |
@RequestBody | JSON 데이터를 원하는 타입으로 바인딩 처리 |
@PathVariable | URL 경로에 있는 값을 파라미터로 추출하려고 할 때 사용 |
@CrossOrigin | Ajax 크로스 도메인 문제를 해결해주는 어노테이션 |
@RequestBody와 @ResponseBody는 요청과 응답에 관한 어노테이션으로 스프링 비동기 처리를 하는 경우 사용한다.
웹페이지에서 json
으로 요청한 파라미터를 java에서 받으려면 java Object
로의 변환이 일어나야 하고 또한 response 시에도 java Object
를 json
으로 변환이 필요하다.
이때 이 두 어노테이션을 이용해 JSON이나 key/value, XML 형태로 데이터를 송수신할 수 있다
@RequestBody
HTTP body 안에 JSON을 VO에 맵핑하는 스프링 어노테이션
HTTP 요청을 자바 객체로 전달받을 수 있다.
@ResponseBody
VO객체를 JSON으로 바꿔서 HTTP body에 담는 스프링 어노테이션
메서드의 return 값을 HTTP Response body에 담는 역할을 한다.
참고 🔗@RestController란?
@RestController = @Controller + @ResponseBody
Test용 컨트롤러에 사용된다.
매번 메소드마다
@ResponseBody
를 써주기 귀찮을 때@RestController
를 써주면 리턴 값에 자동으로 ResponseBody가 붙어 리턴된다
=>HTTP Response body에 자동으로 자바 객체가 매핑되어 전달된다
@Controller
public class Cont {
@RequestMapping(value = "/cont")
public String Test1() {
return "test1.html";
}
}
결과로는 test1.html
로 이동해 Hello World를 출력한다
@RestController
public class RestCont {
@RequestMapping("/")
public String RestTest(){
return "test1.html";
}
}
@RestController를 사용할 경우 뷰로 이동하는게 아니라 test1.html 문자열 자체를 반환해준다.
만약 RestController를 사용할 경우 ModelAndView
클래스를 이용한다.
@RestController
public class RestCont {
@RequestMapping(value = "/test2")
public ModelAndView Test1() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("test1.html");
return modelAndView;
}
}
test1.html로 이동하여 Hello World가 출력된 것을 볼 수 있다.
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!