Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

2. diel - Wicket - Úprava vygenerovaného projektu

V minulom diele sme nechali Maven, aby nám vygeneroval jednoduchú webovú Wicket aplikáciu. Tú teraz upravíme.

Niečo o prístupe wicket

Wicket pristupuje ku tvorbe jednotlivých webových stránok nasledujúcim spôsobom. Statický obsah je vytvorený v HTML. Aktívne a dynamický obsah je vytvorený v Jave. Vytvorený dynamický obsah je vložený do HTML na miesto, ktoré sa špecifikuje v .html súboru. Wicket teda umožňuje jednoducho tvoriť statický web, jednoducho pridať do statického webu dynamickosť, prípadne vytvoriť kompletne dynamický web. Dôsledkom tohto prístupu je to, že každá webová stránka sa skladá tak z .html súboru, tak z .java súboru. V .html definujete statické veci a rozloženie (layout) a prípadné umiestnenie dynamických komponentov. V .java vytvárate dynamické komponenty a algoritmy aplikácie.

Ďalším špecifikom je práca wicketu s dátami (modelom). Vo wicketu vytvoríte komponent a túto komponent zviažete s modelom (s dátami, ktoré má prezentovať). A viac sa nestaráte. Keď komponenta potrebuje dáta, má model, ktorého sa na ne spýta a dostane ich.

Niečo o štruktúre aplikácie

web.xml je Web Application Deployment Descriptor webové aplikácie. Je to xml dokument, v ktorom sú definované informácie o aplikácii, ktoré potrebuje server poznať. Inak povedané, je tam popísané, ako nasadiť aplikáciu na server (servletový kontajner). Súbor (web.xml) musí byť umiestnený v adresári / WEB-INF /.

WicketApplica­tion.java je vstupný bod Wicket aplikácie. Je tu definovaná domovská stránka a tiež umožnuje konfiguráciu. Jedná sa o triedu dedičov z triedy WebApplication, ktorá dedí z triedy Application, čo je základná trieda všetkých Wicket aplikácií.

Obrázky a kaskádové štýly sú umiestnené v webapp zložke. To je rovnaké ako u ostatných Java webových projektov. Rozdielom je to, že .html súbory sú umiestnené v rovnakom adresári (package), ako sú .java súbory a navyše majú ako .java tak .html súbory rovnaký názov. Inak povedané, každá webová stránka je určená .java triedou, ktorá dedí z WebPage.class a .html súborom s rovnakým názvom, ako má .java súbor.

Apache Wicket

Obmena předgenerovaného webu.

Ak ste sa už zoznámili so štruktúrou Wicket webové aplikácie, pustíme sa tvorby vlastného webu. Nečakajte nič prevratné. Vytvoríme si jednoduchý, statický osobné web.

Premažte obsah nasledujúcich súborov a ponechajte iba uvedené.

HomePage.java

public class HomePage extends WebPage {

    public HomePage() {

    }
}

HomePage.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Můj Web</title>
        <link rel="stylesheet" href="style.css" type="text/css"/>
    </head>
    <body>

    </body>
</html>

style.css - Vymazať celý obsah. Ponechať iba prázdny súbor.

logo.png - Zmazať.

Teraz máte úplne najzákladnejšie kostru Wicket aplikácie. Ak teraz aplikáciu nasadíte a zobrazíte si ju v prehliadači, otvorí sa vám prázdna stránka. Ak si necháte zobraziť zdrojový kód stránky v prehliadači (klávesová skratka Ctrl-U), získate nasledujúce.

Apache Wicket

Všetko je v poriadku, až na titulok okna. Namiesto textu "Môj Web" sa zobrazilo "môj Web" (táto chyba nemusí byť u každého). To značí problém s diakritikou. V tomto prípade je v tom Wicket nevinne. Za chybu môže predvolené kódovanie editora (Eclipse). Riešením je nastavenie kódovania Eclipse. Window -> Preferences -> General -> Workspace, Other, UTF-8 -> OK

Apache Wicket

Teraz by už malo byť kódovanie v poriadku.

Ak sa vytvára statický web, mení sa len .html a .css.

HomePage.html

<body>
    <div id="content">
        <div id="header">
            <h1>Můj Web</h1>
        </div>

        <div class="message">
            <h2>Trocha kultury neuškodí</h2>
            <p>
                <span class="date">09.11.2014</span>
            </p>
            <p>Musím přiznat, že jsem fanouškem animovaných filmů, a proto
                jsem se nemohl dočkat pokračování filmu "Jak vycvičit draka". Dvojka
                je konečně v kinech a po shlédnutí mohu říci: "Dobrý".</p>
        </div>

        <div class="message">
            <h2>Výlet na Broumovsko</h2>
            <p>
                <span class="date">28.10.2014</span>
            </p>
            <p>Podzim je již v plném proudu a vzhledem k tomu, že počasí se
                umoudřilo, rozhodl jsem se pro krátký výlet na Broumovsko. Barevné
                listí, skály, vítr a ostré podzimní slunce. Výborný relax.</p>
        </div>

        <div id="footer">

        </div>
    </div>
</body>

style.css

body {
  font-family: Sans-Serif;
  margin: 0px;
  padding: 0px;
}


#content {
    width: 60%;
    min-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

.message {
    border-bottom: 1px solid black;
}

.date {
    font-size: smaller;
    font-style: italic;
}

h1 {
    font-size: 120%;
    border-bottom: 2px solid black;
}

h2 {
    font-size: 110%
}

#footer {
    border-top: 2px solid black;
}

Uložte a nasaďte

Apache Wicket

Síce pekné, ale kvôli statickému webe nemusíme používať Java Web Framework. V stránke (v pätičke) budeme ešte zobrazovať aktuálny čas zobrazenie webovej stránky.

Najskôr si vytvoríme model. To je objekt, ktorý poskytuje dáta, vykonáva výpočty, a ktorý v našom prípade bude na požiadanie poskytovať čas s presnosťou na milisekundy. Model vo wicketu implementuje rozhranie IModel, ktoré poskytuje tieto metódy:

  • public void detach ()
  • public Object GetObject ()
  • public void setObject (Object object)

Náš model bude len poskytovať presný čas, a preto využijeme iba metódu GetObject (), v ktorej zadefinujeme, čo má vracať. V našom prípade je to čas s presnosťou na milisekundy. Triedu s modelom si pomenujeme TimeModel

TimeModel.java

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.wicket.model.IModel;

public class TimeModel implements IModel {

    @Override
    public void detach() {
    }

    @Override
    public Object getObject() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss:SSS");
        return sdf.format(date);
    }

    @Override
    public void setObject(Object object) {
    }
}

V triede HomePage.java vytvoríme Label, čo je jednoduchá komponenta zobrazujúci text. Tejto komponente v konštruktory odovzdáme model. Zakaždým, keď sa bude komponent Label vykresľovať, spýta sa modelu na dáta (zavolá metódy GetObject ()).

HomePage.java

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;

public class HomePage extends WebPage {

    public HomePage() {

        Label currentTime = new Label("time", new TimeModel());
        add(currentTime);
    }
}

Do .html pätičky pridáme tag elementu s wicket: id, v ktorom budeme chcieť zobrazovať čas.

<div id="footer">
    <p class="right">Čas zobrazení stránky: <span wicket:id="time"></span></p>
</div>

Doplníme štýly.

#footer p {
    font-size: smaller;
    font-style: italic;
}

.right {
    float: right;
}
Apache Wicket

Skúste niekoľkokrát aktulizovat webovú stránku pomocou F5 (alebo klávesu F5 stlačte a držtet). Čas sa zakaždým zaktualizuje.


Priložený súbor .zip pre 1. a 2. diel tohto tutoriálu obsahuje okrem zdrojových kódov (zložka src a súbor pom.xml) tiež súbor MujWebZakladni.war. Jedná sa o Web Application archív, čo je to isté ako .jar, ale používaný pre webové aplikácie. Tento súbor stačí umiestniť do adresára webapps v Tomcatu a následne Tomcat spustiť pomocou startup.bat (popísané v prvom diele). Po zadaní http: // localhost: 8080 / MujWebZakladni / by sa vám mala zobraziť úvodná stránka webové aplikácie.

 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 49x (2.78 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Predchádzajúci článok
Wicket - Zoznámenie a nastavenie
Všetky články v sekcii
Apache Wicket
Preskočiť článok
(neodporúčame)
Wicket - HTML dedičnosť a odkazy
Článok pre vás napísal vita
Avatar
Užívateľské hodnotenie:
1 hlasov
vita
Aktivity