Spring 입문 - Part 2 : 스프링 웹 개발 기초

2025. 3. 24. 22:39·Spring

강의명 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

지식공유자 : 김영한

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

 

[지금 무료]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 | 김영한 - 인프런

김영한 | , 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 첫 번째 강의입니다. 우아한형제들 최연소 기술이

www.inflearn.com


정적 컨텐츠

정적 컨텐츠 

스프링 부트의 정적 컨텐츠 기능이다.

  • resources/static/hello-static.html 경로로 hello-static.html 파일을 생성한다.
  • http://localhost:8080/hello-static.html을 웹 브라우저에서 검색하여 결과를 확인할 수 있다.

 

http://localhost:8080/hello-static.html을 웹 브라우저로 검색했을 때, 스프링 컨테이너에서 hello-static 관련 컨트롤러가 없으므로, resources : static/hello-static.html을 찾아서 hello-static.html을 웹 브라우저에 바로 표시한다.

https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-static-content

 

Spring Boot Features

Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closing the application context and is performed in the earliest

docs.spring.io

위의 링크를 통해 정적 컨텐츠(Static Content)에 대한 자료를 확인할 수 있다.

MVC와 템플릿 엔진

 

MVC

 

MVC

  • Model
  • view
  • controller

 

controller에 위와 같은 코드를 작성한다.

 

@GetMapping 어노테이션을 통해 "hello-mvc"라는 url이 입력되었을 때 현재 함수가 실행되도록 한다.

 

@RequestParam을 통해 name을 파라미터로 입력받으면 name의 값을 model.addAttribute 함수를 통해 전달한다.

 

이후 return "hello-template"으로 hello-template.html파일로 이동한다.

 

@RequestParam(value = "name", required = false) 와 같이 작성하면 name을 입력받지 않아도 된다.

(default 옵션은 required = true이다)

 

${name}이 입력받은 name으로 치환되어 웹 브라우저에 표시된다.

 

http://localhost:8080/hello-mvc?name=spring를 입력했을 때 아래와 같은 화면을 얻을 수 있다.

name=spring에서 spring 대신 다른 문자열을 입력하면 해당 문자열을 표시하게 된다.

 

템플릿 엔진

 

http://localhost:8080/hello-mvc을 웹 브라우저에 입력하면 내장 톰켓 서버를 거쳐 스프링 컨테이너로 이동한다.

 

스프링 컨테이너에서 helloController에 hello-mvc와 관련된 컨트롤러가 존재하므로, 해당 컨트롤러가 반환하는 hello-template에 name값을 전달한다.

 

viewResolver가 화면을 찾아서 처리한다. 정적 컨텐츠와는 달리 Thymeleaf 템플릿 엔진의 처리를 통해 변환된 HTML을 웹 브라우저에 넘겨준다. (${name)이 정적 컨텐츠에서는 그대로 넘어가지만, Thymeleaf 템플릿 엔진의 처리를 거치면 spring으로 변환되어 넘어간다.)

API

 

String

 

 

controller에 위와 같은 코드를 작성한다.

 

 

http://localhost:8080/hello-string?name=spring을 웹 브라우저에 입력하면 위와 같은 결과를 얻을 수 있다.

 

 

페이지 소스 보기를 통해 소스를 확인했을 때, html문서가 아니라 return의 결과가 그대로 나타남을 확인할 수 있다.

 

@ResponseBody의 Body는 HTML의 body가 아니라, http 프로토콜의 Body를 의미한다.

@ResponseBody를 사용할 경우 viewResolver를 사용하지 않는다.

 

 

API

 

helloController 클래스 내부에 static class Hello를 정의한다.

 

 

마찬가지로 controller에 위와 같은 코드를 작성한다.

 

http://localhost:8080/hello-api?name=spring을 웹 브라우저에 검색하면 위와 같은 결과를 얻을 수 있다.

 

@ResponseBody를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다.

josn >> key : value 로 구성된 형식

spring에서는 xml을 사용할 수도 있으나 기본적으로 json으로 설정되어있다.

 

 

  • @ResponseBody를 사용
    • HTTP의 BODY에 문자 내용을 직접 반환
    • viewResolver 대신에 HttpMessageConverter 가 동작
    • 기본 문자처리: StringHttpMessageConverter
    • 기본 객체처리: MappingJackson2HttpMessageConverter
    • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음

클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter 가 선택된다.

'Spring' 카테고리의 다른 글

Spring 입문 - Part 3 : 회원 관리 예제 - 백엔드 개발  (0) 2025.03.26
Spring 입문 - Part 1 : 프로젝트 환경 설정  (0) 2025.03.22
'Spring' 카테고리의 다른 글
  • Spring 입문 - Part 3 : 회원 관리 예제 - 백엔드 개발
  • Spring 입문 - Part 1 : 프로젝트 환경 설정
dev-cyan
dev-cyan
  • dev-cyan
    Cyan Archive
    dev-cyan
  • 전체
    오늘
    어제
    • 분류 전체보기 (9)
      • 멋쟁이사자처럼 (5)
        • CO:SSION (4)
        • BE:SSION(Django) (1)
      • Spring (3)
      • Docker (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-cyan
Spring 입문 - Part 2 : 스프링 웹 개발 기초
상단으로

티스토리툴바