Creating a basic application

To create a Vaadin application you need two files. A class that extends UI which is your main view and entry point to the application as well as a web.xml referring to the UI.

With Eclipse and the Vaadin plugin you will get all of this automatically by opening the New wizard (File → New → Other) and choosing Vaadin → Vaadin Project. From there you can give the new project a name and the wizard takes care of the rest.

In other environments you can create the standard java web application project. Create one file which extends UI into the source folder. Let’s call it MyApplicationUI:

package com.example.myexampleproject;

import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Label;

public class MyApplicationUI extends UI {

  @Override
  protected void init(VaadinRequest request) {
    VerticalLayout view = new VerticalLayout();
    view.addComponent(new Label("Hello Vaadin!"));
    setContent(view);
  }
}

This application creates a new main layout to the UI and adds the text "Hello Vaadin!" into it.

Your web deployment descriptor, web.xml, has to point at your UI as well. This is done with an defining a Vaadin servlet and giving the UI as a parameter to it:

<?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">
  <display-name>MyApplication</display-name>
  <context-param>
    <description>Vaadin production mode</description>
    <param-name>productionMode</param-name>
    <param-value>false</param-value>
  </context-param>
  <servlet>
    <servlet-name>My Vaadin App</servlet-name>
    <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
    <init-param>
      <description>Vaadin UI</description>
      <param-name>UI</param-name>
      <param-value>com.example.myexampleproject.MyApplicationUI</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>My Vaadin App</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

Now you’re able to package your application into a war and deploy it on a servlet container.