MVC 프레임워크 9

Feb 20, 2023

12 mins read

스프링 MVC 기본 기능 - 새로운 프로젝트 생성

  • 이제부터 스프링 MVC의 기본 기능들을 알아보기 위해 새로운 프로젝트를 생성한다.
  • https://start.spring.io 사이트에서 아래와같이 Project, Project Metadata, Dependencies를 세팅하고
    GENERATE를 눌러 기본 프로젝트를 파일로 내려받는다.
  • JSP를 사용하지 않고 Thymeleaf를 사용할거고 내장 서버(톰캣)을 사용할 거기 때문에 war가 아닌 Jar로 선택한다.
    War는 외부 서버에 배포 목적으로 주로 쓰인다.
  • (인프런 수업 듣는중)

springmvc_project_init

  • https://aroong.github.io/posts/1.-servlet1/ 에서 처럼 Gradle 프로젝트를 이클립스에 Import 한다.
  • 생성된 build.gradle.kts를 보면 프로젝트 기본 정보로 선택한 dependencies에 thymeleaf, lombok, spring web이 들어가 있는 걸 확인할 수 있다.
plugins {
	java
	id("org.springframework.boot") version "3.0.2"
	id("io.spring.dependency-management") version "1.1.0"
}

group = "hello"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_17

configurations {
	compileOnly {
		extendsFrom(configurations.annotationProcessor.get())
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
	implementation("org.springframework.boot:spring-boot-starter-web")
	compileOnly("org.projectlombok:lombok")
	annotationProcessor("org.projectlombok:lombok")
	testImplementation("org.springframework.boot:spring-boot-starter-test")
}

tasks.withType<Test> {
	useJUnitPlatform()
}
  • src/main/resources에 index.html 소스를 넣어서 welcome page를 만든다. (앞으로 수업에서 배울 내용)

springmvc_project_import

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<ul>
 <li>로그 출력
 <ul>
 <li><a href="/log-test">로그 테스트</a></li>
 </ul>
 </li>
 <!-- -->
 <li>요청 매핑
 <ul>
 <li><a href="/hello-basic">hello-basic</a></li>
 <li><a href="/mapping-get-v1">HTTP 메서드 매핑</a></li>
 <li><a href="/mapping-get-v2">HTTP 메서드 매핑 축약</a></li>
 <li><a href="/mapping/userA">경로 변수</a></li>
 <li><a href="/mapping/users/userA/orders/100">경로 변수 다중</a></li>
 <li><a href="/mapping-param?mode=debug">특정 파라미터 조건 매핑</a></li>
 <li><a href="/mapping-header">특정 헤더 조건 매핑(POST MAN 필요)</a></li>
 <li><a href="/mapping-consume">미디어 타입 조건 매핑 Content-Type(POST MAN 필요)</a></li>
 <li><a href="/mapping-produce">미디어 타입 조건 매핑 Accept(POST MAN 필요)</a></li>
 </ul>
 </li>
 <li>요청 매핑 - API 예시
 <ul>
 <li>POST MAN 필요</li>
 </ul>
 </li>
 <li>HTTP 요청 기본
 <ul>
 <li><a href="/headers">기본, 헤더 조회</a></li>
 </ul>
 </li>
 <li>HTTP 요청 파라미터
 <ul>
 <li><a href="/request-param-v1?username=hello&age=20">요청 파라미터 v1</a></li>
 <li><a href="/request-param-v2?username=hello&age=20">요청 파라미터 v2</a></li>
 <li><a href="/request-param-v3?username=hello&age=20">요청 파라미터 v3</a></li>
 <li><a href="/request-param-v4?username=hello&age=20">요청 파라미터 v4</a></li>
 <li><a href="/request-param-required?username=hello&age=20">요청 파라미터 필수</a></li>
 <li><a href="/request-param-default?username=hello&age=20">요청 파라미터 기본 값</a></li>
 <li><a href="/request-param-map?username=hello&age=20">요청 파라미터 MAP</a></li>
 <li><a href="/model-attribute-v1?username=hello&age=20">요청 파라미터 @ModelAttribute v1</a></li>
 <li><a href="/model-attribute-v2?username=hello&age=20">요청 파라미터 @ModelAttribute v2</a></li>
 </ul>
 </li>
 <li>HTTP 요청 메시지
 <ul>
 <li>POST MAN</li>
 </ul>
 </li>
 <li>HTTP 응답 - 정적 리소스, 뷰 템플릿
 <ul>
 <li><a href="/basic/hello-form.html">정적 리소스</a></li>
 <li><a href="/response-view-v1">뷰 템플릿 v1</a></li>
 <li><a href="/response-view-v2">뷰 템플릿 v2</a></li>
 </ul>
 </li>
 <li>HTTP 응답 - HTTP API, 메시지 바디에 직접 입력
 <ul>
 <li><a href="/response-body-string-v1">HTTP API String v1</a></li>
 <li><a href="/response-body-string-v2">HTTP API String v2</a></li>
 <li><a href="/response-body-string-v3">HTTP API String v3</a></li>
 <li><a href="/response-body-json-v1">HTTP API Json v1</a></li>
 <li><a href="/response-body-json-v2">HTTP API Json v2</a></li>
 </ul>
 </li>
</ul>
</body>
</html>
  • hello.springmvc패키지의 SpringmvcApplication.java를 Spring Boot Web 서버로 기동 시키고
    http://localhost:8080 로 접속 하면 아래와 같이 웰컴 페이지가 보이게 된다.

springmvc_welcome.PNG