Рубрики
Без рубрики

Учебник по веб-приложениям Kotlin

Учебник по веб-приложениям Kotlin, пример сервлета Kotlin, пример веб-приложения Kotlin, пример сервера tomcat сервлета kotlin, учебник по веб-приложениям kotlin, java kotlin, учебник по kotlin, изучите учебник по разработке java EE kotlin.

Автор оригинала: Pankaj Kumar.

В этом уроке мы узнаем, как создать веб-приложение Kotlin. Мы предполагаем, что вы хорошо разбираетесь в Java EE и Kotlin, прежде чем перейти к бизнес-части этого руководства.

Веб-приложение Kotlin

Мы также хорошо знаем, что Kotlin, последний язык, разработанный JetBrains, статически типизирован и основан на JVM. Это факт, что Kotlin существует с целью решения проблем, с которыми сталкиваются разработчики Java.

Котлин лаконичен, понятен и имеет очень удобный синтаксис для изучения и адаптации. Кроме того, он на 100% совместим с Java, легко компилируется в байт-код Java 6 и Java 8.

Зная, что Kotlin имеет так много преимуществ перед Java, почему бы не использовать его в нашей среде Java EE.

Вот о чем весь этот урок. Мы будем разрабатывать простое веб-приложение с использованием Kotlin, сервлетов и локального хост-сервера Tomcat. Перед этим давайте рассмотрим проблемы, с которыми сталкивается интеграция Kotlin в приложение Java EE.

  • Классы Kotlin являются окончательными по умолчанию : Если класс не объявлен как открытый класс , он является окончательным по умолчанию. В большинстве случаев классы приложений java ee не являются окончательными, поэтому вместо того, чтобы каждый раз определять класс как открытый класс (невыполнение этого может привести к исключению во время выполнения), мы можем интегрировать полностью открытый плагин в наш файл IntelliJ Idea build.gradle .
  • По умолчанию в Kotlin есть конструкторы с именованными аргументами : Плагин компилятора без аргументов создает дополнительный конструктор с нулевым аргументом для классов с определенной аннотацией, что позволяет нам создавать экземпляры классов без явно указанного конструктора.

Ниже приведены изменения, которые необходимо внести в файл build.gradle нашего проекта.

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-noarg"
apply plugin: "kotlin-allopen"

Мы будем создавать веб-приложение Http с использованием сервлетов в Котлине. Примечание : Сервлет по своей сути является классом, который может обрабатывать HTTP-запросы (обычно запросы GET и POST). Давайте создадим наше первое веб-приложение Hello World с использованием Kotlin в IntelliJ Ultimate . Это то, что требуется для создания приложений Java EE.

Проект веб-приложения Kotlin

Выберите Gradle на боковой панели и выберите Kotlin(JVM) и Web справа.

Настройка параметров группы, артефакта и сортировки, как показано ниже.

Примечание : Артефакт-это совокупность ресурсов вашего проекта, которые вы собираете для тестирования, развертывания или распространения вашего программного решения или его части. Он будет вызван, когда мы запустим наше приложение на сервере.

Настройка build.gradle

buildscript {
    ext.kotlin_version = '1.2.10'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group 'com.journaldev.kotlinjavaee'
version '1.0-SNAPSHOT'

apply plugin: 'kotlin-platform-jvm'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    testCompile "junit:junit:4.12"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
    testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

Давайте добавим плагин war и зависимость java ee.

buildscript {
    ext.kotlin_version = '1.2.10'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group 'com.jour.as'
version '1.0-SNAPSHOT'

apply plugin: 'kotlin-platform-jvm'
apply plugin: 'war'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'javax', name: 'javaee-api', version: '7.0'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    testCompile "junit:junit:4.12"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
    testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.11'
}


compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

Плагин War расширяет плагин Java, чтобы добавить поддержку для сборки файлов WAR веб-приложений.

Структура проекта веб-приложения Kotlin

Поскольку мы имеем дело с сервлетом только в этом руководстве, давайте удалим файл jsp. Создайте новый каталог внутри веб-приложения, назовите его WEB-INF и добавьте файл web.xml к нему.

Код для MyServlet.kt (без расширения java) приведен ниже.

import javax.servlet.annotation.WebServlet
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse

@WebServlet(name = "Home", value = "/hello")
class MyServlet : HttpServlet() {
    override fun doGet(req: HttpServletRequest, res: HttpServletResponse) {
        res.writer.write("Hello, World!")
    }
}

@WebServlet |/аннотация используется для объявления сервлета и сопоставления его с указанными значениями (сопоставление сервлета). Аргумент значения является обязательным. Аргумент name здесь необязателен.

Функция doGet используется для вывода входных данных на экран.

Благодаря аннотации @WebServlet , дескриптору развертывания (web.xml файл) не требуется.

Примечание : Приведенная выше аннотация не работает для версий ниже Tomcat 7.

Запуск веб-приложения Kotlin

Измените конфигурацию с помощью кнопки меню в правом верхнем углу:

Установка Tomcat (популярного контейнера сервлетов) в качестве сервера.

Мы установили номер порта с 8080 на 8888, так как первый уже использовался. Мы добавили URL-путь к сервлету Hello World, который будет запущен при запуске проекта.

Давайте настроим наш артефакт, необходимый для развертывания.

Примечание : Если Tomcat не установлен, перейдите к IntelliJ->Приложения->Плагины->Сервер Tomcat

Выходные данные при запуске вышеупомянутого проекта приведены ниже.

Использование web.xml для сопоставления Сервлетов

Вместо установки шаблона аннотации, URL-адреса в файле MyServlet.kt мы можем установить его в web.xml файл, который действует как файл дескриптора развертывания, как показано ниже.





    
        MyServlet
        MyServlet
    
    
        MyServlet
        /hello/*
    


Давайте изменим файл MyServlet.kt для отображения HTML в качестве входных данных на экране.

import javax.servlet.annotation.WebServlet
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse

//@WebServlet(name = "Home", value = "/hello")
class MyServlet : HttpServlet() {
    override fun doGet(req: HttpServletRequest, res: HttpServletResponse) {
        //res.writer.write("Hello, World!")
        res.setContentType("text/html")
        val out = res.getWriter()

        out.print("")
        out.print("

JournalDev Tutorial

") out.print("

Servlet App Using Kotlin

") out.print("") } }

Ниже приведен окончательный вывод, который отображается на экране.

На этом заканчивается учебник по веб-приложениям kotlin. Вы можете загрузить окончательный проект веб-приложения Kotlin по ссылке ниже.