Spring
Spring Web MVC - @Controller / @RestController
chandlerxx
2023. 12. 26. 15:31
과거에 배웠던 개념인데 프로젝트를 진행하면서 떠오르지 않는다면, 해당 개념이 제대로 숙지되지 않다는 증거입니다.
또한 개념만 죽어라 공부한다고 해서 성장할 수 없습니다.
스스로 프로젝트를 진행해야만 보이는 것들이 있습니다.
1. 현재 나에게 "부족한 개념"은 무엇인가
2. 프로젝트를 완성하기 위해서 "무슨 개념"을 적용해야하는가
3. 그리고 완성할때까지 반복
4. 완성된 이후 개선작업 (서비스와 유지보수 측면 등 고려)
.
.
블로그를 만들때 중요한 서비스는 아래와 같습니다.
- 게시글 등록/수정/삭제 → 현재 단계
- 뷰 렌더링
- 부가서비스(채팅방 등)
1. @Controller - 쿼리파라미터로 데이터 전달하기
요청 데이터를 전달할때 가장 기본적인 방법입니다.
HelloController를 생성하고 서버 연결 성공시, 화면에 Hello World를 출력하겠습니다.
(예제를 참고해 학습해주세요)
1. HelloController 생성
@Controller
public class HelloController {
@GetMapping("/hello")
public String helloWorld(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello";
}
}
2. hello.html 생성
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="|Hello, ${name}!|" />
</body>
</html>
- @Controller
반환 값이 String 이면 View 이름으로 인식되며, View를 찾고 랜더링합니다.(src/main/resources/templates/hello.html) - @GetMapping
RequestMapping(method = RequestMethod.GET) + /hello url 라우팅하면 helloWorld 메서드를 호출합니다. - @RequestParam
쿼리 스트링의 파라미터값으로 바인딩 처리
만약 http://localhost:8080/hello?name=XXX로 조회시, VIew에서 "|Hello, ${name}!|"에 name 대신 XXX값 할당한 후에 출력 - model.addAttribute
View에 전달할 데이터를 key-value처리
VIew에서 ${name} -> key
쿼리 파라미터 http://localhost:8080/hello?name=XXX -> value
2. @RestController
앞서 살펴본 Controller방식의 단점은 너무 번거롭습니다. 좀더 간편하게 사용할 수 있는 방법이 @ResponseBody입니다.
@RestController
public class HelloController {
@GetMapping("/hello")
public String helloWorld() {
return "Hello World";
}
}
- @RestController
= @Contorller + @ResponseBody
메세지 바디에 "Hello World"라는 문자열을 JSON형태로 반환합니다.
코드가 매우 간편해지면서도 원했던 기능은 다 구현할 수 있고요.
감사합니다.