Apache Wicket
Author
Albert FloresApache 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. +more 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ř. +more 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.
* 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 # Jetty servlet engine # použít webovou aplikaci 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. +more". HelloWorld. html.
Tento text nahradí model komponenty
Konfigurační XML soubor aplikace
Wicket Examples
HelloWorldApplication org.apache.wicket.protocol.http.WicketFilter
applicationClassName org.apache.wicket.examples.helloworld.HelloWorldApplication
HelloWorldApplication /*
Reference
Externí odkazy
Literatura
[url=http://www. ibm. +morecom/developerworks/web/library/wa-aj-wicket/. S_TACT=105AGY82&S_CMP=GENSITE]Wicket: A simplified framework for building and testing dynamic Web pages[/url] * [url=http://ensode. net/wicket_first_look. html]A First Look at the Wicket Framework[/url] * [url=https://web. archive. org/web/20141009225628/https://weblogs. java. net/blog/timboudreau/archive/2005/04/wicket_help_tes_1. html]Tim Boudreau's Blog[/url] * [url=http://www. theserverside. com/news/thread. tss. thread_id=28162]The Server Side discussion[/url] * [url=https://web. archive. org/web/20080905044933/http://www. javalobby. org/java/forums/t105230. html]Javalobby interview with Martijn Dashorst (project chairman)[/url].
Blogy
[url=https://web. archive. +moreorg/web/20150402223751/https://chillenious. wordpress. com/]Eelco Hillenius[/url] * [url=http://martijndashorst. com]Martijn Dashorst[/url] * [url=https://web. archive. org/web/20070507025003/http://web. mac. com/jonathan. locke/iWeb/JonathanLocke/Blog/Blog. html]Jonathan Locke[/url] * [url=https://web. archive. org/web/20170922111815/http://herebebeasties. com/]Al Maw[/url] * [url=http://boss. etnetera. cz/]Wicket @ Et netera (česky)[/url] *.