[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 라이브러리의 다양한 기능에 대해 더 알고 싶다면 해당 문서를 참고하시기 바랍니다.
참고 문헌:
- Ktor 공식 문서: https://ktor.io/
- Exposed 공식 문서: https://github.com/JetBrains/Exposed