Prehľad revízií | |
---|---|
Revízia 1.0 | 12. marca 2006 |
Prvé vydanie | |
Revízia 1.0.1 | 22. októbra 2006 |
Opravená konfigurácia automatického načítavania kontextu pre Tomcat verzie 5.5.18 a novšej. | |
Revízia 1.1 | 13. decembra 2006 |
Pridaná sekcia o nutnosti vložiť do projektu JAR súbory s interfaceamy pre servlety a JSP. |
V tutoriále popíšeme vytvorenie webovej aplikácie využívajúcej servlety a JSP pomocou Eclipse a jej nasadenie na server Apache Tomcat 5.5.x.
Predpokladáme korektne nainštalovaný server Apache Tomcat a nainštalované prostredie Eclipse s workspace nastaveným do adresára C:\Projects
. V tutoriále budeme predpokladať, že premenná prostredia %CATALINA_HOME% odkazuje do adresára v ktorom je nainštalovaný Tomcat.
Najprv vytvoríme adresárovú štruktúru pre projekt. Budeme sa držať odporúčaní Java Sun BluePrints pre webové aplikácie.
Tabuľka 1. Popis adresárov
seminar | Adresár obsahujúci projekt pre Eclipse. Tento adresár by sa mal nachádzať v adresári workspaceu prostredia Eclipse. Pre účely tutoriálu budeme predpokladať, že workspace je v adresári C:\Projects . |
src | Adresár pre zdrojové súbory (*.java ). V tomto adresári sa nachádza koreň adresárovej štruktúry zodpovedajúcej balíčkom. Teda napr. trieda seminar.lib.Utils sa bude nachádzať v adresári C:\Projects\seminar\src\seminar\lib\Utils.java |
web | Koreňový adresár pre statické komponenty webovej aplikácie, t. j. pre HTML súbory, obrázky a pod. |
WEB-INF | Adresár pre konfiguračné nastavenia webovej aplikácie. Názov tohto adresára musí byť uvedený veľkými písmenami! |
classes | Adresár pre skompilované CLASS súbory. Podadresáre v tomto adresári musia zodpovedať balíčkom. Teda napr. skompilovaná trieda seminar.lib.Utils sa bude nachádzať v adresári C:\Projects\seminar\web\WEB-INF\classes\seminar\lib\Utils.class |
lib | Adresár pre knižnice v archívoch JAR, ktoré webová aplikácia využíva. |
Na základe adresárovej štruktúry teraz vytvoríme nový projekt Eclipse. Použitím klasického seminar. Eclipse zahlási, že v tom adresári spozoroval adresárovú štruktúru a pokúsi sa zdetekovať umiestnenia zdrojových kódov.
→ → → spustíme sprievodcu vytvorením projektu. Do názvu projektu uvediemeTento fakt vezmeme na vedomie a prejdeme do ďalšieho kroku sprievodcu.
Eclipse sa snažil zdetekovať adresáre pre zdrojové súbory i pre binárne súbory. Žiaľ, neúspešne. Mylne sa totiž domnieva, že koreňovým adresárom pre zdrojové súbory je adresár C:\Projects\seminar
. Tento predpoklad je ale nesprávny, pretože my chceme mať zdrojové súbory v adresári C:\Projects\seminar\src
. Ideme teda mýlku Eclipse opraviť.
Klikneme na položku seminar v strome a zvolíme položku Remove project 'seminar' from build path (Odstrániť projekt seminar z cesty pre kompilovanie). Týmto krokom ale docielime iba akýsi medzistav, v ktorom nemáme definované adresáre pre zdrojové kódy (a náš projekt asi bude mať nejaký kód, však?). To však hneď napravíme.
Klikneme v strome na položku src a klikneme na položku Add folder 'src' to build path (Pridať adresár src to cesty pre kompilovanie).
Eclipse nám oznámi, že prestane považovať adresár projektu (t. j. adresár C:\Projects\seminar
) za koreňový adresár pre zdrojové kódy.
Po potvrdení by sme mali dostať už korektnú situáciu, podľa ktorej máme ako adresár zdrojových kódov nastavený adresár C:\Projects\seminar\src
.
Ostáva nám už len nastaviť adresár pre binárne súbory (súbory *.class). To nastavíme kliknutím na pri Default output folder. Nastavíme adresár seminar/web/WEB-INF/classes
. Kliknutím na je tvorba projektu v Eclipse skončená.
V našej webovej aplikácii zrejme budeme chcieť popri JSP stránkach vyvíjať aj servlety. Musíme preto zabezpečiť, aby náš projekt mal prístup k základným Java triedam a interfaceom, ktoré tvoria jadro tejto technológie.
Servlety a JSP sú technológiou, ktorej vývoj, normy a špecifikácie sú riadené cez tzv. Java Community Process, čo je formálny proces umožňujúci zainteresovaným stranám ovplyvňovať vývoj platformy Java. Tejto konkrétnej technológii zodpovedá jednak formálna špecifikácia JSR 53 a jedna sada Java interfaceov a tried, ktoré reprezentujú programátorský základ tejto technológie.
Tie sú reprezentované triedami a rozhraniami z balíčkov javax.servlet a javax.servlet.jsp. Čitateľ si rýchlo všimne, že v štandardnej edícii Java Development Kitu™ sa tieto triedy nenachádzajú - sú totiž súčasťou až Java Development Kit Enterprise Edition™. Našťastie nie je vonkoncom potrebné mať k dispozícii kompletnú megainštaláciu JDK EE, pretože tieto triedy a interfacey sú k dispozícii priamo v inštalácii Tomcatu, konkrétne v JAR archívoch servlet-api.jar
a jsp-api.jar
nachádzajúcich sa v podadresári common/lib
inštalácie Tomcatu.
Tieto JAR archívy pridáme do nášho projektu štandardným spôsobom. Na karte
zvolíme položku a vyhľadáme v ich súborovom systéme. (Ak archívy pridávame do projektu až po jeho vytvorení, k tejto karte sa dopracujeme cez → →V serveri Tomcat môže byť nasadených viacero webových aplikácií zároveň. Každej webovej aplikácii prislúcha cesta v URL adrese, ktorá predstavuje jej koreňový adresár. V Tomcate je spolu s inštaláciou zabudovaná webová aplikácia manager. Tá má koreňový adresár v adresári %CATALINA_HOME%\server\webapps\manager
(premenná %CATALINA_HOME% predstavuje adresár, v ktorom je nainštalovaný Tomcat) a zodpovedá jej URL adresa http://localhost:8080/manager
.
Nemýľme si koreňový adresár webovej aplikácie s koreňovým adresárom projektu v Eclipse! Za koreňový adresár webovej aplikácie považujeme adresár, ktorý v sebe obsahuje adresár WEB-INF
. Za koreňový adresár projektu považujeme adresár vo workspace Eclipse so štruktúrou uvedenou v sekcii Adresárová štruktúra.
Našu aplikáciu seminar potrebujeme nakonfigurovať v podobnom duchu.
Koreňovým adresárom projektu je teda C:\Projects\seminar
.
Koreňovým adresárom webovej aplikácie je adresár obsahujúci podadresár WEB-INF
, čiže adresár C:\Projects\seminar\web
.
Názov webovej aplikácie bude seminar a zodpovedať jej bude URL adresa http://localhost:8080/seminar.
Zoznam webových aplikácií, ktoré sú nakonfigurované v Tomcate, je reprezentovaný súbormi v adresári %CATALINA_HOME%\conf\Catalina\localhost
. V tomto adresári sa nachádza niekoľko súborov s príponou XML - každý z nich obsahuje nastavenia pre jednu webovú aplikáciu.
V tomto adresári vytvoríme nový textový súbor seminar.xml
a uvedieme doň nasledovné nastavenia:
<Context docBase="C:\projects\seminar\web" reloadable="true" backgroundProcessorDelay="3" />
Názov súboru (seminar.xml
) reprezentuje názov webovej aplikácie a z toho vyplývajúcej URL adresy. Atribút docBase predstavuje cestu ku koreňovému adresáru webovej aplikácie. Položka reloadable určuje automatické načítavanie súborov obsahujúcich skompilované triedy v prípade, že zmeníme niektorú z tried webovej aplikácie. Atribút backgroundProcessorDelay určuje, že zisťovanie zmien súborov skompilovaných tried sa bude diať každé 3 sekundy.
Atribúty reloadable a backgroundProcessorDelay je možné vynechať. To ale znamená, že pri zmene a skompilovaní tried projektu bude nutné reštartovať Tomcat, čo je pomerne otravná činnosť.
Atribút backgroundProcessorDelay je v platnosti od verzie 5.5.18. Konfiguráciu pre staršie verzie si overte v dokumentácii.
Uložením tohto súboru a reštartovaním Tomcata dokončíme konfiguráciu.
Konfiguráciu Tomcata otestujeme vytvorením jedného statického súboru a jednej JSP stránky.
V koreňovom adresári webovej aplikácie (t. j. v adresári C:\Projects\seminar\web
) vytvoríme pokusný HTML súbor hello.html
s nasledovným obsahom:
<html> <h1>Hello World</h1> </html>
Otestujeme ho navštívením adresy http://localhost:8080/seminar/hello.html
.
V koreňovom adresári webovej aplikácie (t. j. v adresári C:\Projects\seminar\web
) vytvoríme pokusnú JSP stránku hello.jsp
s nasledovným obsahom:
<%= new java.util.Date() %>
Otestujeme ho navštívením adresy http://localhost:8080/seminar/hello.jsp
. Mali by sme vidieť reťazec s aktuálnym dátumom a časom.
Ak sa testy stránok nepodaria, medzi najčastejšie chyby patrí uvedenie nesprávneho adresára v atribúte docBase v konfiguračnom súbore pre webovú aplikáciu. Skontrolujme preto nastavenie tejto hodnoty.
Adresárová štruktúra uvedená na začiatku kapitoly je len odporúčanou adresárovou štruktúrou. Technicky nič nebráni mať v jedinom adresári uložené aj statické súbory stránok (t. j. HTML súbory, obrázky) spolu so zdrojovými kódmi tried.
Je tu však jeden zádrheľ: adresárovú štruktúru v adresári WEB-INF
je nutné dodržiavať v tom zmysle, že skompilované triedy webovej aplikácie sa MUSIA nachádzať v adresári WEB-INF\classes
a prípadné knižnice JAR sa MUSIA nachádzať v adresári WEB-INF\lib
. V opačnom prípade nebudú vaše skompilované súbory, či JAR knižnice nájdené.
Webová aplikácia musí obsahovať vo svojom koreňovom adresári podadresár WEB-INF
s príslušnými podadresármi aj v prípade, že by mali byť prázdne! (Tomcat verzie 5.5.x sa vie vysporiadať aj s prípadom, keď (veľmi jednoduchý) projekt adresár WEB-INF
neobsahuje, ale predošlé verzie s tým mali značné problémy).
V tejto sekcii použijeme alternatívny spôsob vytvorenia nového projektu v Eclipse. Použitím klasického seminar. Eclipse zahlási, že v tom adresári spozoroval adresárovú štruktúru a pokúsi sa zdetekovať umiestnenia zdrojových kódov.
→ → → spustíme sprievodcu vytvorením projektu. Do názvu projektu uvediemeTento fakt vezmeme na vedomie a prejdeme do ďalšieho kroku sprievodcu.
Opravu adresárov však vykonáme inak. Vytvorenie projektu dokončíme hneď teraz kliknutím na
a nastavenia zmeníme iným spôsobom.V strome v pohľade Package Explorer klikneme pravým tlačidlom na názov projektu a z kontextového menu vyberieme .
V zobrazenom dialógu vyberieme zo stromu položku Java Build Path a kartu Source. Tu môžeme nastaviť adresáre pre zdrojové súbory tried i pre skompilované súbory. V nastavení, ktoré je uvedené na nasledovnom obrázku, je ako adresár pre zdrojové súbory nastavený adresár projektu (teda adresár C:\Projects\seminar
), čo je nesprávna hodnota.
Nesprávnu hodnotu odstránime kliknutím na položku seminar a následne na tlačidlo . Korektný adresár pridáme pomocou a začiarknutím adresára src
.
Nastavenie potvrdíme kliknutím na Yes v otázke Do you want to remove the project as source folder? (Želáte si zrušiť nastavenie, podľa ktorého je adresár projektu zároveň adresárom zdrojových súborov?).
Ďalej nastavíme adresár pre skompilované triedy do adresára seminar\web\WEB-INF\classes
, čím získame výsledný stav ako nasledovnom obrázku:
Nastavenie potvrdíme kliknutím na
.