웹 개발 방식 3가지
> 정적 컨텐츠
> MVC와 템플릿 엔진
> API
[정적 컨텐츠] ※파일을 그냥 내려준다
1. 웹브라우저에서 locallhost:8080/hello-static.html을 넘김
2. 스프링부트가 띄울 때 내장된 톰켓 서버를 거친 후, 스프링으로 넘김
2. 컨트롤러를 먼저 통하나, 해당 컨트롤러에 매핑된 메소드가 없을 경우
3. 자체적으로 생성한 뒤 웹브라우저에 내용 변환없이 그대로 띄운다
[MVC와 템플릿 엔진]
- Model, View, Controller
view > 보여주는 내용 (화면과 관련된 일)
controller > 처리해야할 데이터들 (비즈니스와 관련된 로직들)
model > controller에서 처리한 내용들을 다듬어서 view에 필요한 데이터들만으로 view에게 전달해줌
M,V,C로 쪼개어 뷰를 렌더링할 때 템플릿 엔진 적용
1. 웹브라우저에서 locallhost:8080/hello-mvc를 넘김
2. 스프링부트가 띄울 때 내장된 톰켓 서버를 거친 후, 스프링으로 넘김
3. helloController의 hello-mvc에 매핑이 되어있는 것을 확인 후, 해당 메소드를 호출
4. return은 hello-template
model은 (name:spring) ※키와 값
5. viewResolver에게 4번의 데이터들을 던짐
return값과 같은 것을, templates에서 찾은 후 랜더링 후 HTML 반환
6. 웹 브라우저로 반환함
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class helloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!!");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name",name);
return "hello-template";
}
}
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
'Spring' 카테고리의 다른 글
JPA란? (1) | 2022.10.05 |
---|---|
getter / setter 사용이유 (0) | 2022.08.15 |
앞으로 할 것들 (0) | 2022.08.14 |
스프링 웹 개발 기초 (개발방식 3가지 part2) (0) | 2022.08.14 |
스프링 입문 (0) | 2022.08.13 |
댓글