Přeskočit na obsah

Apache Wicket

Z Wikipedie, otevřené encyklopedie
Apache Wicket
Logo
VývojářApache Software Foundation
Aktuální verze10.0.0 (11. března 2024)
Operační systémCross-platform
PlatformaJava Virtual Machine
Vyvíjeno vJava
Typ softwaruWeb application framework
LicenceApache License 2.0
Webwicket.apache.org a wicket.apache.org
Některá data mohou pocházet z datové položky.

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.

Vlastnosti

[editovat | editovat zdroj]

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á z prosté (x)HTML šablony pro prezentační vrstvu a Java kódu pro business logiku. Zpracování šablony jako značkovacího jazyka je obecně vzato komplexnější, pro (x)HTML je však podpora většiny komponent včetně AJAXu, ačkoliv lze vyrobit např. XML šablonu generující RSS Feed.
  • Propojení textové šablony a Java kódu 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. Obecně je deklarován XML jmenný prostor pro prefix wicket, který definuje několik speciálních značek a atributů, pomocí kterých se obslužné třídy Wicketu svazují s šablonou a ovlivňují výsledek renderování stránky.[1]
  • Pluginy pro vývojová prostředí:
  1. Eclipse – Wicket Bench
  2. Netbeans – NB Wicket Support
  3. IntelliJ IDEA – Wicket Forge
  • Možnost integrace s frameworky Hibernate, Spring, Dojo a další, specificky pro Spring je ve Wicketu přímá podpora, zvláště pak pro využití beanů definovaných Springem. Další frameworky, zejména pro práci s databází, mohou obvykle fungovat nezávisle na Wicketu, jako je tomu v případě Hibernate, spíše jsou často koncipovány tak, že je vhodné použít Spring, míněno Spring Core a integraci Wicketu se Springem.
  • 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í, tabulky, odkazy.
  • Vlastní kontrola a zabezpečení URL, možnost vytváření URL optimalizovaných pro vyhledávače (clean URL)
  • Podpora AJAX s alternativou klasického HTTP dotazu pro prohlížeče nepodporující JavaScript
  • Přímá podpora jQuery – od verze Wicketu 6.0
  • Interní nástroj pro řízení kontroly přístupu ke stránkám či komponentám založený na uživatelských rolích

Jak vytvořit Wicket projekt

[editovat | editovat zdroj]

K vytvoření projektu je zapotřebí

  1. vývojové prostředí (Eclipse je doporučován)
  2. Java SDK
  3. Maven 2[2]
  4. Jetty servlet engine[3]
  5. použít webovou aplikaci[4] 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

[editovat | editovat zdroj]

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>
  1. přehled značek Wicketu (anglicky)
  2. http://maven.apache.org/
  3. Archivovaná kopie. www.mortbay.org [online]. [cit. 2009-05-17]. Dostupné v archivu pořízeném dne 2008-11-20. 
  4. http://wicket.apache.org/start/quickstart.html

Externí odkazy

[editovat | editovat zdroj]

Literatura

[editovat | editovat zdroj]