WIL 03

·2023년 4월 16일
0

이번 WIL의 키워드 : HTTP, MVC 패턴

HTTP

하이퍼텍스트 전송 프로토콜. 인터넷에서 데이터를 주고받기 위한 통신 규약.

동작 : 클라이언트(사용자)가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작된다.

  • 요청 : client -> server
  • 응답 : server -> client

HTTP Method

  • GET : 자료를 요청할 때 사용
  • POST : 서버에 데이터를 제출할 때 사용. 데이터를 Body에 담아서 서버로 전송
  • PUT : 자료 모두 수정
  • PATCH : 자료 일부 수정
  • DELETE : 자료의 삭제

요청(request)구조

  • Start Line(첫줄) : 요청 메소드, 요청 URL, HTTP 버전 정보로 구성된다.
    +Headers(두 번째 줄부터) : 클라이언트가 서버에게 전달하는 추가 정보를 담고 있다.
  • Body(헤더에서 다음) : HTTP 요청과 관련된 데이터를 담고 있다. 필수 요소는 아니며, 요청에 따라 전송되지 않을 수도 있다.

응답(response)상태코드(HTTP Status Code)

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다. ex)200
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다. ex)404
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다. ex)500

응답(response)구조

  • Start Line
  • Headers
  • Body

API

애플리케이션 프로그램 인터페이스.

클라이언트와 서버가 HTTP를 통해 서로 통신을 하며 기능을 동작 시키는데 이때 서로간의 정해진 통신 규칙.

URI : 인터넷에서 특정한 정보 자원을 나타내는 고유 식별자로, 인터넷 자원의 위치나 이름을 나타냅니다.
URL : 인터넷에서 특정한 자원의 위치를 나타내는 식별자 입니다. URL 은 프로토콜, 도메인 이름, 포트 번호, 경로 등으로 구성됩니다.

=> URI 는 리소스를 나타내는 고유한 식별자를 의미하며, URL 은 리소스의 위치를 나타내는 식별자

MVC

소프트웨어 디자인 패턴 중 하나로, 코드의 재사용성과 유지보수성을 높이고 개발자들 간의 현업을 용이하게 해줍니다.

Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고 그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달한다.

구성요소(Model - View - Controller)

  • Model은 데이터와 비즈니스 로직을 담당이다.
  1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 함
  2. 뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 함
  3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
  • View는 사용자 인터페이스를 담당이다.
  1. 모델이 가지고 있는 정보를 따로 저장해서는 안됨
  2. 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 함
  3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
  • Controller는 Model과 View 사이의 상호작용을 조정하고 제어이다.
  1. 모델이냐 뷰에 대해서 알고 있어야 함
  2. 모델이나 뷰의 변경을 모니터링해야 함

MVC장점
1. 여러 개발자가 역할을 나눠서 모델, 컨트롤러, 뷰를 동시에 개발할 수 있습니다.
예를 들어 Java개발자가 모델과 컨트롤러를 개발하고, UI 개발자가 뷰부분을 담당하여 개발할 수 있습니다.
이를 통해 개발시간 단축과 역할분리가 가능합니다.

  1. 중복코드를 없앨 수 있고, 확장성있고 유연한 코딩이 가능합니다.
    예를 들어, Java 코드로 로직을 설계한것이 웹으로 배포할 내용과, 앱으로 배포할 내용이 있다면 View 부분만 바꿔서 코딩할 수 있습니다.

  2. 각 컴포넌트별로 나눠져 있어 디버깅과 테스트가 용이 합니다.

MVC단점
1. 규모가 커질수록 파일이 많아져 복잡해질 수 있습니다.
하나의 새로운 기능을 구현하려면 Model, View, Controller를 각각 따로 만들어서 너무 많은 파일이 생성될 수 있습니다.

  1. 개발자 수가 적으면 오히려 유지보수 시간이 길어질 수 있습니다.
    하나의 파일에서 모든 로직을 처리하도록 하도록 하면 해당 파일만 수정하면 되나, MVC 패턴으로 개발을 하면 여러 파일을 왔다갔다 하면서 수정해야하기 때문에 유지보수 개발하는데 시간이 더 거릴 수 있습니다.

Spring의 MVC

서브릿(Servlet)

  • Java 언어로, 자바를 사용하여 웹을 만들기 위해 필요한 기술.
  • 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
  • Servlet은 클라이언트로부터 요청을 받아서 처리하고, 응답을 생성하여 클라이언트에게 전송합니다.
    ex) 사용자가 로그인을 하려고 할 때, 사용자는 아이디와 비밀번호를 입력 후 로그인 버튼을 누름 - 이때 서버는 클라이언트의 아이디와 비밀번호를 확인하고 다음 페이지를 띄워주는 역할을 수행.
  • Servlet은 HTTP 요청과 응답에 대한 처리를 담당하며, Java EE(Enterprise Edition) 플랫폼의 일부로 제공됩니다.
  • Java Thread를 이용하여 동작한다.
  • MVC 패턴에서 Controller로 이용된다.
  • 일반적으로 웹 애플리케이션 서버에서 실행되며, 템플릿 엔진과 함께 웹 애플리케이션을 개발하는 경우가 많습니다.
  • 템플릿 엔진은 웹을 동적으로 처리하기 위해 만들어진 것으로 JSP(Java Server Pages), Thymeleaf 등이 있습니다.

톰캣(Tomcat)

Servlet과 MVC

  • Servlet을 이용하면 Controller 역할을 수행할 수 있습니다.
    Servlet은 클라이언트의 요청을 처리하고, 요청에 따른 적절한 데이터를 Model에서 가져와서 View에게 전달하는 역할을 할 수 있습니다.(아까 예시 처리 과정에서 Servlet이 Controller 역할을 수행)
  • 템플릿 엔진을 이용하여 View 역할을 수행할 수 있습니다. 템플릿 엔진은 HTML과 Java 코드가 결합된 형태로 웹 페이지를 생성할 수 있는 기술입니다. 템플릿 엔진은Model에서 가져온 데이터를 HTML 형식으로 출력하는 역할을 수행합니다.

=> Servlet과 MVC 패턴을 함께 사용하면, 웹 애플리케이션의 구조를 명확하게 설계할 수 있고, 각각의 역할을 분리하여 개발 및 유지보수를 보다 쉽게 할 수 있습니다.


0개의 댓글