MVC는 Model, View, Controller 이다.
[ MVC의 Controller ]
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
[ MVC의 View ]
resources/templates/hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
[ Case1 – @ResponseBody 문자 반환 ]
Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
[ Case 2 – @ResponseBody 객체 반환 ]
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
}
}
```
public void setName(String name) {
this.name = name;
}
}
}
1. 파일을 그대로 프론트엔드에 전달하는 것을 ( 정적 콘텐츠 ) 라고 한다.
2. MVC는 ( Model, View, Controll )의 약자이다.
3. ( View )는 화면과 관련된 일만 한다.
4. ( Controller )는 서버와 관련된 일을 한다.
5. ( Model )에는 화면에 필요한 데이터를 담는다.
6. API에서는 viewResolver 대신 ( @ResponseBody )을 사용하여 HTTP BODY에 내용을 직접 반환한다.
7. API에서 기본적으로 객체 데이터는 ( JSON ) 형태로 반환된다.
1. 사용자의 이름을 입력받아 인사 메시지를 보여주는 간단한 웹 애플리케이션을 구현한다.
hello-template.html는 이미 존재한다고 가정한다.
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
// 여기에 코드 작성 ...
}
}
2. GET `/message`로 요청하면 `Message` 객체를 반환하도록 한다. `Message` 객체는 "안녕하세요!"라는 내용을 포함한다.
@RestController
public class MessageController {
@GetMapping("/message")
@ResponseBody
public Message getMessage() {
// 여기에 코드 작성 ...
}
}
class Message {
private String content;
public Message(String content) {
this.content = content;
}
// Getter와 Setter는 존재한다고 가정
}
1번 답
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template"; // hello-template.html 뷰 반환
}
}
2번 답
@RestController
public class MessageController {
@GetMapping("/message")
@ResponseBody
public Message getMessage() {
return new Message("안녕하세요!");
}
}
class Message {
private String content;
public Message(String content) {
this.content = content;
}
// Getter와 Setter는 존재한다고 가정
}
출처: 스프링 입문, 코드로 배우는 스프링 부트, 웹MVC, DB접근기술 강의
Corner Spring 1
Editor: lyonglyong
er
ㄴㅇ2ㄹ
[스프링 1팀] 5장~6.5장. API 작성과 데이터베이스 연동 (0) | 2024.11.22 |
---|---|
[스프링 1팀] 1장~4장. 스프링 부트 개발 환경과 애플리케이션 개발하기 (0) | 2024.11.15 |
[스프링 1팀] 스프링 입문 섹션 7~8 (0) | 2024.11.08 |
[스프링 1팀] 스프링 입문 섹션 5~6 (0) | 2024.10.11 |
[스프링 1팀] 스프링 입문 섹션4 (0) | 2024.10.04 |