[SpringBoot] MVC패턴
뷰 템플릿
View Template은 화면을 담당하는 기술로, 웹 페이지(view)를 하나의 틀(Template)로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여 줍니다.
이 기술로 사용자 마다 웹 페이지를 만드는 것이 아니라 한 페이지에 변수만 바꿔서 사용자마다의 화면을 보여주게 됩니다.
생성 위치
뷰 템플릿은 src > main > resources > templates 디렉터리에 만듭니다.
MVC패턴
Model :데이터 관리
애플리케이션이 포함해야 할 데이터가 무엇인지를 정의합니다.
데이터의 상태가 변경되면 모델은 이를 뷰에게 알립니다. 컨트롤러에게 알리기도 합니다.
View : 화면
애플리케이션에서 실제로 보이는 부분을 말합니다.
웹 브라우저에서 데이터를 보여주는 방식을 정의한 것입니다.
View에서 데이터에 따라 동적으로 화면을 다르게 보여주는 것을 뷰 템플릿이라고 합니다.
자바에서 사용하는 대표적인 템플릿 엔진으로 JSP, Thymleaf(타임리프), Mustache(머스테치) 등이 있습니다.
Controller : 클라이언트의 요청에 따라 서버에서 이를 처리하는 역할
사용자의 액션에 응답하는 컴포넌트입니다.
모델을 업데이트하고 다른 여러 액션을 수행합니다.
이런 형태를 Spring에 적용한 것이 바로 SpringMVC 입니다.
모델을 통해 변수 등록하는 방법
모델은 컨트롤러의 메서드에서 매개변수로 받아 옵니다. 모델에서 변수를 등록할 때는 addAttribute()메서드를 사용합니다.
model.addAttribute("변수명", 변숫값); //변숫값을 "변수명"이라는 이름으로 추가
Spring Boot 프레임워크에 대한 내용은 아래 포스팅을 참고해주세요.
2023.12.02 - [Programming/SpringBoot] - [SpringBoot] 스프링 vs 스프링부트
MVC패턴 프로젝트 설계
MVC패턴을 적용하기 위해 아래의 파일 구조처럼 controller, dto, entity, responsitory, service로 나누어서 진행합니다.
[java.com.example.firstproject]
│
├─controller
│ ├─exampleController.java
│ │
├─dto
│ ├─exampleDto.java
│ │
├─entity
│ ├─example.java
│ │
├─responsitory
│ ├─exampleRepository.java(Interface)
│ │
├─service
│ ├─exampleService.java
├───
아래에는 각 역할에 필요한 어노테이션을 적었습니다. 어노테이션은 필요한 곳에 사용하면 됩니다.
[java.com.example.firstproject]
│
├─controller
│ ├─exampleController.java
│ │ ├───@Controller
│ │ ├───@RestController
│ │ │ ├───@GetMapping
│ │ │ ├───@PostMapping
│ │ │ ├───@PatchMapping
│ │ │ ├───@DeleteMapping
│ │ ├───@Autowired : service객체 주입
├─dto
│ ├─exampleDto.java
│ │ ├───@Getter
├─entity
│ ├─example.java
│ │ ├───@Entity
│ │ ├───@Id
│ │ ├───@GeneratedValue
│ │ ├───@Column
│ │ ├───@Getter
├─responsitory
│ ├─exampleRepository.java(Interface)
│ │ ├───@Override
├─service
│ ├─exampleService.java
│ │ ├───@Service
│ │ ├───@Autowired : repository객체 주입
│ │ ├───@Transactional
├───
참고 자료
코딩 자율학습 스프링부트3 자바 백엔드 개발 입문 (길벗)