[kotlin] Ktor HTML 라이브러리 데이터베이스 연동

Kotlin은 Ktor를 이용하여 웹 애플리케이션을 빠르고 쉽게 개발할 수 있는 강력한 옵션을 제공합니다. Ktor를 사용하면 HTML 라이브러리를 통해 웹 페이지를 렌더링하고 데이터베이스를 효과적으로 연동할 수 있습니다.

이번 블로그에서는 Ktor를 사용하여 HTML 라이브러리를 활용하고 데이터베이스를 연동하는 방법을 살펴보겠습니다.

1. Ktor 프로젝트 설정

우선, Ktor 프로젝트를 설정합니다.

import io.ktor.application.*
import io.ktor.features.*
import io.ktor.html.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import kotlinx.html.*

fun Application.main() {
    install(DefaultHeaders)
    install(CallLogging)
    install(Routing) {
        get("/") {
            call.respondHtml {
                head {
                    title("Ktor HTML Example")
                }
                body {
                    h1 {
                        +"Welcome to Ktor HTML Example"
                    }
                    p {
                        +"This is a sample HTML page generated using Ktor"
                    }
                }
            }
        }
    }
}

fun main() {
    val server = embeddedServer(Netty, port = 8080, host = "0.0.0.0") {
        main()
    }
    server.start(wait = true)
}

위 코드는 Ktor를 초기화하고 기본적인 HTML 페이지를 렌더링하는 예제입니다.

2. 데이터베이스 연동

Ktor를 사용하여 데이터베이스를 연동하려면 Exposed 라이브러리를 활용할 수 있습니다.

import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.SchemaUtils
import org.jetbrains.exposed.sql.transactions.transaction

fun initDatabase() {
    Database.connect("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;", driver = "org.h2.Driver")
    transaction {
        SchemaUtils.create ( /* Define your table here */ )
    }
}

위 코드에서는 H2 데이터베이스를 사용하고, Exposed를 이용하여 데이터베이스 스키마를 초기화합니다.

3. HTML과 데이터베이스 연동

Ktor를 사용하여 HTML 페이지를 렌더링하고 데이터베이스의 정보를 표시하려면 다음과 같이 작성할 수 있습니다.

get("/users") {
    val users = transaction {
        // 데이터베이스에서 사용자 정보를 가져옴
    }
    call.respondHtml {
        head {
            title("User List")
        }
        body {
            h1 {
                +"User List"
            }
            ul {
                users.forEach {
                    li {
                        +it.userName
                    }
                }
            }
        }
    }
}

위 코드에서는 /users 엔드포인트를 통해 데이터베이스에서 사용자 정보를 가져와 HTML 페이지에 표시하는 예제입니다.

마무리

이번 포스트에서는 Ktor를 사용하여 HTML 라이브러리를 활용하고 데이터베이스를 연동하는 방법을 소개했습니다. Ktor를 사용하여 강력하고 효율적인 웹 애플리케이션을 개발할 수 있으며, HTML 라이브러리와 데이터베이스를 연동함으로써 더욱 다양한 기능을 제공할 수 있습니다. 기타 Ktor 및 Exposed 라이브러리의 다양한 기능에 대해 더 알고 싶다면 해당 문서를 참고하시기 바랍니다.

참고 문헌: