JavaServer Pages – akčné značky 1.
Akčné značky sú pomerne rozsiahlou kapitolou v technológii tvorby dynamických stránok JSP. Obsahujú dve základné oblasti: JavaBeans a Dynamické vkladanie súborov a apletov na stránky. Tentoraz si povieme niečo o JavaBeanoch.
JavaBeans
JavaBean je špeciálny typ triedy, ktorá musí dodržiavať určité pravidlá:
- Trieda musí mať konštruktor bez parametrov – prázdny konštruktor.
Túto požiadavku je nutné splniť buď priamo zadaním takého konštruktora, alebo vynechaním všetkých konštruktorov, vďaka čomu prekladač automaticky vytvorí konštruktor bez parametrov. - JavaBean nesmie mať žiadne verejné (public) premenné inštancie.
Táto zásada by mala platiť nielen pri JavaBeanoch ale aj pri programovaní ostatných Java tried. K premenným inštancie treba pristupovať zásadne cez prístupové metódy, ktoré vám umožňujú definovať obmedzujúce podmienky, kontroly, filtre atď. - K perzistentným hodnotám treba pristupovať cez metódy setXxx() a getXxx().
Toto je pravidlo týkajúce sa konkrétne JavaBeanov. Napríklad máte trieduCustomers
a v nej metódysetNumOfCustomers() a getNumOfCustomers()
, pomocou ktorých nastavujete a získavate počet zákazníkov. V tomto prípade sa potom povie, že triedaCustomers
má vlastnosťnumOfCustomers
. Všimnite si malého písmena „n““ v názve vlastnosti, ale veľkého „N“ v názve metódy. Ak má trieda len metódu getXxx(), ale nemá odpovedajúcu metódu setXxx(), hovoríme, že vlastnosť xxx je len na čítanie.
Existuje výnimka v tejto konvencii, a to pri triedach s vlastnosťami typu boolean. Tieto triedy používajú pre získanie hodnôt takejto vlastnosti metódu nazvanúisXxx()
namiesto getXxx().
Inak môžete použiť aj výrazy a skriptlety JSP na prístup k iným pomocným metódam JavaBeanov. Štandardné akcie na prístup k vlastnostiam môžu využívať iba metódy setXxx() a getXxx()/isXxx().
Zavedenie JavaBeanov
Aby ste mohli na stránke JSP využívať služby JavaBeanu, musíte ho najprv zaviesť do pamäte. Najjednoduchšou a zároveň povinnou syntaxou na zavedenie beanu je:
<jsp:useBean id=“name“ class=“package.Class“/>
Znamená to: „Vytvor inštanciu triedy špecifikovanú parametrom class
a priraď ju k premennej špecifikovanej parametrom id
.“ Predchádzajúci zápis sa teda môže nahradiť ekvivalentom skriptletu:
<% package.Class name = new package.Class(); %>
Avšak akcia jsp:useBean má ďaleko viac možností:
<jsp:useBean id=“name“ class=“package.Class“ scope=“page|request|session|application“ type=“package.Class“ beanName=“package.Class“ />
Musím upozorniť, že jsp:useBean používa syntax založenú na XML. Preto názvy atribútov sú citlivé na malé a veľké písmená, musia sa použiť buď jednoduché alebo zdvojené úvodzovky a koniec značky je />
, nie iba >
. Miesto atribútu class môžeme použiť beanName, pričom rozdiel spočíva v tom, že beanName sa vzťahuje buď na objekt triedy alebo na súbor obsahujúci serializovaný objekt triedy. V prípade, že potrebujete, aby vytváraná inštancia beanu bola typu, ktorý je predkom skutočného typu beanu alebo rozhrania, ktoré implementuje, môžete využiť atribút type. Atribút scope určuje spôsob zdieľania JavaBeanov medzi stránkami. To znamená, že viac stránok môže využívať jednu inštanciu beanu.
JavaBeans sú obvykle spojené s lokálnymi premennými v metóde _jspService()
. Ale zároveň môžu byť uložené na jednom zo štyroch rôznym miest, v závislosti od hodnoty atribútu scope. Sú možné tieto štyri hodnoty:
page
: Táto hodnota atribútu scope je implicitnou hodnotou. Spôsobí, že inštancia beanu sa uloží do objektu PageContext po dobu trvania aktuálnej požiadavky. Servletový kód potom môže pristupovať k inštancii prostredníctvom metódygetAttribute()
preddefinovanej premennejpageContext
.request
: Táto hodnota znamená, že bean sa uloží do objektu ServletRequest združeného s aktuálnou požiadavkou, kde je dostupný cez metódugetAttribute()
.session
: Táto hodnota znamená, že inštancia beanu sa uloží do objektu HttpSession a je dostupná cez metódugetAttribute()
preddefinovenej premennejsession
.application
: V tomto prípade sa bean uloží do zdieľaného ServletContext a bude dostupný cez premennúapplication
pomocou metódygetAttribute()
. Tento objekt je zdieľaný v celej webovej aplikácii, prípadne medzi všetkými servletmi, ak nie sú explicitne definované žiadne webovské aplikácie.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Vstupte do éry umělé inteligence: ASOME Max Studio s AMD Ryzen™ 9 7940HS
14. listopadu 2023 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024