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
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í:
- Eclipse – Wicket Bench
- Netbeans – NB Wicket Support
- 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
K vytvoření projektu je zapotřebí
- vývojové prostředí (Eclipse je doporučován)
- Java SDK
- Maven 2[2]
- Jetty servlet engine[3]
- použít webovou aplikaci[4] k vygenerování příkazu, který vytvoří kostru projektu
- 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
Externí odkazy
Literatura
Blogy