[스프링 부트 공부 일지] 2. 스프링 웹 MVC

2022. 12. 15. 22:04·공부/Spring Boot

HTTP 프로토콜

출처:https://joshua1988.github.io/web-development/http-part1/

 

- HTTP란 서버와 클라이언트 사이의 데이터 전송 프로토콜이다.

- 데이터를 요청(Request)하는쪽이 클라이언트, 데이터를 제공하거나 기능을 처리(Response)하는 쪽을 서버라고 한다.

- 크게 다섯가지의 상태코드를 가진다.

  1. 1XX : 임시응답, 현 상태의 정보를 응답하는데 사용

  2. 2XX : 응답 성공, 요청 및 처리가 정상적으로 이루어졌다는 의미로 사용

  3. 3XX : 클라이언트 요청을 처리하는데 추가적인 작업이 필요하다는 의미(URL 변경 안내 등)

  4. 4XX : 클라이언트가 전송한 요청이 에러가 있음을 의미(인가되지 않음, 잘못된 요청 등)

  5. 5XX : 서버가 요청을 처리하는 중 에러가 발생했음을 의미

 

- 비연결성(Connectionless)와 무상태(Stateless)의 특징을 가진다.

  1. 비연결성 : HTTP 프로토콜은 서버와 클라이언트가 커넥션을 유지할 필요가 없다.

  2. 무상태 : 이전 요청과 상관없이 모든 요청은 독립적으로 처리된다.

 

스프링 웹 MVC 프레임워크

- MVC 패턴 : 웹 어플리케이션 구조를 역할에 따라 3가지로 분류하여 수행하도록 하는 패턴

출처:https://ko.wikipedia.org/wiki

 

1. Controller : 사용자의 요청을 받아 어떻게 처리할지 결정한다.

2. Model : 컨트롤러에서 받은 사용자 요청 데이터나, DB에서 가져온 데이터를 처리한다. 비즈니스 로직을 담당한다.

3. View : 처리된 결과를 모델에서 받아와 사용자에게 적절한 형태로 반환한다.

 

Dispatcher Servlet

출처:http://springmvc.egloos.com/v/504151

 

- 서블릿이란 클라이언트의 요청을 처리하고 그 결과를 반환해주는 자바 웹 프로그래밍 기술이다.

- 스프링은 이러한 클라이언트의 요청을 처리하기 위해 Dispatcher Servlet 컴포넌트를 사용한다.

- DispatcherServlet은 프런트 컨트롤러 패턴으로 디자인 되어있다. 프런트 컨트롤러 패턴이란,

프런트 컨트롤러가 모든 사용자의 요청을 받고 이 요청을 분석해 적절한 컴포넌트(컨트롤러들)에게 전달한다.

 

- HandlerMapping은 @RequestMappin 애너에티션 속 정보를 로딩하여,

HTTP 요청 메세지를 추상화한 HttpServletRequest 객체의 내용에 따라 적절한 컨트롤러로 전달한다.

 

Spring Boot 설정

- 스프링 부트는 내부에 WAS를 함께 제공하여 별도로 WAS를 설치하지 않고 java 실행 명령으로만으로도 서버를 구동시킬 수 있다.

- 스프링 부트 프레임워크로 웹 어플리케이션을 설정하려면 다음 두가지만 작업하면된다.

1. spring-boot-starter-web 의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-web'

 

build.gradle의 dependencies에 위와 같은 의존성을 추가해준다.

 

2. application.yml에 서버 포트 설정

server:
  port: 18000 // 포트 번호 설정
  tomcat:
    connection-timeout: 30s // 서버와 클라이언트간 커넥션 지속 시간 설정
    threads: // 톰캣 서버의 스레드 풀 최대 최소 값 설정
      max: 100
      min-spare: 100
    accesslog: // 톰캣 서버의 액세스 로그 관련 설정
      enabled: true
      suffix: log
      prefix: access_log
      rename-on-rotate: true

 

REST API

- REST API는 다음 세가지 요소로 구성된다.

  1. 리소스(Resource) : HTTP URI("/members/new")

  2. 행위(Verb) : HTTP METHOD("GET, POST, PUT, DELETE")

  3. 표현(Representation) : HTTP 메시지(JSON 데이터)

 

- REST API 설계시 다음 기본 규칙을 준수해야 한다.

  1. 리소스 이름은 가능한 동사보다 명사를 사용한다.

  2. 리소스는 계층적 구조를 가질 수 있다. 만약 가진다면 복수 형태를 사용한다.("/members/{uniqueId}")

  3. 행위는 GET, POST, PUT, DELETE를 기본으로 사용하며, 때에 따라 PATCH를 사용한다.

    가. GET : 리소스의 정보를 조회하는 메서드

    나. POST : 클라이언트의 데이터를 바탕으로 리소스를 생성한다.

    다. PUT : 정의된 리소스를 전송받은 데이터로 전체 수정한다.

    라. DELETE : 정의된 리소스를 삭제한다.

    마. PATCH : 정의된 리소스의 일부 데이터를 수정한다.

 

- 설계 및 구현에 다음 세가지 특성을 지켜야 한다.

  1. 무상태성 : HTTP 프로토콜의 무상태성을 지켜야 한다.

  2. 일관성 : API의 리소스나 응답 메세지를 설계 할 때, 일관된 규칙과 반복되는 패턴을 사용하여야 한다.

  3. 멱등성 : 같은 API를 여러번 실행하여도 같은 결과를 도출해야 한다.

저작자표시 비영리 변경금지 (새창열림)

'공부 > Spring Boot' 카테고리의 다른 글

[스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (3)  (0) 2022.12.17
[스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (2)  (0) 2022.12.16
[스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (1)  (0) 2022.12.16
[스프링 부트 공부 일지] 1. 스프링 애플리케이션  (0) 2022.12.15
[스프링 부트 공부 일지] 0. 공부를 시작하며  (0) 2022.12.13
'공부/Spring Boot' 카테고리의 다른 글
  • [스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (2)
  • [스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (1)
  • [스프링 부트 공부 일지] 1. 스프링 애플리케이션
  • [스프링 부트 공부 일지] 0. 공부를 시작하며
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    리액트
    스프링 부트
    예외
    chat GPT
    react
    클러스터
    OpenAI API
    스프링부트
    티스토리챌린지
    인스타그램
    백준
    spring boot
    REST API
    쿠버네티스
    클론코딩
    Entity
    mapstruct
    MSA
    오블완
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[스프링 부트 공부 일지] 2. 스프링 웹 MVC
상단으로

티스토리툴바