1. 정적 컨텐츠 -> 그냥 html 파일 출력
2. MVC와 템플릿 엔진 -> model 객체에 데이터를 담아서 html에 전송 후 출력
3. API -> json 파일 형태, 예를 들어 서버끼리 통신할 때 주로 사용
1. 정적 컨텐츠
위 코드와 같이 hello-static.html에 직접 접속하는 고전 방식
2. MVC와 템플릿 엔진
MVC는 Model + View + Controller의 줄임말로 Controller에서 Model 객체를 통해 html을 불러오고 html에서 {name}과 같이 동적으로 서버에서 받은 데이터를 출력할 수 있는 View가 있다. 아래와 같이 hello-mvc에 접속하면 스프링에서는 viewResolver를 통해 View를 보여준다.
Controller
@Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); return "hello-template"; } } |
View (resources/template/hello-template.html)
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
실행: 127.0.0.1:8080/hello-mvc?name=lemon_soju
git 주소 ->
API
API 방식은 위 두 방식과 다르게 html을 반환하는 것이 아니라 문자 자체를 반환한다. 예를 들어 아래와 같이 name에 변수에 데이터를 저장하고 반환하는데 웹 페이지에서 페이지 소스 보기를 해도 html이 아닌 문자만 입력되어 있다. @ResponseBody를 앞에 붙이면 스프링에서는 템플릿 엔진과는 달리 html 페이지가 아닌 문자나 객체를 직접 반환한다. 스프링은 viewResolver가 아닌 HttpMessageConverter를 통해 문자나 객체를 반환한다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello " + name;
}
보편적으로 사람들이 많이 사용하는 API의 핵심 기능은 다음과 같다. 아래 코드와 같이 Hello 객체에 name을 설정하고 Hello 객체를 반환하면 Json 타입으로 반환된다.
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello(); // Ctrl + Shift + Enter 누르면 자동 완성
hello.setName(name);
return hello;
}
static class Hello{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
'웹 개발 > Back End' 카테고리의 다른 글
스프링 입문 - 스프링 빈과 의존관계 (0) | 2022.01.02 |
---|---|
스프링 입문 - 회원 관리 예제 (0) | 2022.01.01 |
스프링 입문 - 템플릿 엔진 개념 (0) | 2021.12.31 |
파이썬 Flask와 PostgreSQL를 이용한 쇼핑몰 구현 프로젝트 (0) | 2021.12.15 |
[Python Flask] - Todo 메모장 만들기 (0) | 2021.11.14 |
댓글