BACKEND/JAVA & SPRING

[J2KB] MVC와 템플릿 엔진

이-프 2023. 2. 10. 19:09

** 인프런 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의를 기반으로 작성합니다. 

MVC와 템플릿 엔진 

* 요즘 가장 많이 사용하는 웹 서버 패턴

 

MVC [Model & View & Controller 구조]

 

View : 화면을 그리는 것에 모든 역량 집중

Controller & Model : 내부적인 것을 처리하는 것을 위주로 !! 

 

  • 과거에는 Controlller와 View가 분리되어 있지 않고 View에서 모든걸 다 해결했음 
  • jsp php 등등을 템플릿 엔진이라 한다.
  • 서버에서 프로그래밍을 해서 html을 동적으로 바꾸어 실행시키는 것이다.
  • controller -> model -> view 순으로 진행된다.

 

 

> 정적컨텐츠와 차이점 

 

정적컨텐츠 : 파일을 그대로 전달하기 ↔ MVC : 서버에서 파일을 동적으로 변형해서 전달하기

 

 

> thymeleaf의 장점

 

html을 그대로 쓰고 서버 없이 열어봐도 껍데기를 볼 수 잇음 

(= 서버가 없이 열어봐도 껍데기 값은 확인 가능하다. )

 

> resources/templates/hello-template.html

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

 

> 확인방법

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 해당 view의 html에 copy Path/Reference를 클릭한다.

 

2. Absolute Path를 클릭하면, 해당 html의 정확한 위치가 복사된다.

 

3. 결과적으로, 껍데기 값인 hello! empty가 출력됨을 확인 할 수 있다.

 

하지만, 서버가 연결 된다면, 아래 코드가  실행되어 hello + 이름 이 실행될 것이다. 

<p th:text="'hello ' + ${name}

 


 

> MVC 구조 사용 with 서버

> java/controller/HelloController

 

@Controller
public class HelloController {

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value ="name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
}

> resources/templates/hello-template.html

 

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

 

 

※ 에러 발생

 

 

에러 원인

 

@RequestParam("name") => @RequestParam(value ="name") 로 변경해줘야함

 

name이 value로 전달되어야지 view에서 데이터를 쓸 수 있기 때문이다.

 

 

※ 해결

 

name이 value로 넘어감으로써 controller에서 get을 사용할 때, 

uri는 ?name=yurim 에 기반하여

view코드의 name 부분에 yurim이 들어가게 된다. 

 

 

 

> MVC, 템플릿 엔진 구조화

 

  1. 내장 톰켓 서버 거치기 (=> hello-mvc란 왔다고 spring에게 던짐)
  2. helloController 에 메소드가 연결되있구나 라는 걸확인 
  3. viewResolver : 화면 연결자에게 연결해줌 
  4. thymeleaf 템플릿 엔진 처리 
  5. html을 변환해서 웹 브라우저에 넘겨줌 

 

'BACKEND > JAVA & SPRING' 카테고리의 다른 글

[J2KB] 회원관리  (1) 2023.02.17
[J2KB] API  (0) 2023.02.10
[J2KB] 정적 컨텐츠  (0) 2023.02.10
[J2KB] Spring View 환경설정  (2) 2023.02.03
[J2KB] SPRING 라이브러리  (0) 2023.02.03