wicketRozpoczęcie pracy z furtką


Uwagi

Wicket jest frameworkiem opartym na komponentach, co wyraźnie kontrastuje z niektórymi wcześniejszymi rozwiązaniami niekiedy monotonnego zadania programowania sieciowego. Podobnie jak inne frameworki, Wicket opiera się na API serwletu Sun.

Jednak w przeciwieństwie do frameworków takich jak Struts czy Spring MVC, programista korzystający z Wicket jest w większości usuwany z natury zapytań / odpowiedzi, która jest nieodłączna od sieci i serwletów. Zamiast budować kontrolery, które muszą obsługiwać wielu użytkowników i wątki jednocześnie, przyjmując żądania, zwracając odpowiedzi i nigdy nie zapisując żadnego stanu, twórca Wicket myśli w kategoriach składników stanowych. Zamiast tworzyć kontroler lub klasę akcji, tworzy stronę, umieszcza na niej komponenty i określa, jak każdy komponent reaguje na dane wejściowe użytkownika.

Wicket korzysta ze zwykłego XHTML do tworzenia szablonów. Każdy komponent jest powiązany z nazwanym elementem w XHTML i staje się odpowiedzialny za renderowanie tego elementu w końcowym wyniku. Strona jest po prostu komponentem najwyższego poziomu i jest sparowana z dokładnie jednym szablonem XHTML.

Każdy komponent jest wspierany przez swój własny model, który reprezentuje jego stan. Struktura nie ma wiedzy na temat interakcji komponentów z ich modelami, które są traktowane jako nieprzezroczyste obiekty automatycznie serializowane i utrwalane między żądaniami. Bardziej złożone modele mogą jednak zostać odłączone i zapewnić haczyki do organizowania własnego przechowywania i przywracania na początku i na końcu każdego cyklu żądania.

W Wicket wszystkim stanem po stronie serwera zarządza się automatycznie. Nigdy nie należy bezpośrednio używać obiektu HttpSession lub podobnego opakowania do przechowywania stanu. Zamiast tego stan jest powiązany z komponentami. Każdy komponent strony po stronie serwera zawiera zagnieżdżoną hierarchię komponentów stanowych, przy czym model każdego komponentu jest w końcu POJO (Plain Old Java Object).

Wersje

Wersja Data wydania
8.0.0-M4 2017-02-07
7.6.0 29.12.2016
6.26.0 29.12.2016

Instalacja lub konfiguracja

Moja pierwsza konfiguracja Wicket, aplikacja wyświetlająca Hello World na ekranie głównym:

import org.apache.wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication {
    
    public HelloWorldApplication() {
    }
    
    @Override
    public Class getHomePage() {
        return HelloWorld.class;
    }
}
 

HelloWorld.java

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

HelloWorld.html

<html>
   <body>
       <span wicket:id="message">Message goes here</span>
    </body>
</html>
 

web.xml

<?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>My first Wicket App</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>
 

pom.xml

    <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-core</artifactId>
        <version>${wicket.version}</version>
    </dependency>