[Spring Project] 스프링 부트 정적 컨텐츠와 Welcome Page 동작 원리

2025. 3. 26. 17:22·Back end/Spring Project
반응형

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

스프링 부트는 src/main/resources/static/ 디렉터리에 위치한 정적 HTML, CSS, JavaScript, 이미지 등의 파일을 자동으로 제공하는 기능을 갖추고 있습니다. 이를 통해 별도의 설정 없이도 정적 웹 페이지를 쉽게 배포할 수 있습니다. 예를 들어, static/index.html 파일을 추가하면 애플리케이션 실행 시 기본 Welcome Page로 동작합니다.

 

index.html

<!DOCTYPE HTML>
<html>
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>

위와 같이 index.html을 static 폴더에 두면, 사용자가 http://localhost:8080/로 접근할 때 자동으로 해당 파일이 응답됩니다.

 


2. 정적 컨텐츠와 컨트롤러의 우선순위

스프링 부트는 요청이 들어왔을 때 다음과 같은 우선순위로 처리를 수행합니다.

  1. 컨트롤러 매핑 확인 : @Controller 혹은 @RestController에 해당하는 매핑이 존재하는지 확인합니다.
  2. 정적 컨텐츠 확인 : static/, public/, resources/ 등의 정적 파일 위치에서 요청 URL과 일치하는 파일이 있는지 확인합니다.
  3. 404 에러 반환 : 위 두 가지 방식으로도 요청을 처리할 수 없을 경우, 404 에러를 반환합니다.

예를 들어, 아래와 같은 컨트롤러와 home.html이 존재한다고 가정해 보겠습니다.

HomeController.java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    public String Home(){
        return "home";
    }
}

home.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
    <div>
        <h1>Hello Spring</h1>
        <p>회원 기능</p>
        <p>
            <a href="/members/new">회원 가입</a>
            <a href="/members">회원 목록</a>
        </p>
    </div>
</div> <!-- /container -->
</body>
</html>
 

이 경우, static/index.html이 존재하더라도 컨트롤러가 우선순위가 높기 때문에 home.html이 응답됩니다.


정리

  • static/index.html을 배치하면 Welcome Page 기능을 제공한다.
  • 컨트롤러가 존재하면 정적 파일보다 우선적으로 실행된다.
  • 정적 컨텐츠를 우선적으로 제공하려면 컨트롤러에서 해당 요청을 처리하지 않도록 해야 한다.
  • 설정을 변경하여 정적 파일 경로를 특정 패턴으로 한정할 수도 있다.

참고

Spring Boot Features

 

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

 

반응형

'Back end > Spring Project' 카테고리의 다른 글

[Spring Project] JPA(Java Persistence API) - 사용 이유부터 설정 방법까지  (0) 2025.04.25
[Spring Project] 반복되는 JDBC 코드, JdbcTemplate으로 깔끔하게 정리하기  (0) 2025.04.24
Swagger2 사용하여 RESTful API 문서 자동화하기 (Feat.egovframework 전자정부프레임워크)  (0) 2023.02.13
[Spring Project] 이클립스 maven repository 경로 변경  (0) 2022.04.13
[Spring Project] lombok 라이브러리 설치  (0) 2021.08.13
'Back end/Spring Project' 카테고리의 다른 글
  • [Spring Project] JPA(Java Persistence API) - 사용 이유부터 설정 방법까지
  • [Spring Project] 반복되는 JDBC 코드, JdbcTemplate으로 깔끔하게 정리하기
  • Swagger2 사용하여 RESTful API 문서 자동화하기 (Feat.egovframework 전자정부프레임워크)
  • [Spring Project] 이클립스 maven repository 경로 변경
Kim-SooHyeon
Kim-SooHyeon
개발일기 및 알고리즘, 블로그 운영에 대한 글을 포스팅합니다. :) 목표: 뿌리 깊은 개발자 되기
    반응형
  • Kim-SooHyeon
    soo_vely의 개발로그
    Kim-SooHyeon
  • 전체
    오늘
    어제
    • 분류 전체보기 (255) N
      • 알고리즘 (108)
        • 자료구조 (3)
        • Java (104)
        • Python (1)
      • Back end (71) N
        • Spring Project (28) N
        • Java (21)
        • API (1)
        • Python (0)
        • Django (3)
        • Linux (1)
        • 서버 (2)
        • 에러로그 (11)
        • 부스트 코스 (1)
      • Front end (9)
        • HTML, CSS (4)
        • JavaScript (4)
        • JQuery (0)
      • 기타 프로그래밍 (4)
        • Android Studio (1)
        • Arduino (2)
        • Azure Fundamental(AZ-900) (1)
      • 개발도구 (24) N
        • IntelliJ (2) N
        • Git (12)
        • SVN (0)
        • Eclipse (2)
        • 기타 Tool (8)
      • Database (16)
        • Oracle (10)
        • MySQL (0)
        • H2 Database (3)
        • ORM & JPA (1)
      • 자격증 (10)
        • 컴활 1급 (7)
        • 컴활 2급 (2)
        • SQLD (1)
      • 기타 (13)
        • 블로그 운영 (6)
        • 문서 (1)
        • 기타 (6)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    solved.ac
    오라클
    1차원 배열
    springboot
    백준
    github
    jpa
    구현
    for문
    알고리즘
    spring
    배열
    백준알고리즘
    단계별풀기
    문자열
    Oracle
    BOJ
    java
    Git
    백준 자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kim-SooHyeon
[Spring Project] 스프링 부트 정적 컨텐츠와 Welcome Page 동작 원리
상단으로

티스토리툴바