Заранее прошу прощения за слишком подробное описание, но так можно избежать многих лишних вопросов от тех, кто никогда не работал в Netbeans и/или c Vaadin.
С выходом стабильной 7-й версии веб-фреймворка Vaadin, захотелось создать тестовый проект, а так же позже перетащить основной с 6-ки на 7-ку.
Здесь я не стану описывать как создать проект с помощью, скажем так, архитектурного файла maven, потому как, практически им не пользуюсь за ненадобностью (когда понадобится - разберусь подробно :) ), все это есть на сайте Vaadin'а.
Создаем простой проект с локальными библиотеками vaadin. Такой, чтобы можно было запустить и отобразить надпись "Hello Vaadin!" с помощью компонентов фреймворка.
И так поехали, что нам нужно (будем брать последние на текущий момент версии):
- Netbeans 7.2
- Пакет с jar-файлами, качаем отсюда.
Погнали:
Создаем новый проект в Netbeans:
- File - New Project - Java Web - Web Application.
- Пишем имя проекта в поле Project Name, назовем его "Vaadin7". При желании, выберем расположение папки проекта.
- Next
- Выбираем в выпадающем меню наш сервер приложений. У меня это Apache Tomcat. Выбор сервера приложений это отдельная тема. Выбираем версию Java EE, как правило работаем с 6-й.
- Поле Context Path я очистил, это путь, который будет отображаться в браузере, сразу после локального адреса, например наш Context Path = /gtm это значит, что в браузере при запуске будет написано что-то вроде этого http://localhost:8080/gtm. Я же хочу, чтобы проект грузился просто при заходе по http://localhost:8080/. Этот параметр можно настроить позже в файле context.xml или в свойствах проекта.
- Next
- На следующей странице нам предлагают выбрать фреймворки, пропускаем это окно и жмем Finish.
Проект создан, но главная страница у него это *.jsp, нам это не нужно, мы хотим Vaadin :)
По умолчанию структура такая:
- Удаляем файл index.jsp
Создаем файл web.xml в каталоге WEB-INF.
- Жмем правой кнопкой по этой папке
- New - Other - XML - XML Document.
- Называем его web, но сам файлик, как вы увидите в поле ниже, будет в расширением xml.
- Выбираем в следующем окне тип нашего XML - Well-formed Document (по умолчанию) и жмем Finish.
Удаляем все что в нем понаписано и вставляем следующий текст:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
<init-param>
<description>Vaadin application class to start</description>
<param-name>UI</param-name>
<param-value>nix.common.LoginForm</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
- Сохраняем.
Теперь создадим в папке Source Packages новые папки/пакеты.
- Правой кнопкой по папке
- New - Other - Other - Folder. Либо New - Java - Java Package.
(По факту не важно что вы добавите папку или пакет, для Java оно не важно, физически пакеты это папки.)
- Назовем первую папку nix.
- Таким же макаром в папке nix, создадим папку common.
- В папке common создадим java-файл с именем LoginForm.java. Создается точно так же как и папки/пакеты, но выбираем New - Other - Java - Java Class. (Все добавленные ранее типы объектов остаются в списке быстрого добавления, думаю вы уже заметили).
Пока файл трогать не будем, давайте добавим в проект скачанные ранее библиотеки Vaadin 7.
Распакуем скачанный архив, вот его структура:
Нам понадобятся 8 файлов, 7 из корневой папки:
- vaadin-client-7.0.0.jar
- vaadin-client-compiled-7.0.0.jar
- vaadin-client-compiler-7.0.0.jar
- vaadin-server-7.0.0.jar
- vaadin-shared-7.0.0.jar
- vaadin-theme-compiler-7.0.0.jar
- vaadin-themes-7.0.0.jar
и один из папки libs:
- jsoup-1.6.3.jar
Соберем их все в одну папку и сохраним куда-нибудь отдельно, туда, где мы будем хранить библиотеки.
Щелкаем правой кнопкой по папке Libraries и может:
- Add JAR/Folder (сразу добавляем все наши файлы к проекту, для примера я так и сделал).
- Add Library (Если вы через меню Netbeans'a, Tools - Ant Libraries, добавили и как-нибудь назвали свою библиотеку).
В итоге получили такую вот структуру проекта:
Вернемся к нашему java классу LoginForm.java, дополним его кодом, получим следующее содержание:
package nix.common;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
public class LoginForm extends UI {
@Override
protected void init(VaadinRequest request) {
VerticalLayout view = new VerticalLayout();
view.addComponent(new Label("Hello Vaadin!"));
setContent(view);
}
}
Вот и все.
Теперь, если вы все сделали верно, то при запуске откроется ваш браузер по-умолчанию и в нем будет надпись "Hello Vaadin!" на сером фоне.
Основные, отличия 7-го Vaadin'а от 6-го в плане настроек это то, что теперь вместо пакета
com.vaadin.Application
используется
com.vaadin.ui.UI
Что и было использовано в java-классе.
Кроме того, пришлось изменить и web.xml.
Раньше было: <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
Теперь: <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
и
Раньше было:
<init-param>
<param-name>application</param-name>
<param-value>nix.common.LoginForm</param-value>
</init-param>
Теперь:
<init-param>
<param-name>UI</param-name>
<param-value>nix.common.LoginForm</param-value>
</init-param>
Кроме того, теперь не нужно качать отдельно пакеты GWT и компилить их для проекта, они уже включены в библиотеки в том виде, в котором нужно.
Есть вопросы - пишите их в комментариях, а я пока пошел добавлять другой функционал в тестовый проект :)
С выходом стабильной 7-й версии веб-фреймворка Vaadin, захотелось создать тестовый проект, а так же позже перетащить основной с 6-ки на 7-ку.
Здесь я не стану описывать как создать проект с помощью, скажем так, архитектурного файла maven, потому как, практически им не пользуюсь за ненадобностью (когда понадобится - разберусь подробно :) ), все это есть на сайте Vaadin'а.
Создаем простой проект с локальными библиотеками vaadin. Такой, чтобы можно было запустить и отобразить надпись "Hello Vaadin!" с помощью компонентов фреймворка.
И так поехали, что нам нужно (будем брать последние на текущий момент версии):
- Netbeans 7.2
- Пакет с jar-файлами, качаем отсюда.
Погнали:
Создаем новый проект в Netbeans:
- File - New Project - Java Web - Web Application.
- Пишем имя проекта в поле Project Name, назовем его "Vaadin7". При желании, выберем расположение папки проекта.
- Next
- Выбираем в выпадающем меню наш сервер приложений. У меня это Apache Tomcat. Выбор сервера приложений это отдельная тема. Выбираем версию Java EE, как правило работаем с 6-й.
- Поле Context Path я очистил, это путь, который будет отображаться в браузере, сразу после локального адреса, например наш Context Path = /gtm это значит, что в браузере при запуске будет написано что-то вроде этого http://localhost:8080/gtm. Я же хочу, чтобы проект грузился просто при заходе по http://localhost:8080/. Этот параметр можно настроить позже в файле context.xml или в свойствах проекта.
- Next
- На следующей странице нам предлагают выбрать фреймворки, пропускаем это окно и жмем Finish.
Проект создан, но главная страница у него это *.jsp, нам это не нужно, мы хотим Vaadin :)
По умолчанию структура такая:
- Удаляем файл index.jsp
Создаем файл web.xml в каталоге WEB-INF.
- Жмем правой кнопкой по этой папке
- New - Other - XML - XML Document.
- Называем его web, но сам файлик, как вы увидите в поле ниже, будет в расширением xml.
- Выбираем в следующем окне тип нашего XML - Well-formed Document (по умолчанию) и жмем Finish.
Удаляем все что в нем понаписано и вставляем следующий текст:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
<init-param>
<description>Vaadin application class to start</description>
<param-name>UI</param-name>
<param-value>nix.common.LoginForm</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
- Сохраняем.
Теперь создадим в папке Source Packages новые папки/пакеты.
- Правой кнопкой по папке
- New - Other - Other - Folder. Либо New - Java - Java Package.
(По факту не важно что вы добавите папку или пакет, для Java оно не важно, физически пакеты это папки.)
- Назовем первую папку nix.
- Таким же макаром в папке nix, создадим папку common.
- В папке common создадим java-файл с именем LoginForm.java. Создается точно так же как и папки/пакеты, но выбираем New - Other - Java - Java Class. (Все добавленные ранее типы объектов остаются в списке быстрого добавления, думаю вы уже заметили).
Пока файл трогать не будем, давайте добавим в проект скачанные ранее библиотеки Vaadin 7.
Распакуем скачанный архив, вот его структура:
Нам понадобятся 8 файлов, 7 из корневой папки:
- vaadin-client-7.0.0.jar
- vaadin-client-compiled-7.0.0.jar
- vaadin-client-compiler-7.0.0.jar
- vaadin-server-7.0.0.jar
- vaadin-shared-7.0.0.jar
- vaadin-theme-compiler-7.0.0.jar
- vaadin-themes-7.0.0.jar
и один из папки libs:
- jsoup-1.6.3.jar
Соберем их все в одну папку и сохраним куда-нибудь отдельно, туда, где мы будем хранить библиотеки.
Щелкаем правой кнопкой по папке Libraries и может:
- Add JAR/Folder (сразу добавляем все наши файлы к проекту, для примера я так и сделал).
- Add Library (Если вы через меню Netbeans'a, Tools - Ant Libraries, добавили и как-нибудь назвали свою библиотеку).
В итоге получили такую вот структуру проекта:
Вернемся к нашему java классу LoginForm.java, дополним его кодом, получим следующее содержание:
package nix.common;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
public class LoginForm extends UI {
@Override
protected void init(VaadinRequest request) {
VerticalLayout view = new VerticalLayout();
view.addComponent(new Label("Hello Vaadin!"));
setContent(view);
}
}
Вот и все.
Теперь, если вы все сделали верно, то при запуске откроется ваш браузер по-умолчанию и в нем будет надпись "Hello Vaadin!" на сером фоне.
Основные, отличия 7-го Vaadin'а от 6-го в плане настроек это то, что теперь вместо пакета
com.vaadin.Application
используется
com.vaadin.ui.UI
Что и было использовано в java-классе.
Кроме того, пришлось изменить и web.xml.
Раньше было: <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
Теперь: <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
и
Раньше было:
<init-param>
<param-name>application</param-name>
<param-value>nix.common.LoginForm</param-value>
</init-param>
Теперь:
<init-param>
<param-name>UI</param-name>
<param-value>nix.common.LoginForm</param-value>
</init-param>
Кроме того, теперь не нужно качать отдельно пакеты GWT и компилить их для проекта, они уже включены в библиотеки в том виде, в котором нужно.
Есть вопросы - пишите их в комментариях, а я пока пошел добавлять другой функционал в тестовый проект :)
Не работал с vaadin, но так назревает вопрос, а в чем преимущество ? Получается, какой либо клик по странице, порождает запрос на сервер. Создается излишняя нагрузка. Да и с версткой, наверное, умаешься ?
ОтветитьУдалитьБольше подходит для корпоративных приложений в локальной сети, хотя у меня работает проект и извне, правда около 20 пользователей. Есть знакомый по группе в ВК, у него около 1000 внешних пользователей, все нормально :)
УдалитьСетевой трафик, конечно, есть, но не критично большой для корпоративных.