Přeskočit na obsah

JavaServer Pages

Z Wikipedie, otevřené encyklopedie

Š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.

  1. import - Improtuje třídu, rozhraní nebo obsah celého balíčku.
  2. contentType - Definuje MIME (Multipurpose Internet Mail Expression) - defaultní hodnota "text/html; charset=ISO-8859-1".
  3. extend - Definuje rodičovskou třídu.
  4. info - Nastavuje informace, které vrací metoda getServletInfo().
  5. buffer - Nastavuje velikost v kilobytech bufferu, který zpracováva výstup generovaný z JSP stránky - defaultní hodnota 8 Kb.
  6. language - Specifikuje skriptovací jazyk použitý v JSP - defaultní hodnota "java".
  7. isElIgnored - Ignoruje Expression Language na stránce – defaultně "false“.
  8. 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.
  9. errorPage - Pokud dojde k chybě, tak dojde k přesměrování na definovanou stránku.
  10. 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.

Odchytávání vyjimek

Pro odchytávání vyjimek 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 v web.xml souboru.

Příklady s využitím web.xml 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.