2023.08.25 - Spring 입문 (1주차)

mjjin·2023년 8월 25일
1

프로젝트 생성


Web -> Spring Web
Developer Tools -> Lombok


설정 -> Auto Import
Add unambiguous imports on the fly (자바의 외부 패키지를 자동으로 임포트 해주는 기능) 체크
Optimize imports on the fly (사용하지 않는 라이브러리를 쉽게 지워주는 기능) 체크

설정 -> General

마우스 휠로 확대나 축소를 편하게 해주는 기능

Gradle

빌드 자동화 시스템

빌드란 ?
우리가 작성한 소스 코드를 실행 가능한 결과물로 만드는 일련의 과정

우측의 Gradle > Tasks > build > build를 클릭하면 빌드가 실행된다.

빌드된 파일은 build > libs에서 확인 할 수 있다.

build.gradle

스크립트 작성시
소스코드를 빌드하거나, 라이브러리들의 의존성을 쉽게 관리할 수 있다.

dependencies에서 라이브러리들을 관리할 수 있다.

설치한 라이브러리 확인하기

서버란?

네트워크

네트워크란 여러대의 컴퓨터 혹은 장비가 서로 연결이 되어서
서로 정보를 주고 받을 수 있게 도와주는 기술으로
컴퓨터, 라우터, 스위치, 허브 등의 장비들이 각각의 역할을 수행하여 정보를 주고 받는다.
서로 정보를 주고 받기 위해서는 IP 주소, 서브넷 마스크, 게이트웨이 등의 정보를 설정하고
네트워크 프로토콜을 이용하여 통신을 하게 된다.

Client와 Server

사용자는 브라우저를 이용하여 서버에 정보를 요청하고 응답을 받는다.
이 때, 사용자의 요청이 서버에 도달하기 위해서는 해당 서버의 정보가 필요하며
사용자의 요청이 해당 서버에 정확하게 도달할 수 있게 제공되는 정보가 IP주소이다.

Web Server

인터넷을 통해 HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해주는 통신을 하는 일종의 컴퓨터

  1. 브라우저를 통해 HTTP Request로 웹사이트를 웹서버에 요청
  2. 웹서버는 요청을 승인한 뒤, HTTP Response를 통해 웹사이트 데이터를 브라우저에 전송
  3. 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려낸다.
  • 기본적으로 브라우저가 웹 서버에 요청을 할 때는 항상 GET method로 요청하게 된다.

API(application programming interface)

다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의

  • RESTful API
    REST(Representational State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.
    REST는 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌으며
    REST 아키텍처 스타일을 따르는 API를 REST API라고 한다.
    그리고 REST 아키텍처를 구현하는 웹 서비스를 SESTful 웹 서비스라고 한다.

예를 들어 API의 리소스 식별자를 중복 없이 고유하게 만들고
해당 API 에 적절하게 HTTP 메서드를 사용했다면, RESTful하게 설계했다고 볼 수 있다.

HTTP 상태 코드

브라우저에서 F12를 누르면 개발자 도구로 들어갈 수 있다.
개발자 도구에서 Network를 살펴보면
서버에서 받아온 데이터 목록들이 보여지는데,

그 중 Headers를 누르면 Status Code를 확인 할 수 있다.
HTTP 상태 코드는 3자리 숫자로 이루어져 있으며
첫 번째 자리 숫자는 상태 코드의 분류를 나타내는 용도로 사용되며,
나머지 두 자리는 세부적인 정보를 나타낸다.

  • 1XX (informational)
    • 1xx 상태코드는 요청이 수신 되었으며, 처리가 계속 되고 있음을 나타낸다.
    • 주로 웹 브라우저와 같은 클라이언트가 서버와의 연결 상태를 확인하기 위해 사용된다.
  • 2XX (Successful)
    • 2xx 상태코드는 클라이언트의 요청이 성공적으로 처리 되었음을 나타낸다.
    • 가장 많이 사용되는 상태 코드는 200이다.
    • 200은 클라이언트가 요청한 데이터가 서버에서 제공됨을 의미한다.
  • 3XX (Redirection)
    • 3xx 상태코드는 클라이언트가 추가적인 조치를 취해야 함을 나타낸다.
    • 이 상태코드는 주로 페이지 이동, 리다이렉션 등에 사용된다.
  • 4XX (Client Error)
    • 4xx 상태코드는 클라이언트에 오류가 있음을 나타낸다.
    • 주로 클라이언트의 잘못된 요청, 인증 오류 등에 사용된다.
    • 404 코드가 주로 사용되며 이는 클라이언트가 요청한 페이지나 리소스를 서버에서 찾을 수 없음을 의미한다.
  • 5XX (Server Error)
    • 5xx 상태코드는 서버에 오류가 발생했음을 나타낸다.
    • 주로 서버의 오류, 서버 과부하 등에 사용된다.
    • 가장 많이 사용되는 상태 코드는 500이며, 서버 내부 오류가 발생함을 의미한다.

Lombok

필수적으로 필요한 메서드/생성자 등을 자동 생성해주는 라이브러리

사용법

@Getter / @Setter : 자동으로 게터와 세터를 생성해준다.
@AllArgsConstructor / @NoArgsConstructor : 생성자를 생성해준다.
@RequiredArgsConstructor : final 제어자가 붙은 필드를 파라미터로 가진 오버로딩된 생성자를 만들어준다.

application.properties


경로 : src > main > resources

Spring과 관련된 설정을 할 때 사용되는 파일

  • 자동으로 설정되고 있는 설정 값을 쉽게 수정할 수 있다.
  • DB연결을 위한 DB의 정보를 제공할 때에도 사용된다.

ex) server.port = 8081 작성 시, 포트를 8081로 접속한다.

Spring MVC

MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나이다

MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여
각각의 역할을 분리한다.

Model

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

View

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

Controller

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

Servlet

자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 사양

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

0개의 댓글