MVC : Model, View, Controller
Model : 데이터나 비즈니스 로직을 나타냄, 사용자 정보, 주문 정보 등 모두 모델이라고 할 수 있다.
View : 사용자에게 데이터를 출력하고 인터페이스를 생성한다.
Controller : 모델에 필요한 작업을 수행하고, 그것을 뷰로 전달하여 사용자에게 출력하도록 한다.
컨트롤러인 HelloController 파일을 열자.
새로운 페이지를 만들것이다.
HelloController 파일에 코드를 추가하자. 기존 코드에 아래쪽 helloMvc 메소드 부분을 추가하면 된다.
웹에서 hello-mvc 주소로 접속하면 해당 코드가 실행된다.
"name" 이라는 이름의 파라미터에 사용자로부터 입력값을 받아야 한다.
또한 View에, 입력받은 "name"값을 전달하기 위해 model.addAttribute도 입력해준다.
그리고 사용자가 hello-mvc 주소로 접속하면, hello-template.html 뷰를 출력하게 된다.
templates 폴더 안에 hello-template.html 파일을 생성하자. 이것이 뷰이다.
이 파일은 위에서 만든 helloMvc 메소드의 리턴값이 될 것이다.
hello-template 뷰에 강의자료에 있는 코드를 입력하자.
thymeleaf 템플릿 엔진에 의해, 3행의 ${name} 부분에 사용자로부터 입력받는 "name"파라미터의 값이 들어갈 것이다.
그 뒤쪽에 있는 hello! empty는 사용자에게 출력되진 않는다.
하지만 개발 과정에서 이 코드를 정적으로 열었을 경우, thymeleaf 템플릿은 동작하지 않게 되어 뒤쪽 hello! empty가 출력된다.
이것은 개발과정에서 결과물을 중간중간 대략적으로 확인하기 좋은 방법이며, hello! empty는 결과물을 더 편하게 확인하기 위한 입력이라고 보면 되겠다. 아무것도 안써진 것보단 뭐라도 있는게 보기 편하니까.
고로 없어도 문제는 없다는 것이다.
이제 확인해보기 위해 스프링을 가동한다.
가동중이었다면 종료시켰다가 재가동해야 한다.
그런데, 단순히 hello-mvc 주소만을 입력한다면 에러가 출력된다.
왜일까?
아주 간단한 이유로, 아까 만들었던 helloMvc 메소드는 사용자로부터 입력값을 요구한다.
@RequestParam("name") String name이 그 부분이다.
우리가 입력한 값은 "name"파라미터에 들어가게 되고,
model.addAttribute를 통해 뷰(hello-template)로 전달되어,
${name} 부분에 대신 들어가게 되는 것이다.
이렇게 입력해보자.
이것은 HTTP의 GET방식으로 입력값을 전달하는 방법이다.
주소 맨 뒤에 ? 를 붙이면, 파라미터값을 입력하겠다는 뜻이 된다.
?name=spring을 입력해서, name 파라미터에 spring이라는 값을 넣는 것이다.
hello spring이 출력되었다.
hello-template 뷰의 일부분이다.
${name} 부분이 우리가 입력한 spring으로 치환되어, 결과적으로 hello spring이 출력된 것이다.
해당 페이지 소스 확인을 해보면, 우리가 만든 뷰하고는 조금 다르다.
사용자에게 출력될 때 thymeleaf 문법은 이미 처리되어 넘어갔기 때문이다.
이렇게 기초적인 MVC 패턴에 대해 학습할 수 있었다.
'Development > Spring' 카테고리의 다른 글
스프링 입문 - 비즈니스 요구사항 정리 (0) | 2023.10.29 |
---|---|
스프링 입문 - API (0) | 2023.10.26 |
스프링 입문 - 정적 컨텐츠 (0) | 2023.08.15 |
스프링 입문 - 빌드하고 실행하기 (0) | 2023.08.01 |
스프링 입문 - View 환경설정 (0) | 2023.08.01 |