JavaServer Pages
Šablona:Infobox programovací jazyk
JavaServer Pages (JSP) je jazyk pro psaní dynamických HTML stránek založený na jazyce Java. Vyvinul ji v Sun, ale pak ji koupila firma 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.
Výhody
Mezi 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 API
Všechny vygenerované Servlety musí implementovat dvě rozhraní. Prvním je JspPage interface, z kterého implementuje dvě metody z životního cyklu:
- public void jspInit() - metoda je volána při první requestu, stejně jako metoda init() u Servlet rozhraní
- public void jspDestroy() - metoda je volána na konci životního cyklu JSP, kdy je stránka zahozena
Z druhého rohrazení, HttpJspPage, dostává metodu:
- public void _jspService() - metoda je volána při každém požadavku na JSP stránku, co přijde do web containeru (webový, aplikační server), metoda nemůže být přepsána (override)
Implicitní objekty
Web container vytváří 9 implicitních objektů, které jsou dostupné pro všechny JSP stránky:
- out - JspWriter
- request - HttpServletRequest
- response - HttpServletResponse
- config - ServletConfig
- application - ServletContext
- session - HttpSession
- pageContext - PageContext
- page - Object
- exception - Throwable
Tagy
Scriptlet tag
Syntax: <% ... %>
Využívá se pro exekuci Java kódu v JSP a může deklarovat proměnné(uvnitř service() metody).
Expression tag
Syntax: <%= ... %>
Vypisuje output stram bez potřeby použití out.print().
Declaration tag
Syntax: <%! ... %>
Deklaruje objekty a metody mimo service() metodu, takže nezabírají paměť při každém volání.
Direktivy - JSP Directives
JSP Directives jsou zprávy, které říkají web containeru, jak má přeloži JSP stránku do Servletu.
Page directives
Syntax: <%@ page attribute="value" %>
Definují atributy pro celou JSP stránku.
- import - Improtuje třídu, rozhraní nebo obsah celého balíčku.
- contentType - Definuje MIME (Multipurpose Internet Mail Expression) - defaultní hodnota "text/html; charset=ISO-8859-1".
- extend - Definuje rodičovskou třídu.
- info - Nastavuje informace, které vrací metoda getServletInfo().
- buffer - Nastavuje velikost v kilobytech bufferu, který zpracováva výstup generovaný z JSP stránky - defaultní hodnota 8 Kb.
- language - Specifikuje skriptovací jazyk použitý v JSP - defaultní hodnota "java".
- isElIgnored - Ignoruje Expression Language na stránce – defaultně "false“.
- isThreadSafe - Servlety i JSP jsou defaultně vláknově bezpečné, aby se mohli jednotlivé requesty zpracovávat paralelně. Při nastavení "false" jsou requesty serializovány.
- errorPage - Pokud dojde k chybě, tak dojde k přesměrování na definovanou stránku.
- isErrorPage – Definuje, že tato stránka je errorPage
Include directive
Syntax: <%@ 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 directive
Syntax: <%@ 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.
Příklady kódu
Počí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.