The English encyclopedia Allmultimedia.org will be launched in two phases.
The final launch of the Allmultimedia.org will take place on February 24, 2026
(shortly after the 2026 Winter Olympics).

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