일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 코딩공부
- Spring
- 코딩테스트 준비
- 메서드
- github
- Java
- 코딩
- 이진 탐색(binary search)
- Grafana
- 우선순위 큐(priorityqueue)
- 코딩문제
- 자료구조
- wil
- HTML
- 정렬 알고리즘(sort algorithm)
- Til
- 배열
- 항해99
- 99클럽
- 프로그래머스
- Entity
- ArrayList
- 개발자 취업
- cs 공부)준비
- aop
- 면접(java
- GIT
- 회고
- css
- 자바
- Today
- Total
hayu's 개발 일지
[TIL]240304 스프링 MVC 와 Front Controller 본문
스프링 MVC란?
- MVC 패턴 등장 전, 하나의 파일로 코드를 짤 경우 하나의 파일이 너무 많은 역할을 하게 되고 로직 변경 사항이 있는 경우 파일을 모두 수정해야 했다.
- MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴으로 Model-View-Controller의 약자이다. MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리한다.
Model
- 데이터와 비즈니스 로직을 담당한다.
-> 클라이언트의 요청을 전달 받으면 요청 사항을 처리하기 위한 작업을 한다. 처리한 작업의 결과 데이터를 클라이언트에게 응답을 돌려줘야 하는데 클라이언트에게 응답으로 돌려주는 작업 처리 결과 데이터를 말한다.
- 데이터베이스와 연동하여 데이터를 저장하고 불러오는 작업을 수행한다.
View
- 사용자 인터페이스를 담당한다.
- 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현한다.
- Model 이나 Controller 에 대한 정보를 단순히 표시해주는 역할을 가진다.
Controller
- Model 과 View 사이의 상호작용을 조정하고 제어한다.
-> 클라이언트의 요청을 직접적을 받는 지점으로 Model 과 View 의 중간의서 상호작용을 해준다. 사용자의 입력을 받아 Model 에 전달하고, 그 결과를 바탕으로 View 를 업데이트한다.
MVC 패턴의 장점
- 소프트웨어를 구성하는 요소들을 분리함으로써 코드의 재사용성과 유지보수성을 높인다.
- 개발자들간의 협업을 용이하게 한다.
Spring MVC 란?
- Servlet API 를 기반으로 구축된 독창적인 웹 프레임워크이다.
+ Servlet(서블릿): 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말한다.
- Spring 에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리한다.
Front Controller 이란?
- Spring 이 API 요청을 효율적으로 처리하기 위한 DispatcherServlet 을 사용하는 패턴방식이다.
- 중간에 공통로직을 만들어 하나의 서블릿만으로 공통로직을 사용하는 패턴이다.
- 공통 로직을 매번 작성하지 않아도 되기 때문에 핵심 로직에 집중할 수 있다.
1. Client(브라우저)에서 HTTP 요청이 들어오면 DispatcherServlet 객체가 요청을 분석합니다.
2. DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달해 줍니다.
3. Controller → DispathcerServlet
-> 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달합니다.
4. DispatcherServlet → Client
-> ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달합니다.
'프레임워크 > spring' 카테고리의 다른 글
[TIL]240313 Builder Pattern (0) | 2024.03.13 |
---|---|
[TIL]240312 트랜잭션(transaction) (0) | 2024.03.12 |
[TIL]240308 트러블 슈팅: 로그인 성공 메세지 (0) | 2024.03.08 |
[TIL]240307 영속성 컨텍스트 (1) | 2024.03.07 |
[TIL]240302 IoC / DI (0) | 2024.03.02 |