В этой статье я покажу вам, как настроить 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.
Чтобы идти дальше: