JavaServer Pages

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

JavaServer Pages (JSP) je technologie pro vývoj hlavně 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: 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 JSP

V 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. +more 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í: # Překlad JSP # Kompilace JSP # Classloading - načte korespondující Servlet třídu # Instantiation - připraví Servlet třídu # Inicializace - jspInit # Zpracování požadavku (Request) - jspService # Zahození objektu - jspDestroy.

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ím 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 rozhraní, 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áří devět 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ř metody service).

Expression tag

Syntax:

Vypisuje output stream bez potřeby použití out.print.

Declaration tag

Syntax:

Deklaruje objekty a metody mimo metodu service, 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:

Definují atributy pro celou JSP stránku. # import - Importuje třídu, rozhraní nebo obsah celého balíčku. +more # contentType - Definuje MIME (Multipurpose Internet Mail Expression) - výchozí 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 - výchozí hodnota 8 kb. # language - Specifikuje skriptovací jazyk použitý v JSP - výchozí 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:

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. +more Velká výhoda je znovu použitelnost kódu při vkládání HTML stránek.

Taglib directive

Syntax:

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ýjimek

Pro 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. +more Druhou možností je využití elementu ve web. xml souboru.

Příklady s využitím web.xml souboru:

java.lang.Exception /error.jsp

500 /error.jsp

JSP Action tagy

JSP 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:forward

Syntax:

bez parametru:

" />

s parametrem:

" " />

Jsp:forward přeposílá request na další zdroj.

jsp:include

Syntax:

" />

Jsp:include vkládá obsah v době requestu, což umožňuje vytvářet dynamicky generovaný obsah stránek.

jsp:useBean

Syntax:

" >

Jsp:useBean vrací nebo vytváří Java Bean podle definovaného scope v atributu.

Atributy

id - identifikuje beanu v daném scope * scope ** page - pouze pro danou stránku (výchozí hodnota) ** request - v rámci requestu ** session - v rámci session ** application - pro celou aplikaci . nejširší scope * class - specifikuje třídu pro kterou vytváří objekt (třída musí splňovat náležitosti Java Beany) * type - specifikuje datový typ Java Beany * beanName - inicializuje beanu skrze java. +morebeans. Beans. instantiate metodu.

jsp:setProperty

Syntax:

}"   />

Jsp:setProperty nastavuje hodnotu vlastnosti/atributu beany.

jsp:getProperty

Syntax:

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

pageScope, requestScope, sessionScope, applicationScope - mapuje atribut podle jména v daném scope * param - mapuje request parametr do jedné proměnné * paramValues - mapuje request parametr do pole proměnných * header - mapuje request hlavičku do jedné proměnné * headerValues - mapuje request hlavičku do pole proměnných * cookie - mapuje název cookies do hodnoty proměnné * initParam - mapuje inicializační parametr * pageContext - umožňuje přístup k objektům jako je request, session a podobně

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 EL

Lt, 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

core tags - práce s proměnnými, URL management, kontrola a správa stránek (prefix c) * sql tags - podpora SQL a přístup do DB (prefix sql) * xml tags - správa XML a jejich transformace (prefix x) * internationalization tags - formátování a lokalizace (prefix fmt) * function tags - manipulace se stringem (prefix fn)

Vlastní tagy v JSP

Jedná 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.

Příklady kódu

Počítání v cyklu for do šesti:

Počítání do šesti:

Číslo : .

Dopočítáno.

A výsledek: Počítání do šesti: Číslo : 1. Číslo : 2. Číslo : 3. Číslo : 4. Číslo : 5. Číslo : 6. Dopočítáno.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top