[Spring] @Controller 와 @RestController

JOY·2023년 5월 4일
0

[Spring]

목록 보기
16/18
post-thumbnail

@Controller

  • Spring MVC 컨트롤러를 선언할때 주로 사용
  • HTML View를 생성하거나 JSP와 같은 뷰 템플릿 엔진을 사용하여 웹 애플리케이션의 사용자 인터페이스를 생성하는데 사용

@RestController

  • RESTFul 웹 서비스를 제공하는데 사용
  • 메서드 반환값 👉 HTTP 응답 본문에 쓰여진다. (Ajax 요청 응답에 적합)
    : HTTP 응답 본문으로 JSON, XML 또는 기타 형식의 데이터로 반환
  • Ajax를 사용하여 서버와 비동기적 통신 시 사용

Ajax (비동기화 통신)

  • 비동기적으로 서버와 브라우저간에 데이터를 교환할 수 있는 웹 개발 기술
    : 새로고침 하지 않아도 데이터를 서버로부터 가져와 브라우저 동적 업데이트
    : 주로 JavaScript 구현, jQuery 사용시 더 쉽게 Ajax요청 가능

Ajax 요청 처리

  • 주로 JSON 형식으로 데이터를 주고받기 때문에,
    Spring에서 Jackson 라이브러리를 사용하여 JSON 데이터를 객체로 변환하거나,
    객체를 JSON 데이터로 변환하는 기능을 제공

어노테이션

  • @RequestBody : HTTP 요청 본문에서 데이터 추출
  • @ResponseBody : 메서드가 반환하는 데이터를 HTTP 응답 본문에 사용 가능
  • @RestController 클래스 - HTTP 메서드와 URL 패턴을 처리할 수 있는 어노테이션 사용
    : PostMapping, @GetMapping, @PutMapping, @DeleteMapping
  • Ajax 요청을 처리하는 Spring 컨트롤러에서는
    @RequestBody 어노테이션을 사용하여 HTTP 요청 본문에서 데이터를 추출
  • @ResponseBody 어노테이션을 사용하여 메서드가 반환하는 데이터를
    HTTP 응답 본문에 직접 사용 가능

코드

$.ajax({
	url:contextPath+"/test",
    생략..
});

@Controller

@Controller
public class TestController {   
	@Autowired
	private TestService service;
	
	@RequestMapping("/test")
	public String tests(){
		return service.test();
	}	
}
  • tests() 메서드가 String 타입인 "test"를 반환하고 있으므로,
    "test"라는 View 이름을 가진 View를 반환

@RestController

@RestController
public class TestController {   
	@Autowired
	private TestService service;
	
	@RequestMapping("/test")
	public String tests(){
		return service.test();
	}	
}
  • tests() 메서드에서는 String을 반환하고 있으므로,
    반환된 String은 JSON 형식으로 자동 변환되어 클라이언트에게 전송
profile
Just Do IT ------- 🏃‍♀️

0개의 댓글