JavaServer Pages – užívateľské značky a knižnice 1.
Server-side technológie (ASP, PHP…) miešajú spolu takzvané back-end úlohy (business logic) a rozhranie programu (presentation logic) v jednom súbore. To spôsobuje problémy, pretože programátor aj dizajnér musia pracovať na jednom súbore. I napriek tomu, že je možné použiť JavaBeans, ktoré zapúzdrujú kód do externých súborov, ich používanie vyžaduje od webového vývojára istú dávku vedomostí o Jave a jej syntaxi. Tento problém v určitej miere rieši technológia užívateľských značiek (custom tags).
Čo sú užívateľské značky
Je to rozšírenie technológie JSP, ktoré prišlo s verziou JSP 1.1. Špecifikácia JSP obsahuje 6 štandardných akčných značiek a rozšírením sú práve užívateľské akcie, ktoré sa volajú cez takzvané užívateľské značky na stránke JSP. Užívateľské značky sa ukladajú do užívateľských knižníc. Tieto značky zapuzdrujú často sa opakujúce úlohy tak, aby sa dali používať nielen medzi rôznymi stránkami JSP, ale aj medzi rôznymi aplikáciami. Umožňujú tak oddeliť prácu dizajnérov a programátorov. Knižnice užívateľských značiek a obslužné súbory vytvárajú programátori v jazyku Java a samotní dizajnéri ich potom používajú na svojich stránkach.
Čo obsahujú užívateľské značky
Aby ste mohli použiť jednoduchú užívateľskú značku potrebujete:
- JSP stránku
Stránkou JSP to začína, pretože na nej musíte deklarovať, kde sa nachádza súbor popisujúci knižnicu značiek (Tag Library Descriptor – TLD). A na samotnej stránke potom užívateľské značky využívate. - Tag Library Descriptor
Je to vlastne XML súbor, ktorý dokumentuje vlastnosti, informácie a umiestnenie obslužného programu značky (tag handler), čo je trieda v Jave. JSP stroj používa tento súbor, aby zistil kde nájsť a ako použiť tag handler. - Tag Handler
Je trieda v Jave. Má prístup k informáciám o stránke JSP (cez objektpageContext
). Preberá atribúty a telo užívateľskej značky. Keď skončí spracovávanie kódu, môže napríklad poslať výstup na stránku, alebo nastaviť atribúty objektupageContext
atď.
Nasledujúci obrázok zjednodušene ilustruje spoluprácu medzi jednotlivými komponentmi:
JSP stránka
Je vstupným bodom, z ktorého sa všetko odvíja. Obsahuje deklaráciu taglib
, ktorá má atribúty uri
a prefix
. Definuje deskriptor a predponu (prefix) užívateľských značiek, ktoré chceme na stránke použiť. Jedna stránka môže obsahovať viac direktív taglib
. Syntax je nasledovná:
<%@ taglib uri = „tld_URI“ prefix = „tagPrefix“ %>
Stránka JSP ďalej musí obsahovať (ak teda chceme použiť custom tags) aj samotné značky. Rozlišuje sa niekoľko typov. Takzvané jednoduché značky neobsahujú ani atribúty ani telo. To znamená, že tag handler neprevezme od značky žiadne parametre na spracovanie, iba vykoná príslušný kód. Syntax jednoduchých užívateľských značiek je:
<tagPrefix:name></tagPrefix:name>
<tagPrefix:name/> // skrátený zápis
Treba vedieť, že tagPrefix
je definovaný v direktíve taglib
a name
je meno značky definované v súbore TLD.
Druhým typom sú značky s atribútmi. Užívateľská značka môže obsahovať jeden alebo viac atribútov, pričom ku každému je priradená nejaká hodnota (value). Názov atribútu xxx
musí odpovedať metóde setXxx()
v príslušnom tag handlery. Atribút sa píše malým začiatočným písmenom. Syntax je nasledovná:
<tagPrefix:name attribute = „value“/>
<tagPrefix:name attribute = „<%= value %>“/>
Z uvedeného vidieť, že hodnotu atribútu je možné vkladať aj počas požiadavky na stránku. Avšak jediná akceptovaná hodnota je typu String
. Ak potrebujem získať inú hodnotu ako String
, musím vykonať konverziu pomocou metódy valueOf(String)
. Napríklad Integer int = Integer.valueOf(String s);
.
Tretím typom sú užívateľské značky s telom. Telo môže obsahovať základné alebo užívateľské značky, skriptovacie výrazy alebo obyčajný HTML/text. Samotný tag handler môže alebo nemusí spracovať telo značky. Znamená to, že dáta môžem posielať na spracovanie buď použitím atribútu alebo tela užívateľskej značky, prípadne jedným aj druhým. Syntax je nasledovná:
<tagPrefix:name attribute = „value“>
body…
</tagPrefix:name>
Určite vás napadla otázka, ako JSP stroj vie či má (a ako) spracovať telo značky. Nuž na strane JSP stránky toho veľa nespravíme. Je treba napísať samotný tag handler tak, aby spracoval aj telo.
Posledným typom užívateľských značiek sú značky definujúce premenné. Značka totiž môže definovať premennú nejakého typu, ktorá bude spracovaná v príslušnom tag handlery a následne použitá v skripte na stránke. Syntax je takáto:
<tagPrefix:name id=“variable“ type=“package.Class“/>
Atribút id
je názov premennej, type
je typ (trieda) premennej. Upozorňujem, že typ premennej môže byť len objektový, teda nemôžete použiť primitívne dátové typy (int, double, byte…). Atribúty id
a type
sú povinné. Je nutné uvádzať plne kvalifikovaný názov triedy, napríklad java.util.Date
. A v prípade vašej vlastnej triedy nezabudnite na stránku JSP umiestniť direktívu <%@ page import="package.Class" %>
.
Užívateľské značky definujúce premenné môžu obsahovať a spracovávať aj telo, pričom je to treba zohľadniť pri písaní tag handlera danej značky. Doteraz nám na obsluhu značky stačil jeden tag handler, avšak pri tomto type značiek treba ešte vytvoriť ďalší, ktorý musí byť rozšírením triedy javax.servlet.jsp.tagext.TagExtraInfo
. Ako z názvu triedy vyplýva, poskytuje informácie o názve a typu premennej, ktorú značka definuje.
V tejto časti som načrtol niekoľko typov užívateľských značiek, ktoré môžete využiť na svojich stránkach. Aby ste ich však mohli plnohodnotne využiť, potrebujete sa oboznámiť aj so súbormi TLD (Tag Library Descriptor), ktoré popisujú jednotlivé značky, a so samotnými tag handlermi, obsahujúcimi spracovateľský kód značky. Ale o tom až v ďalších častiach.
Prikladám jednoduchý príklad, ktorý si môžte stiahnuť. Doporučujem linku na server JSPin.com, ponúkajúci k stiahnutiu knižnice užívateľských značiek.
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
-
Webový správce souborů Filestash – dojmy a recenze
29. července 2024 -
Gaming na HDR monitoru: Stojí to za to?
12. srpna 2024 -
Od iPhonu po Android: Ultra HDR přináší nový standard fotografií
1. listopadu 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024