Skip to content
Server Plugin

FreeMarker

필수 의존성: io.ktor:ktor-server-freemarker

코드 예시: freemarker

네이티브 서버
Ktor는 Kotlin/Native를 지원하며 추가 런타임이나 가상 머신 없이 서버를 실행할 수 있게 합니다.
지원: ✖️

Ktor를 사용하면 FreeMarker 템플릿을 애플리케이션 내 뷰로 FreeMarker 플러그인을 설치하여 사용할 수 있습니다.

의존성 추가

FreeMarker을(를) 사용하려면 빌드 스크립트에 ktor-server-freemarker 아티팩트를 포함해야 합니다:

Kotlin
Groovy
XML

FreeMarker 설치

애플리케이션에 FreeMarker 플러그인을 설치하려면, 지정된

모듈
모듈을 사용하면 경로를 그룹화하여 애플리케이션을 구조화할 수 있습니다.
install 함수에 전달하면 됩니다. 아래 코드 스니펫은 FreeMarker을(를) 설치하는 방법을 보여줍니다.

  • ... embeddedServer 함수 호출 내부.
  • ... 명시적으로 정의된 module 내부, 이는 Application 클래스의 확장 함수입니다.
kotlin
kotlin

install 블록 내에서 FreeMarker 템플릿 로드를 위한 원하는 TemplateLoader구성할 수 있습니다.

FreeMarker 구성

템플릿 로드 구성

템플릿을 로드하려면 원하는 TemplateLoader 유형을 templateLoader 속성에 할당해야 합니다. 예를 들어, 아래 코드 스니펫은 Ktor가 현재 클래스패스를 기준으로 templates 패키지에서 템플릿을 찾을 수 있도록 합니다:

kotlin
import freemarker.cache.*
import io.ktor.server.application.*
import io.ktor.server.freemarker.*

fun Application.module() {
    install(FreeMarker) {
        templateLoader = ClassTemplateLoader(this::class.java.classLoader, "templates")
    }
}

응답으로 템플릿 전송

resources/templatesindex.ftl 템플릿이 있다고 가정해 보세요:

html
<html>
    <body>
        <h1>Hello, ${user.name}!</h1>
    </body>
</html>

사용자 데이터 모델은 다음과 같습니다:

kotlin
data class User(val id: Int, val name: String)

지정된 경로에 템플릿을 사용하려면, 다음과 같이 FreeMarkerContentcall.respond 메서드에 전달합니다:

kotlin
get("/index") {
    val sampleUser = User(1, "John")
    call.respond(FreeMarkerContent("index.ftl", mapOf("user" to sampleUser)))
}