순서
- 2. 스프링 웹 개발 기초
- 2.1 정적 컨텐츠
- 2.2 MVC와 템플릿 엔진
- 2.3 API
2.2 MVC와 템플릿 엔진
이번시간에는 MVC 와 템플릿 엔진에 대해 알아보자.
MVC란?
Model, View, Controller 라는 것이다.
과거에는 Controller와 View가 분리되어 있지 않았다.
이전 jsp 개발을 할 때에는 view에 모든것을 작성했다. Model1 방식 이라고 하는데, 한군데에 때려박음. 유지보수 하는데에 힘들 수 있다.
따라서 Model, View, Controller 로 역할과 책임을 나눠서
view는 화면을 그리는데에 집중하고, Controller 와 Model 들을 비즈니스 로직과 관련이 있거나, 내부적인 처리를 하는것에 집중하도록 한다.
이번에는 메소드 내 @RequestParam을 통해 외부에서 파라미터를 받아보자. 리턴값은 hello-template 으로 하고,
새 html 파일을 생성해 준다.
View 에서는 Model에 담겨있는 특성(attribute) 의 키,값 을 불러와 매핑해 준다.
서버를 실행하고 localhost:8080/hello-mvc 로 가보자
에러가 떠버렸다. 왜냐하면 우리가 name 이라는 속성은 만들었지만 어떤값인지는 넣지 않았기 때문에, 로그를 보면
인자값이 null 이거나 타입이 맞지 않을때 나오는 에러이다.
Controller를 보면, RequestParam에 required 옵션과 defaultValue 옵션이 있다.
required 옵션은 해당 파라미터가 필수인지 아닌지에 대해 설정할 수 있다.( 기본은 true이기때문에 파라미터가 필수로 요구되어 이전의 에러페이지가 나온것)
required 옵션을 false로 지정해주면, 아까와 같이 localhost:8080/hello-mvc 로 접속을 하면 에러페이지가 나오지는 않지만, name의 값을 지정해주지 않았기 때문에 null 로 뜬다.
여기서 defaultValue 기본값 을 지정해 주면 , 파라미터에 어떤 값도 넣지 않았을때 defaultValue 가 나오게 된다.
Get 방식으로 파라미터를 넘겨주어도 잘 나온다. 우앙~
동작방식을 시각화 하여 감을 잡아보자.
1. 웹브라우저 에서 localhost:8080/hello-mvc 를 넘기면, 내장 톰캣서버를 거쳐서 spring 에게 넘기고
2. Spring 에서는 Controller에서 hello-mvc가 매핑이된 메서드를 찾는다.
3. hello-template 을 반환하면서 model의 정보도 함께 viewResolver에게 넘겨준다.
4. viewResolver는 templates 내의 hello-template 이라는 이름의 html을 찾아서 타임리프 템플릿 엔진에게 넘긴다.
5. 타임리프에서 변환을 한 html을 웹브라우저에게 반환을 한다.
※정적일때는 그대로 반환을 하였고, 템플릿 엔진에서는 model의 값을 치환을 하여 반환해 준다.
이정도까지 했다면 ,MVC와 템플릿엔진에 대한 가장 기초적인 내용을 알게 된 것이다.
다음시간에는 API에 대해서 알아보자.
'Java | Spring > Spring 입문' 카테고리의 다른 글
[스프링 입문] 3.1 비즈니스 요구사항 정리 (0) | 2021.09.15 |
---|---|
[스프링 입문] 2.3 API (0) | 2021.09.15 |
[스프링 입문] 2.1 정적 컨텐츠 (0) | 2021.09.06 |
[스프링 입문] 1.4 View 빌드하고 실행하기 (0) | 2021.09.06 |
[스프링 입문] 1.3 View 환경설정 (0) | 2021.08.30 |
댓글