일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 엘지그램 램추가
- 인프런
- 모두의네트워크
- 스프링 도메인
- spring 어노테이션
- 코딩
- spring 테스트 코드
- 쌍용교육센터
- 스프링
- spring controller
- 코린이
- Spring Service
- 백엔드
- 백엔드 신입
- 신입개발
- 스프링 Junit
- 면접후기
- KH정보교육원
- 자바
- Spring 입문
- 널널한개발자
- spring Junit
- 중앙hta
- 면접
- 웹개발
- 개발자
- java
- jdk 11
- Spring
- 국비지원
- Today
- Total
뚜룽
[Spring] 인프런 스프링 입문 정리 (3) / MVC 모델 본문
목차
1. MVC 모델
MVC 모델은 Model, View, Controller로 이루어진 소프트웨어 디자인 패턴이다.
- MVC 모델이란?
... MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호 동작을 관리한다.
(출처: 위키피디아 '모델-뷰-컨트롤러')
MVC 소프트웨어 디자인 패턴의 세 가지 부분은 다음과 같이 설명할 수 있습니다.
1. 모델: 데이터와 비즈니스 로직을 관리합니다.
2. 뷰: 레이아웃과 화면을 처리합니다.
3. 컨트롤러: 모델과 뷰로 명령을 전달합니다.
(출처: Mozilla 'MVC')
2. MVC 모델 구현하기
MVC 모델은 관심사를 분리하는 것이 가장 중점인 디자인 패턴이다. 이에 맞게 구현의 순서를 정리하면 다음과 같다.
- 클라이언트의 요청을 처리할 Controller를 @GetMapping으로 지정한다.
- Spring은 @GetMapping 어노테이션이 붙은 메소드에 정보를 처리할 Model을 부여한다.
- Model에는 key:value 형식으로 정보(데이터)를 저장한다.
- Controller가 요청을 처리하고 클라이언트에게 보여줄 html 페이지를 String 타입으로 반환한다.
- Spring의 ViewResolver가 main/resources/templates 에 있는 동일한 이름의 html 문서를 랜더링하여 클라이언트에게 응답한다.
이 순서대로 코드를 작성해보자. 우선 Controller에 또 다른 메소드 하나를 추가해준다. 작업 중인 프로젝트 구조는 이런 모습이다. HelloController 클래스에 helloMvc라는 메소드를 추가하였다.
- HelloController.java
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 helloMvc(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 파일을 하나 만들어준다.
- hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body></html>
이번에는 /hello-mvc 라는 요청이 들어올 때 helloMvc 메소드가 호출되도록 코드를 작성했다. 이때 helloMvc 메소드는 String 타입의 매개변수 하나를 가진다. Spring에서 매개변수를 지정할 때는 @RequestParam("이름") 을 붙여서 만든다. 만약 매개변수가 필수가 아닐 경우에는 @RequestParam(value="name", required=false) 이런 식으로 작성해준다.
- 사용 예시
아래 이미지에서 url에 hello-mvc와 매개변수 하나를 전달하였다. 그러면 html문서의 ${name} 부분이 고양이로 치환되어 hello 고양이 라고 출력된다.
정리하면, 클라이언트로부터 /hello-mvc?name=고양이 라고 문자열을 하나 받아서, 그 값을 String name에 저장한다. 그리고 모델의 "name"이라는 key값에 방금 저장한 '고양이'를 저장하면 모델이 뷰로 반환되어 html 문서에서 이 데이터를 사용할 수 있게 된다. 처리가 끝나면 Controller는 hello-template.html이라는 뷰를 하나 호출하여 화면에 랜더링한다.
이렇게 데이터를 저장하고, 전체 로직을 처리하고, 화면을 알맞게 표시하는 과정을 3개의 담당자로 나누어 실행하는 것이 MVC 모델이다.
'Spring' 카테고리의 다른 글
[Spring] 인프런 스프링 입문 정리 (4) / API (1) | 2023.10.09 |
---|---|
[Spring] 인프런 스프링 입문 정리 (2) / 페이지 만들기 (0) | 2023.10.08 |
[Spring] 스프링 인프런 입문 정리 (1) / Java 설치, Spring 프로젝트 시작하기 (0) | 2023.10.08 |