동석쿠
프로그래밍 공부
동석쿠
전체 방문자
오늘
어제
  • 공부 (80)
    • 공부기록 (64)
      • 웹개발 (6)
      • Java (7)
      • cs 공부 (3)
      • http 웹 기본 지식 (8)
      • 자바 스프링 (20)
      • 개인 미니프로젝트 (3)
      • 알고리즘 공부 (6)
      • 면접준비 (2)
      • 프론트공부 (8)
      • 파이썬 플라스크 (1)
    • 항해99 기록 (14)
      • 회고록 (10)
      • 팀프로젝트 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • lombok
  • API
  • 프로그래머스
  • 문법
  • 리프레쉬토큰
  • Get
  • 파이썬
  • 스프링부트
  • 스프링
  • 자바
  • 자바스크립트
  • 항해99
  • Java
  • 리프레시토큰
  • 리스트
  • Post
  • JPA
  • 상속
  • 리액트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
동석쿠

프로그래밍 공부

스프링 Controller의 역할
공부기록/자바 스프링

스프링 Controller의 역할

2022. 1. 27. 23:36

Controller의 장점

1. HTTP request, response 처리를 위해 매번 작성해 줘야하는 중복코드들 생략 가능

2. API 이름마다 파일을 만들 필요 없음

 

 

스프링 MVC ?

MVC (Moder - View - Controller) 디자인 패턴 

Sever 에서 HTML을 내려주는 경우

 

1). 정적(static) 웹 페이지

Controller

1. Client의 요청을 Model 로 받아 처리

   예) 회원가입을 위한 개인 정보들 (id, password, name)

2. Client 에게 View (정적 웹 페이지, HTML)을 내려줌

 

2) 동적 (dynamic) 웹 페이지

Controller

1. Client 의 요청을 Model 로 받아 처리

2. Template engine 에게 View, Model 전달

   a. View : 동적 HTML 파일

   b. Model : View 에 적용할 정보들

3. Template engine

   a. View 에 Model을 적용 -> 동적 웹페이지 생성

       i. 예) 로그인 성공시, "로그인 된 사용자의 id" 를 페이지에 추가

       ii.  Template engine 종류 : Thymeleaf, Groovy, FreeMarker 등

4. Client 에게 View (동적 웹 페이지, HTML) 을 내려줌

 

HTTP 메시지 이해

  • Client 와 Server 간 Request, Response 는 HTTP 메시지 규약을 따름
  • HTTP 메시지는 웹 서비스 개발자(백엔드, 프론트 개발자)에게 매우 중요한 내용!!

Controller와 HTTP Response 메시지

Response 트렌드의 변화

1. 정적 웹페이지

2. 동적 웹페이지

3. JSON 데이터

 

스프링 MVC 동작 원리

@Controller 는 스프링 서버 개발자 입장에서는 시작점과 끝점으로 보이지만, 
사실 스프링이 뒤에서 많은 부분을 보이지 않게 처리해 주고 있다.

  1. Client → DispatcherServlet
    1. 가장 앞 단에서 요청을 받아 FrontController 라고도 불림
  2. DispatchServlet → Controller
    • API 를 처리해 줄 Controller 를 찾아 요청을 전달
    • Handler mapping 에는 API path 와 Controller 함수가 매칭되어 있음
      [Sample]
      GET /hello/html/dynamic → HomeController 의 helloHtmlFile() 함수
      GET /user/login → UserController 의 login() 함수
      GET /user/signup → UserController 의 signup() 함수
      POST /user/signup → UserController 의 registerUser() 함수​
       
    • 함수 이름을 내 마음대로 설정 가능했던 이유!!
    • Controller 에서 요청하는 Request의 정보 (Model) 전달
      @Controller
      public class ItemSearchController {
      		@GetMapping("/api/search")
          @ResponseBody
          public List<ItemDto> getItems(@RequestParam String query) {
      			// ...
      		}
      }​
  3. Controller → DispatcherServlet 

      a. Controller 가 Client 으로 받은 API 요청을 처리

      b. 'Model' 정보와 'View' 정보를 DispatcherServlet 으로 전달

   

   4. DispatcherServlet → Client

     a. ViewResolver 통해 View 에 Model 을 적용

     b. View 를 Client 에게 응답으로 전달

 

Request

 

'공부기록 > 자바 스프링' 카테고리의 다른 글

스프링 DI(의존성주입), IOC컨테이너  (0) 2022.01.29
스프링 Controller, Service, Repository  (0) 2022.01.29
3-1. 간단한 미니프로젝트 완성  (0) 2022.01.25
3-0. 키워드  (0) 2022.01.24
2-2. 클라이언트 설계  (0) 2022.01.24
    '공부기록/자바 스프링' 카테고리의 다른 글
    • 스프링 DI(의존성주입), IOC컨테이너
    • 스프링 Controller, Service, Repository
    • 3-1. 간단한 미니프로젝트 완성
    • 3-0. 키워드
    동석쿠
    동석쿠

    티스토리툴바