WIL_240226

라미·2024년 2월 25일

TIL

목록 보기
23/25

WIL_04(240219~2402225)

이번주 한주는 SPRING 첫번째 주차로 주로 HTTP와 SPRING 기본에 관한것에 대하여 배웠다. 흐음 스프링 알면 알수록 어려운 친구들...과제하면서 바보짓 해서 내 자신이 싫어지는 한 주였다 다음주는 더 알차게 살자!


HTTP

HTTP : Hyper Text Transfer Protocol
서버와 클라이언트가 서로 데이터를 주고받기 위해 사용되는 통신 규약을 말한다.

HTTP의 통신 구조

  • 기본적으로 HTTP 통신은 request/response 구조이다.
    클라이언트가 요청(Request)하면 서버가 응답(Response) 한다.
    클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어진다.

  • HTTP는 Stateless 이다.
    HTTP는 상태를 저장하지 않는다. 요청이 오면 응답을 할뿐, 여러 요청/응답 끼리 연결되어 있지 않다. -> 각각의 요청/응답은 독립적인 요청/응답이다.
    여러 요청과응답 의 진행과정이나 데이터가 필요할때는 쿠키나 세션 등등을 사용하게 된다.

HTTP header 확인하기

  1. 웹페이지 - 개발자도구 - 네트워크 탭
  2. Headers
      1. General / Request Headers : 서버에 요청하는 request 데이터
      • Status Code : Http 상태코드 / 세자리의 숫자로 이루어짐
      • 1xx : 요청이 수신 됨, 현재 처리 중임을 나타 냄, 주로 서버와 연결상태를 확인하기 위한 용도로 사용
      • 2xx : HTTP 요청이 성공적으로 처리되었음을 나타냄
      • 3XX : Client 가 추가적인 조치를 필요로 할때, 주로 페이지 이동 (redirection)
      • 4xx : client에 오류가 있을때 사용 됨. 잘못된 요청, 인증오류 등에 사용(페이지 없음 ㅡㅡ)
      • 5xx : 서버에 오류가 발생했음을 나타냄, 서버 내부의 오류, 서버의 과부하
      1. Response Headers : 서버가 웹페이지 데이터와 함께 보낸 추가적인 데이터
  3. Response 탭 : 서버에서 브라우저로 반환해준 웹 페이지를 그려주기 위한 데이터
    1. Payload (= 데이터,실제데이터)
      • GET method를 제외하곤 모두 Payload를 보낼 수 있다 -> HTTP에서의 약속

MVC(Model, View, Controller)

MVC란? Model, View, Controller의 약자 소프트웨어 디자인 패턴 중 하나. - MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 각각의 역할을 분리하여코드의 재사용성, 유지보수성을 높이고 개발자들간의 협업을 용이하게 한다 - view,model은 서로의 존재를 모른다. `Model` : 데이터, BIZ 로직 담당 `View` : 사용자 interface 담당 `Controller` : Model과 View 사이의 상호작용을 조절, 제어

MVC 패턴을 사용하는 이유

각 컴포넌트가 서로 분리되어 각자의 역할에 집중할 수 있기 때문에 시스템 결합도를 낮출 수 있따. 또한 유지보수가 용이하고, 중복코드를 제거할 ㅅ ㅜ있으며 애플리케이션의 확장성 및 유연성이 증가한다.

Model (모델)

Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 한다.
처리한 작업의 결과 데이터를 클라이언트에게 응답으로 돌려주어야 하는데, 이 때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model이라고 한다.

View (뷰)

View는 Model을 이용하여 웹 브라우저와 같은 애플리케이션의 화면에 보이는 리소스(Resource)를 제공하는 역할을 한다.

Controller (컨트롤러)

컨트롤러는 클라이언트 측의 요청을 직접적으로 전달받는 엔드포인드(Endpoint)로써 Model과 View의 중간에서 상호작용을 해주는 역할을 한다.

클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후, Model 데이터가 만들어지면 이 Model 데이터를 View로 전달하는 역할을 한다.


Spring MVC 구조

DispatcherServlet

  • HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해 주는 Front Controller(프론트 컨트롤러)이다.

Front Controller : 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리하는 컨트롤러

  1. 클라이언트 요청
  2. 서블릿 컨테이너 요청 받음
  3. 디스패처 서블릿 요청 받은 후 공통 작업 처리
  4. 해당 요청을 처리할 컨트롤러를 찾아 작업 위임

과거에는 URL 매핑을 위해 모든 서블릿을 web.xml에 등록해 주어야 했지만 디스패처 서블릿의 등장으로 web.xml의 역할을 상당히 축소해 줌과 동시에 편리하게 이용할 수 있게 되었다.

DispatcherServlet의 동작 과정

  1. 클라이언트의 요청 Dispatcher Servlet에게 전달.
  2. 요청 정보를 통해 Handler Mapping이 요청을 위임할 컨트롤러 탐색
  3. 요청을 컨트롤러로 위임할 Handler Adapter를 찾아서 전달
  4. Handler Adapter가 컨트롤러로 요청을 위임
  5. 비즈니스 로직을 처리
  6. 컨트롤러가 요청을 처리한 후 반환값을 반환
  7. Handler Adapter가 반환값을 처리
  8. 서버의 응답을 클라이언트에게 전달(응답이 화면이라면 ViewResolver가 화면을 찾아서 반환해준다)

흠 다음에는 web.xml 통해 디스패쳐 서블릿 초기화 하는 법을 알아봐야겠다.

0개의 댓글