Programming/SpringBoot

[SpringBoot] MVC패턴

owls 2023. 12. 2. 13:54
728x90

뷰 템플릿

View Template은 화면을 담당하는 기술로, 웹 페이지(view)를 하나의 틀(Template)로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여 줍니다.

이 기술로 사용자 마다 웹 페이지를 만드는 것이 아니라 한 페이지에 변수만 바꿔서 사용자마다의 화면을 보여주게 됩니다.

 

생성 위치

뷰 템플릿은 src > main > resources > templates 디렉터리에 만듭니다.

 

MVC패턴

Model :데이터 관리

애플리케이션이 포함해야 할 데이터가 무엇인지를 정의합니다.

데이터의 상태가 변경되면 모델은 이를 뷰에게 알립니다. 컨트롤러에게 알리기도 합니다.

 

View : 화면

애플리케이션에서 실제로 보이는 부분을 말합니다.

웹 브라우저에서 데이터를 보여주는 방식을 정의한 것입니다.

View에서 데이터에 따라 동적으로 화면을 다르게 보여주는 것을 뷰 템플릿이라고 합니다.

자바에서 사용하는 대표적인 템플릿 엔진으로 JSP, Thymleaf(타임리프), Mustache(머스테치) 등이 있습니다.

 

Controller : 클라이언트의 요청에 따라 서버에서 이를 처리하는 역할

사용자의 액션에 응답하는 컴포넌트입니다.

모델을 업데이트하고 다른 여러 액션을 수행합니다.

 

 

이런 형태를 Spring에 적용한 것이 바로 SpringMVC 입니다.

 

출처 : https://www.w3schools.blog/spring-mvc-tutorial

 

 

모델을 통해 변수 등록하는 방법

모델은 컨트롤러의 메서드에서 매개변수로 받아 옵니다. 모델에서 변수를 등록할 때는 addAttribute()메서드를 사용합니다.

model.addAttribute("변수명", 변숫값); //변숫값을 "변수명"이라는 이름으로 추가

 


Spring Boot 프레임워크에 대한 내용은 아래 포스팅을 참고해주세요.

 

2023.12.02 - [Programming/SpringBoot] - [SpringBoot] 스프링 vs 스프링부트

 

[SpringBoot] 스프링 vs 스프링부트

스프링(Spring)은 프레임워크이며, 스프링 부트(Spring boot)는 스프링을 기반으로 한 도구입니다. 스프링에서 스프링 프레임워크로 개선한 사항으로는 다음과 같습니다. - 개발 환경 설정을 간소화 :

code-space.tistory.com

 

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 자바 백엔드 개발 입문 (길벗)

 

 

 

728x90