V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!

Apache Wicket

Z Multimediaexpo.cz


Apache Wicket je framework pro tvorbu webových aplikací v programovacím jazyce Java. Autory tohoto frameworku jsou Jonathan Locke a Miko Matsumura. Framework vznikl v roce 2004 a jeho první verze byla uvolněna o rok později. Slovo Apache se do názvu dostalo v roce 2007, od té doby je tento projekt vyvíjen pod Apache License 2.0 organizací Apache Software Foundation.

Obsah

Vlastnosti

Wicket patří mezi komponentně řízené frameworky (tzv. Component-based framework), tyto frameworky se obvykle vyznačují vysokou abstrakcí nad HTTP protokolem. To znamená, že programátor nepracuje s HTTP protokolem přímo, což má za důsledek, že se psaní webové aplikace v takovýchto frameworcích blíží psaní desktopových aplikací.

  • Wicket se v psaní komponent podobá swingu
  • Webová aplikace psaná pod Wicket se skládá pouze s prosté (x)HTML šablony pro prezentační vrstvu a Java kódu pro business logiku
  • Propojení prezentační vrstvy s logickou je realizováno v (x)HTML přes atribut wicket:id u elementů, které se budou chovat dynamicky, s odpovídajícím názvem komponenty v Java kódu
  • Pluginy pro vývojové prostředí:
  1. Eclipse − Wicket Bench
  2. Netbeans − NB Wicket Support
  3. IntelliJ IDEA − Wicket Forge
  • Podpora tlačítka zpět v prohlížeči, která je umožněna pomocí ukládání verzí stránek do mapy stránek pro každé okno prohlížeče uživatelské relace
  • Možnost vytváření znovupoužitelných komponent a komponenty Panel zapouzdřující více komponent pro tvorbu znovupoužitelného celku
  • Připravené komponenty jako validace uživatelských vstupů, stránkování atd.
  • Podpora AJAX s alternativou klasického HTTP dotazu pro prohlížeče nepodporující JavaScript

Jak vytvořit Wicket projekt

K vytvoření projektu je zapotřebí

  1. vývojové prostředí (Eclipse je doporučován)
  2. Java SDK
  3. Maven 2[1]
  4. Jetty servlet engine[2]
  5. použít webovou aplikaci[3] k vygenerování příkazu, který vytvoří kostru projektu
  6. pustit aplikaci ve vývojovém prostředí a přesměrovat prohlížeč na http://localhost:8080/

Aplikace Hello world

Každá aplikace ve Wicket musí mít právě jednu instanci třídy, která rozšiřuje třídu WebApplication.

HelloWorldApplication.java
import org.apache.wicket.protocol.http.WebApplication;
 
public class HelloWorldApplication extends WebApplication
{
    /**
     * Konstruktor.
     */
    public HelloWorldApplication()
    {
 
    }
 
    /**
     * @see org.apache.wicket.Application#getHomePage()
     */
    public Class getHomePage()
    {
        return HelloWorld.class;
    }
}

Následuje vytvoření stránky rozšířením třídy WebPage

HelloWorld.java
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
 
public class HelloWorld extends WebPage
{
    /**
     * Constructor
     */
    public HelloWorld()
    {
        add(new Label("message", "Hello World!"));
    }
}

Ukázka HTML a propojení pomocí wicket:id atributu s komponentou (podmínkou propojení je shodnost hodnoty wicket:id u HTML tagu a identifikátoru komponenty). V tomto případě dojde k nahrazení textu "Tento text nahradí model komponenty" statickým modelem vytvořené komponenty Label tedy "Hello World!".

HelloWorld.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd" xml:lang="en" lang="en">
<body>
    <span wicket:id="message" id="message">Tento text nahradí model komponenty</span>
</body>
</html>

Konfigurační XML soubor aplikace

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd">
 
<web-app>
    <display-name>Wicket Examples</display-name>
    <filter>
        <filter-name>HelloWorldApplication</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
          <param-name>applicationClassName</param-name>
          <param-value>org.apache.wicket.examples.helloworld.HelloWorldApplication</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>HelloWorldApplication</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

Reference

  1. http://maven.apache.org/
  2. http://www.mortbay.org/maven-plugin/index.html
  3. http://wicket.apache.org/quickstart.html

Literatura

Blogy