JavaServer Pages – skriptovacie značky
Okrem dobre známeho HTML sa na tvorbu stránok JSP používajú tri základné typy konštrukcií: skriptovacie značky, direktívy a akcie. V tejto časti sa pozrieme bližšie na skriptovacie značky.
Skriptovacie značky umožňujú špecifikovať kód v Jave, ktorý sa stane súčasťou výsledného servletu. Spomeňte si na prvú časť nášho seriálu, kde sa hovorí, že stránka JSP sa prekladá na servlet, čo je klasický *.class súbor. Tento kód sa potom samozrejme vykoná.
Poznáme štyri tvary skriptovacích značiek:
- Výrazy v tvare
<%= výraz %>
, ktoré sa vkladajú do výstupu servletu. Na to je použitá metódaout.print()
triedyjava.io.PrintWriter
. - Skriptlety v tvare
<% kód %>
, ktoré sa vkladajú do metódy servletu_jspService()
. - Deklarácie v tvare
<%! kód %>
, ktoré sa vkladajú do tela servletu mimo metódy_jspService()
. - JSP komentáre v tvare
<%-- JSP komentár --%>
, ktoré nebudú viditeľné vo výslednom dokumente.
Jednotlivé typy skriptovacích značiek si postupne podrobnejšie preberieme.
Výrazy JSP
Výraz JSP sa používa vtedy, ak potrebujete nejaký výstup vložiť priamo do stránky. Väčšinou hodnotu nejakej premennej. Má nasledovnú syntax:
<%= výraz v Jave %>
Výraz sa v čase požiadavky na stránku vyhodnotí, prevedie na reťazec a vloží do stránky. Napríklad nasledujúci výraz vloží aktuálny dátum v tvare, ktorý závisí od platformy na ktorej beží JSP stroj (napr. Tomcat).
<%= DateFormat.getDateInstance().format(new Date())%>
Keďže tento seriál je určený pre ľudí, ktorí už majú určité skúsenosti s programovaním v jazyku Java, nebudem sa nejak podrobne venovať samotnému jazyku. Pre ostatných odkazujem na seriál Naučte se Javu.
Výrazy JSP je možné tiež používať na určenie hodnoty určitých atribútov. Zvyčajne vtedy, keď hodnota atribútu nie je vopred známa a môže sa meniť. Napríklad pri nastavovaní parametrov JavaBeanov. O technológii JavaBeans v spojení s JSP bude reč neskôr. Zatial len ukážka kódu.
<jsp:setProperty name=“customer“ property=“id“ value=“id9853198″/>
Väčšina atribútov očakáva hodnotu ako pevne daný reťazec v apostrofoch alebo v úvodzovkách, tak ako som to uviedol v príklade. Ale niektoré atribúty umožňujú ako hodnotu použiť výraz, ktorý je vypočítaný v dobe požiadavku na stránku. Atribút value
je vhodným príkladom.
<jsp:setProperty name=“customer“ property=“id“ value=“<%= customerID %>“/>
Vyššie uvedené platí len pre atribúty patriace do skupiny akčných značiek (action tags). Odporúčam stiahnuť si stručný prehľad JSP syntaxe vo formáte pdf.
<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.0 Transitional//EN“>
<html>
<head><title>Ukážka JSP výrazov</title></head>
<body>
Curent date/time: <%= new java.util.Date()%>
Remote host: <%= request.getRemoteAddr()%>
Session ID: <%= session.getId()%>
Request URI: <%= request.getRequestURI()%>
</body>
</html>
V príklade som použil niektoré nové veci (request, session …), budem sa im venovať v ďalšom diely. Pre jednoduchosť možeme príklady ukladať do adresára CATALINA_HOME/webapps/ROOT, ale bolo by vhodnejšie vytvoriť si vlastný adresár na skúšanie, priamo do webapps.
Teda, ak si vytvorim adresár priklady a tam umiestnim súbor test.jsp, adresa, ktorú zadám do browsera, bude http://localhost/priklady/test.jsp
alebo http://localhost:8080/priklady/test.jsp
Skriptlety JSP
Výrazy JSP však nie vždy stačia a často je potrebné robiť aj niečo zložitejšie priamo na stránke JSP. Práve na to slúžia skriptlety. Pomocou nich vložíte do stránky zložitejší kód, ktorý preberie metóda _jspService()
vygenerovaného servletu. Syntax je nasledovná:
<% kód v Jave %>
Skriptlety, podobne ako výrazy JSP, majú prístup k tzv. implicitným objektom (request, response, session, out ad.), ktorým sa budem venovať v ďalšej časti. Tieto objekty podstatne zjednodušujú tvorbu JSP stránok. Ak potrebujete dostať niečo na stránku aj zo skriptletu, treba použiť premennú out
. Uvediem krátky príklad:
<%
String method = request.getMethod();
out.println(„Method: “ + method);
%>
Skriptlety môžu vykonávať ďaleko viac úloh ako výrazy. Napríklad nastavovať záhlavie odoziev a stavové kódy. Vyvolávať rôzne vedľajšie efekty, napr. práca s databázou, odoslanie emailu atď. Môžete používať klasické cykly, podmienky a iné Javovské konštrukcie. Iným použitím skriptletov je podmienené použitie HTML v spojení s JSP. Ide o to, že kód vo vnútri skriptletu sa vkladá do metódy _jspService()
presne tak, ako je napísaný, a HTML kód pred a za skriptletom sa vkladá do out.print()
. To znamená, že kód skriptletu nemusí byť kompletný. Môže obsahovať neuzavreté bloky kódu. Tieto otvorené bloky môžu ovplyvniť výsledný HTML a JSP kód stránky. Lepšie bude asi uviesť jednoduchý príklad:
<%
Integer visits = (Integer) session.getAttribute(„visitcounter“);
if (visits == null) {
visits = new Integer(0);
session.setAttribute(„visitcounter“,visits);
%>
Vitajte na Interval.cz. Ste tu po prvý krát.
<%
}
else {
visits = new Integer (visits.intValue() + 1);
session.setAttribute(„visitcounter“,visits);
%>
Vitajte na Interval.cz. Naše stránky ste navštívili už <%= visits %> krát.
<%
}
%>
V príklade ide o počítanie prístupu na stránku. Počet prístupov visits
sa ukladá do aktuálnej session
, ktorá má (môže mať) obmedzenú životnosť. Keď ukončíte browser, visits
stratí platnosť.
Deklarácia JSP
Deklarácia umožňuje definovať metódy, premenné alebo polia, ktoré sa vložia do tela servletu mimo metódy _jspService()
. Deklarácia nevytvára žiadny výstup, ale bežne sa používa v spojení s výrazmi a skriptletmi. Má nasledujúci tvar:
<%! kód v Jave %>
<%!
private String hello = „Hello World!“;
public String getString() {
return hello;
}%>
<%= hello %>
Komentáre JSP
Majú v podstate rovnaký význam ako klasické HTML komentáre, rozdiel je v tom, že nikdy nie sú posielané na klienta. Zapisujú sa takto:
<%– JSP komentár –%>
V ďalšej časti sa pozrieme na implicitné objekty a direktívy JSP.
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
-
Aktualizujete svoji .NET webovou aplikaci? Může se hodit app_offline.htm
10. července 2024 -
Gaming na HDR monitoru: Stojí to za to?
12. srpna 2024 -
Monitory OLED: klíčové pojmy a funkce
13. května 2024
Nejnovější
-
Doména .io v ohrožení: Co přinese předání Čagoských ostrovů?
10. října 2024 -
Jak se chránit před podvody na internetu – část 1
8. října 2024