JavaServer Pages
JavaServer Pages (JSP) je technologie pro vývoj hlavně dynamických HTML stránek založená na jazyce Java. Technologii JSP vyvinula společnost Sun Microsystems, která byla později koupena firmou Oracle. Při tvorbě se tedy používá primárně HTML a Java. Do kódu HTML se vkládá Java. Odděluje se od HTML takto: <% .. Java kód .. %> a tyto bloky se nazývají skriptlety. Na straně serveru se tedy vloží vygenerovaný HTML místo Javy v souboru. Jde o podobný princip, jako u PHP. Přípona souborů je .jsp. Životní cyklus JSPV okamžiku requestu ze strany klienta na server, si web container zkontroluje zdali je už vytvořený Servlet k dané JSP stránce. Pokud ne, tak vytváří Servlet. Pokud daný Servlet najde, tak kontroluje staří obou souborů a pokud je JSP stránka mladší, tak Servlet vytvoří znovu. Pokud ne, tak pro zlepšení výkonu použije již existující Servlet. Životní cyklus JSP se skládá ze sedmi částí:
VýhodyMezi hlavní výhody JSP patří možnost využít všech možností, co nabízí Servlety a navíc implicitních objektů, předdefinovaných tagů, Expression Language (EL) a vlastních tagů. JSP APIVšechny vygenerované Servlety musí implementovat dvě rozhraní. Prvním je JspPage interface, z kterého implementuje dvě metody z životního cyklu:
Z druhého rozhraní, HttpJspPage, dostává metodu:
Implicitní objektyWeb container vytváří devět implicitních objektů, které jsou dostupné pro všechny JSP stránky:
TagyScriptlet tagSyntax: <% ... %> Využívá se pro exekuci Java kódu v JSP a může deklarovat proměnné (uvnitř metody service()). Expression tagSyntax: <%= ... %> Vypisuje output stream bez potřeby použití out.print(). Declaration tagSyntax: <%! ... %> Deklaruje objekty a metody mimo metodu service(), takže nezabírají paměť při každém volání. Direktivy - JSP DirectivesJSP Directives jsou zprávy, které říkají web containeru, jak má přeloži JSP stránku do Servletu. Page directivesSyntax: <%@ page attribute="value" %> Definují atributy pro celou JSP stránku.
Include directiveSyntax: <%@ include file="resourceName" %> Se používá pro vkládání obsahu z různých zdrojů, jako jsou JSP, HTML nebo textové soubory. Obsah je do stránky vložen pouze jednou a to v době překladu, takže je vhodnější vkládat statické zdroje. Velká výhoda je znovu použitelnost kódu při vkládání HTML stránek. Taglib directiveSyntax: <%@ taglib uri="uriOfTheTagLibrary" prefix="prefix" %> Definuje knihovnu tagů, které můžeme využít v JSP stránce. Tagy jsou definovány TLD (Tag Library Despriptor) souboru. Odchytávání výjimekPro odchytávání výjimek a ošetření případných chyb, ke kterým může dojít máme dvě možnosti. První je skrze Page directives a to konkrétně pomocí atributů errorPage a isErrorPage. Druhou možností je využití <error-page> elementu ve web.xml souboru. Příklady s využitím web.xml souboru: <web-app>
…
<error-page>
<exception-type> java.lang.Exception </exception-type>
<location>/error.jsp</location>
</error-page>
…
</web-app>
<web-app>
…
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
…
</web-app>
JSP Action tagyJSP Actiony tagy se používají pro řízení a správu JSP stránek a pro práci s Java Beany. Seznam action tagů: jsp:forward, jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty, jsp:plugin, jsp:param, jsp:fallback. jsp:forwardSyntax: bez parametru: <jsp:forward page="relativeURL | <%= expression%>" />
s parametrem: <jsp:forward page="relativeURL | <%=expression %>"
<jsp:param name="parameterName" value="value | <%= expression %>" />
</jsp:forward>
Jsp:forward přeposílá request na další zdroj. jsp:includeSyntax: <jsp:include page="relativeURL | <%= expression %>" />
Jsp:include vkládá obsah v době requestu, což umožňuje vytvářet dynamicky generovaný obsah stránek. jsp:useBeanSyntax: <jsp:useBean id= "instanceName" scope= "page | request | session | application"
class= "packageName.className" type= "packageName.className" beanName="packageName.className | <%= expression >" >
</jsp:useBean>
Jsp:useBean vrací nebo vytváří Java Bean podle definovaného scope v atributu. Atributy
jsp:setPropertySyntax: <jsp:setProperty name="instanceOfBean" property= "*" | property="propertyName" param="parameterName" | property="propertyName" value="{ string | <%= expression %>}" />
Jsp:setProperty nastavuje hodnotu vlastnosti/atributu beany. jsp:getPropertySyntax: <jsp:getProperty name="instanceOfBean" property="propertyName" />
Jsp:getProperty vrací hodnotu vlastnosti/atributu beany. Expression Language (EL)Syntax: ${ expression } EL zjednodušuje přístup k datům uložených v Java Beanách a dalších objektech jako je request, session nebo application. Do JSP bylo EL přidáno v verzi 2.0. Implicitní objekty v EL
Operátory v EL[] . () (změna priorit operátorů) - (unární operace) not ! empty * / div % mod + - (binární operace) < > <= >= lt gt le ge == != eq ne && and || or ? : Klíčová slova v ELLt, le, gt, ge, eq, ne, true, false, and, or, not, instanceof, div, mod, empty, null JSTL (JSP Standard Tag Library)JSTL je set tagů pro zjednodušení vývoje JSP stránek, ve kterých není potřeba používat scriptlet tagy. 5 základních knihoven
Vlastní tagy v JSPJedná se o uživatelem vytvořené tagy. Jejich vytvářením se vyhýbáme scriptlet tagům a separujeme byznys logiku od JSP stránky. Další výhodou je znovu použitelnost kódu. <prefix:tagname attr1="value1"....attrn="valuen" >
…
</prefix:tagname>
Příklady kóduPočítání v cyklu for do šesti: <p>Počítání do šesti:</p> <!-- HTML -->
<% for (int i=1; i<=6; i++) { %> <!-- JSP -->
<p>Číslo : <%= i %>.</p> <!-- HTML & JSP -->
<% } %> <!-- JSP -->
<p>Dopočítáno.</p> <!-- HTML -->
A výsledek: Počítání do šesti: Číslo : 1. Číslo : 2. Číslo : 3. Číslo : 4. Číslo : 5. Číslo : 6. Dopočítáno. Externí odkazy
|
Portal di Ensiklopedia Dunia