스트링 부트3 자바 백엔드 개발 입문 1~2장

cse 23·2024년 5월 1일
0

1장. 스프링 부트 시작하기

스프링 부트란?

자바 웹 프로그램을 더 쉽고 빠르게 만들 수 있도록 도와주는 도구입니다.

  • 복잡한 개발 환경 설정을 간소화
  • 내장 웹 서버(Tomcat) 제공 → 별도 설치 없이 실행 가능

프로젝트에 사용된 주요 기술

도구설명
H2 Database간단한 테스트용 메모리 기반 데이터베이스
Mustache화면(HTML)을 구성하기 위한 템플릿 엔진
Spring Data JPA데이터베이스를 더 편하게 사용할 수 있도록 도와주는 ORM 도구
JDK (Java Development Kit)자바 코드를 컴파일하고 실행하기 위한 개발 도구

스프링 부트 실행과 접속

  • localhost:8080
    → 내 컴퓨터(localhost)의 8080번 포트로 접속하라는 의미
    → 스프링부트가 기본적으로 8080포트를 사용함

  • hello.html
    → 예제에서 서버에 요청하는 정적 HTML 파일

웹 서비스의 동작 원리

  • 클라이언트: 서비스를 이용하는 프로그램 또는 사용자 (ex. 브라우저)
  • 서버: 서비스를 제공하는 프로그램 또는 시스템
  • Tomcat: 스프링부트가 사용하는 웹 애플리케이션 서버 (WAS)
    → 8080 포트에서 실행됨

아래는 Velog에 올리기 좋은 2장 정리입니다. MVC 개념과 실습 내용을 깔끔하게 정돈해 두었어요:


2장. MVC 패턴 이해와 실습

doc + tap: 기본 코드 자동 완성

IntelliJ 등 개발 도구에서 doc 입력 후 Tab 키를 누르면 JavaDoc 주석 자동 생성


MVC 패턴이란?

MVC는 웹 애플리케이션의 구조를 모델(Model), 뷰(View), 컨트롤러(Controller)로 나누는 디자인 패턴입니다.

구성 요소역할
Model데이터를 관리
View사용자에게 보여지는 화면
Controller클라이언트 요청을 받아서 처리하고, 모델과 뷰를 연결
  • MVC를 사용하면 코드의 역할이 명확해지고 유지보수가 쉬워집니다.

View Template이란?

  • 웹 페이지를 하나의 틀(템플릿)로 만들어 놓고, 여기에 변수를 삽입해 다양한 내용을 동적으로 표현
  • HTML 기반 뷰 파일에서 Mustache, Thymeleaf 같은 템플릿 엔진 사용

Controller는 하나의 패키지로 관리

  • 컨트롤러 클래스는 @Controller 또는 @RestController 어노테이션 사용
  • URL 요청을 받아 처리한 후 뷰를 반환

Model 객체는 컨트롤러 메서드에서 사용

@GetMapping("/hello")
public String hello(Model model) {
    model.addAttribute("name", "Spring");
    return "hello"; // → hello.mustache
}

서버의 역할

서버는 다음 3요소가 유기적으로 동작합니다:

  • 모델: 데이터 관리
  • : 사용자 인터페이스
  • 컨트롤러: 로직 처리 및 뷰 반환

레이아웃이란?

  • 레이아웃: 화면 요소(헤더, 본문, 푸터 등)를 어떻게 배치할지 정하는 구조
  • 샌드위치 구조:
    • 상단: 헤더 (메뉴/네비게이션)
    • 본문: 콘텐츠
    • 하단: 푸터 (사이트 정보, 링크 등)

부트스트랩(Bootstrap)

  • 웹페이지를 빠르게 만들 수 있도록 만든 HTML/CSS/JS 템플릿 프레임워크
  • 버튼, 카드, 폼, 그리드 등 자주 쓰이는 구성요소를 제공

MVC 실행 흐름

  1. 사용자(브라우저)가 특정 URL 요청을 보냄
  2. Controller가 요청을 받아서 처리
  3. 처리 결과를 Model에 담고 View Template을 반환
  4. View Template은 Model의 데이터를 활용해 최종 HTML 페이지 생성
  5. 사용자에게 HTML 결과 반환
  • 뷰 템플릿에서 변수를 사용하려면 Model에 등록된 값이 있어야 함
  • 컨트롤러에서 반환하는 뷰 이름은 확장자(.html 등)를 포함하지 않음

0개의 댓글