21일차 - Spring강의(Spring MVC)

2024. 8. 12. 17:32·Java & Spring/Spring

□ Spring MVC

  • MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나
  • MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리

 

Model

  • 데이터와 비즈니스 로직을 담당
  • 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행합니다.

View

  • 사용자 인터페이스를 담당
  • 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현

Controller

  • Model과 View 사이의 상호작용을 조정하고 제어
  • 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트

- 사용자가 (HTTP) API 요청했을 때 서버의 서블릿의 동작방식

  1. 사용자가 Client(브라우저)를 통해 서버에 HTTP Request 즉, API 요청
  2. 요청을 받은 Servlet 컨테이너는 HttpServletRequest, HttpServletResponse 객체를 생성
    • 약속된 HTTP의 규격을 맞추면서 쉽게 HTTP에 담긴 데이터를 사용하기 위한 객체
  3. 설정된 정보를 통해 어떠한 Servlet에 대한 요청인지 확인
  4. 해당 Servlet에서 service 메서드를 호출한 뒤 브라우저의 요청 Method에 따라 doGet 혹은 doPost 등의 메서드를 호출
  5. 호출한 메서드들의 결과를 그대로 반환하거나 동적 페이지를 생성한 뒤
    HttpServletResponse 객체에 응답을 담아 Client(브라우저)에 반환
  6. 응답이 완료되면 생성한 HttpServletRequest, HttpServletResponse 객체를 소멸

◈ Servlet (서블릿) : 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양

 

- Front Controller

  1. **Client(브라우저)**에서 HTTP 요청이 들어오면 DispatcherServlet 객체가 요청을 분석
  2. DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달
    ex) GET /api/hello → HelloController 의 hello() 함수
          GET /user/login → UserController 의
    login() 함수
  3. Controller → DispathcerServlet
    • 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달합니다.
  4. DispatcherServlet → Client
    • ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달합니다.
@RestController
public class HelloController {
    @GetMapping("/api/hello")
    public String hello() {
        return "Hello World!";
    }
}

 

'Java & Spring > Spring' 카테고리의 다른 글

28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입)  (0) 2024.08.22
26일차 - Spring강의(Entity, 영속성 컨텍스트)  (0) 2024.08.20
25일차 - Spring강의(IoC와 DI)  (0) 2024.08.19
25일차 - Spring강의(3 Layer Architecture)  (0) 2024.08.19
21일차 - Spring강의(테스트 코드, lombok)  (0) 2024.08.12
'Java & Spring/Spring' 카테고리의 다른 글
  • 26일차 - Spring강의(Entity, 영속성 컨텍스트)
  • 25일차 - Spring강의(IoC와 DI)
  • 25일차 - Spring강의(3 Layer Architecture)
  • 21일차 - Spring강의(테스트 코드, lombok)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java 멤버
    개발로드맵
    java 제어자
    java
    데이터 크기
    java 세수의합
    java two-pointer
    java 유클리드 호제법
    java enhance switch
    java arrays.copyofrnage()
    java super
    Java this
    자료구조
    Java 생성자
    java 메서드
    데이터 타입
    프로그래머스 java 기초 트레이닝
    java기초
    java 에라토스테네스의 체
    프로그래머스 java 기초트레이닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
21일차 - Spring강의(Spring MVC)
상단으로

티스토리툴바