Статьи

Мой первый сервлет Scala (с Eclipse)


В этой статье я покажу вам, как настроить Eclipse, чтобы вы могли кодировать «классические» веб-приложения в Scala.

Примечание: я знаю о Lift, я просто хочу посмотреть, как шаг за шагом интегрировать Scala в мою существующую инфраструктуру.

Настройка вашего проекта Eclipse

Eclipse имеет плагин (находится на сайте Scala IDE ), который позволяет вам помочь в разработке с Scala. Плагин отнюдь не идеален (автозаполнение не работает в Ganymede), но он выполняет свою работу, позволяя создавать проекты Scala, которые автоматически компилируют код Scala с помощью scalac.

Платформа Web Tools, еще один плагин Eclipse, позволяет создавать проекты веб-приложений, которые можно развертывать на серверах приложений.

Большинство проектов, созданных с использованием того или иного плагина Eclipse, совместимы друг с другом. Например, вы можете создать новый динамический веб-проект, затем добавить расширение JPA и предварительно, теперь вы можете использовать Java Persistence API в вашем проекте. Кроме того, вы можете добавить расширение Vaadin в свой веб-проект и использовать в нем Vaadin. Эти расширения называются «Facets» в Eclipse. Каждый проект может иметь много аспектов: Java, JPA, Vaadin и т. Д. В зависимости от установленных плагинов.

К сожалению, плагин Scala не использует механизм Facet. Таким образом, динамические веб-проекты не могут быть улучшены с помощью фасета Scala. Создание веб-проекта, который компилирует ваш код Scala, требует небольшой настройки. Во-первых, вы должны создать простой динамический веб-проект. Затем откройте файл .project. Если вы не видите файл, перейдите к Customize View в представлении и снимите флажок. * Ресурсы на вкладке Filter (первая). Это должно выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>scala-servlet-example</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.wst.common.project.facet.core.builder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.wst.validation.validationbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
        <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
        <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    </natures>
</projectDescription>

Замените org.eclipse.jdt.core.javabuilder на org.scala-ide.sdt.core.scalabuilder. Примечание: вы можете удалить Java-конструктор с помощью IDE, но вы не можете добавить еще один, поэтому взлом файла конфигурации является неизбежным злом. Теперь добавьте Scala nature в ваш проект: <nature> org.scala-ide.sdt.core.scalanature </ nature>.

Файл .project должен выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>scala-servlet-example</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.scala-ide.sdt.core.scalabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.wst.common.project.facet.core.builder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.wst.validation.validationbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.scala-ide.sdt.core.scalanature</nature>
        <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
        <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
        <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    </natures>
</projectDescription>

 Если вы сделали правильное изменение, вы должны увидеть S вместо J на ​​значке вашего проекта (и он должен держать глобус!).

Последнее, что нужно сделать, это добавить библиотеку Scala на свой путь. В зависимости от конфигурации сервера приложений, либо добавьте библиотеку Scala в путь сборки («Путь сборки» -> «Настроить путь сборки» -> «Добавить библиотеку» -> «Библиотека Scala»), либо вручную добавьте нужную библиотеку в папку WEB-INF / lib. Вы готовы создать свой первый сервлет Scala!

Создание вашего сервлета

Чтобы создать свой сервлет «простым способом», просто выполните New -> Other -> Scala Class. Выберите пакет (рекомендуется соблюдать рекомендации Java относительно расположения класса в соответствии с именем пакета). Выберите HttpServlet в качестве суперкласса. Назовите его, как вам угодно, и нажмите ОК.

Кажется, он компилируется, но мы с вами знаем, что позже возникнут некоторые проблемы, поскольку вы не переопределяете метод doGet () сервлета. Сделай это:

override def doGet(request:HttpServletRequest, response:HttpServletResponse) {

}

Не забывайте импорт. Давайте использовать способ Scala:

import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}

И последнее, но не менее важное: давайте закодируем некоторые вещи для вашего сервлета. Поскольку я чувствую себя очень изобретательно, я напечатаю старый добрый «Hello world!»:

override def doGet(request: HttpServletRequest, response: HttpServletResponse) {

  response setContentType ("text/html")

  val out = response getWriter

  out println """<html>
  <head>
      <title>Scala Servlet
  <body>
      <p>Hello world!"""
  }
}

Не забудьте добавить сервлет в ваш web.xml и presto, вы должны увидеть знакомый пример в знакомой IDE, но с неортодоксальным языком.

Вывод

Как только Eclipse настроен правильно, разработать веб-приложение на Scala довольно просто. Я надеюсь, что следующая версия плагина Scala IDE определенно улучшит интеграцию Scala с Eclipse и WTP.

Вот источники примера в формате Eclipse.

Чтобы идти дальше:

От http://blog.frankel.ch/my-first-scala-servlet