JavaServer Pages – implicitné objekty a direktívy
V dnešnej časti si objasníme, čo sú to implicitné objekty a akým spôsobom ich môžeme využívať. Prejdeme si aj direktívy, druhú z troch základných konštrukcií stránok JSP (prvé sú skriptovacie značky).
Implicitné objekty
JSP vám dáva k dispozícii 9 automaticky vytvorených premenných – implicitné objekty. Tieto objekty sú prístupné len vo výrazoch a skriptletoch. Keďže deklarácie JSP vytvárajú kód, ktorý sa nevkladá do _jspService()
, nie sú v deklaráciách prístupné. Dostupné sú tieto premenné:
Implicitný objekt | Typ |
request | javax.servlet.HttpServletRequest |
response | javax.servlet.HttpServletResponse |
pageContext | javax.servlet.jsp.PageContext |
session | javax.servlet.http.HttpSession |
application | javax.servlet.ServletContext |
out | javax.servlet.jsp.JspWriter |
config | javax.servlet.ServletConfig |
page | java.lang.Object |
exception | java.lang.Throwable |
- request (požiadavka)
Táto premenná je združená s požiadavkou. Sprístupňuje parametre požiadavku, typ požiadavku a záhlavie HTTP. Ak je protokol požiadavku iný než HTTP, môže byťrequest
typuServletRequest
. - response (odozva)
Táto premenná je združená s odpoveďou klientovi. Málokedy sa používa priamo na stránkach JSP. Často vtedy keď programujete priamo servlety. - pageContext (kontext stránky)
Táto premenná poskytuje jednotný prístup k mnohým atribútom stránky a miesto na uloženie dát. Väčšinou zdieľaných dát. Je združená s aktuálnou stránkou. - session (sedenie)
Premenná je typuHttpSession
a je zviazaná s požiadavkou. Je vytváraná automaticky. Jedinou výnimkou je, keď v direktívepage
(budeme o nich hovoriť neskôr) nastavíte parameter session ako false. - application (aplikácia)
Stránky JSP môžu do premennejapplication
vkladať perzistentné dáta. Nato sa používajú dve metódysetAttribute() a getAttribute()
. Táto premenná je zdieľaná medzi všetkými servletmi v stroji. - out (výstup)
Toto je objekt typuPrintWriter
používaný pre odosielanie odpovede klientovi. Ak použijeteresponse
, používa sa odvodená triedaJspWriter
. - config (konfigurácia)
Táto premenná predstavuje objekt typuServletConfig
pre aktuálnu stránku. Jej metódagetServletContext()
vraciaServletContext
pre aktuálnu stránku. - page (stránka)
Page
jednoducho zastupujethis
. Bola vytvorená pre prípad, keď bude možné použiť aj iný jazyk než Javu. - exception (výnimka)
Tento objekt je typuThrowable
a obsahuje základné metódy na prácu s výnimkami, ktoré môžu vzniknúť na stránke JSP.
Všetky implicitné objekty majú k dispozícii pomerne veľké množstvo rôznych metód. Nie je v mojich silách venovať sa všetkým. Bohužiaľ programátor je často odkázaný na štúdium API špecifikácie príslušného jazyka, v našom prípade Javy. Túto dokumentáciu je možné prezerať aj on-line na webe: Java2 SE a Java2 EE. Popis tried javax.servlet.*
nájdete v API špecifikácii Java2 EE.
Direktívy JSP
V podstate nimi ovplyvňujeme výslednú štruktúru servletu. Direktívy nevytvárajú žiadny viditeľný výstup, ale určujú spôsob, akým JSP stroj spracováva stránku. Najčastejšie sa zapisujú do hlavičky súboru medzi tagy <head></head>.
Syntax direktív je nasledovná:
<%@ direktíva … %>
Poznáme tri typy direktív:
- page
– importuje triedy, nastavuje typ obsahu stránky, kódovanie stránky, povoluje alebo zakazuje vytváranie session atď. Budeme sa jej venovať bližšie. - include
– umožňuje vložiť do stránky súbor v čase, keď sa stránka prekladá na servlet. Táto direktíva sa musí umiestniť na to miesto na stránke kam chceme importovaný súbor vložiť. - taglib
– sa používa pri definovaní užívateľských značiek. Na túto tému bude samostatný článok.
Page
Táto direktíva obsahuje 12 voliteľných atribútov. V nasledujúcej tabulke je ich stručný popis.
Atribút | Stručný popis | Syntax |
language | Jazyk, ktorý bude použitý. Zatiaľ iba Java. | <%@ page language = "java" %> |
extends | Rodičovské triedy použité JSP strojom pri preklade stránky na servlet. | <%@ page extends = "com.taglib..." %> |
import | Import tried potrebných pre preklad aktuálnej stránky. Tieto triedy sú importované implicitne:
|
<%@ page import = "java.io.*" %> |
session | Týmto prepínačom sa nastavuje, či na stránke budú alebo nie dostupné dáta uložené v session . Štandardne je nastavené true . |
<%@ page session = "true | false" %> |
buffer | Nastavuje veľkosť pamäti určenej k odloženiu dát pre výstup danej JSP stránky. Nastavené je 8 kb, bez nej je none . |
<%@ page buffer = "none | x kb" %> |
autoFlush | Automaticky vyprázdni buffer, ak sa naplní. | <%@ page autoFlush = "true | false" %> |
isThreadSafe | Nastavuje, či vygenerovaný servlet bude umožňovať multithreading. | <%@ page isThreadSafe = "true | false" %> |
errorPage | Nastavím URL stránky, ktorá sa načíta ak na stránke vznikne výnimka. | <%@ page errorPage = "relativeURL" %> |
isErrorPage | Tento prepínač nastavuje či stránka je alebo nie je vyžiadaná ako errorPage . |
<%@ page isErrorPage = "true | false" %> |
contentType | Nastavuje mime typ dokumentu. |
<%@ page contentType = "mimeTyp" %> |
info | Používa sa na vloženie dodatočných infomácií, napr. autor, verzia, dátum … | <%@ page info = "text" %> |
pageEncoding | Definuje kódovanie platné pre stránku JSP. Defaultne je to ISO-8859-1 | <%@ page pageEncoding = "characterSet" %> |
Include
Direktíva include
umožňuje, aby vývojár vložil obsah jedného súboru do iného. Často sa takto vkladajú rôzne navigačné prvky, tabulky, hlavičky alebo päty, ktoré sú spoločné pre viaceré stránky. Táto direktíva sa zapisuje nasledovne, pričom má len jeden parameter:
<%@ include file = „relativeURL“ %>
Treba povedať, že táto direktíva je vhodná hlavne pre vkladanie statického obsahu, pretože obsah súboru je vkladaný počas kompilácie JSP stránky. Táto prebehne len raz, keď je stránka prvý krát vyžiadaná. Alebo vtedy ak sa zmení obsah stránky.
Taglib
Tag Lib = Tag Library = Knižnica užívateľských značiek, ktoré sa môžu použiť na stránke. Syntax je takáto:
<%@ taglib uri = „tag_library_URI“ prefix = „tag_prefix“ %>
Užívateľské značky podporuje až špecifikácia JSP 1.1 a v podstate umožňujú vývojárom skryť komplexný kód na strane servera pred web dizajnérmi.
Mohlo by vás také zajímat
-
inPage AI: Revoluční nástroj pro tvorbu webů
3. července 2024 -
Responzivní design: Proč by ho neměl ignorovat žádný vývojář?
27. listopadu 2023 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024 -
Windows App: Pracujte odkudkoliv, kdykoliv
3. listopadu 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024