JSP irányelvek
Mik azok a JSP irányelvek?
- A JSP-direktívák a JSP-tárolónak küldött üzenetek. Globális információkat nyújtanak egy teljes JSP-oldalról.
- A JSP direktívák arra szolgálnak, hogy speciális utasításokat adjanak egy tárolónak a JSP servlet kódra történő fordításához.
- A JSP életciklus fázisában a JSP-t servletté kell konvertálni, amely a fordítási fázis.
- Utasításokat adnak a tárolónak a JSP-feldolgozás bizonyos aspektusainak kezeléséhez
- Az irányelveknek számos attribútumuk lehet vesszővel elválasztva kulcs-érték párként.
- A JSP-ben az direktíva leírása:
<%@ %>
címkéket.
Az irányelv szintaxisa:
<%@ directive attribute="" %>
Irányelvek típusai a JSP-ben
A JSP-ben háromféle direktíva létezik:
- Oldal irányelv
- Tartalmazza az irányelvet
- Taglib direktíva
Az alábbiakban mindegyiket részletesen ismertetjük példákkal:
1) JSP Page direktíva
Az oldal direktíva szintaxisa:
<%@ page…%>
- Olyan attribútumokat biztosít, amelyek a teljes JSP-oldalra vonatkoznak.
- Meghatározza az oldalfüggő attribútumokat, például a szkriptnyelvet, a hibaoldalt és a pufferelési követelményeket.
- Az aktuális JSP-oldalhoz tartozó tároló utasításainak megadására szolgál.
Íme az oldal direktívához kapcsolódó attribútumok listája:
- Nyelv
- kiterjeszti
- import
- tartalom típus
- info
- ülés
- isThreadSafe
- automatikus öblítés
- ütköző
- IsErrorPage
- oldalKódolás
- hibaoldal
- isELIgonored
További részletek az egyes attribútumokról
1) nyelv: Meghatározza a programozási nyelv (alapnyelv) használatos az oldalon.
A nyelv szintaxisa:
<%@ page language="value" %>
Itt az érték a programozási nyelv (alapnyelv)
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
A kód magyarázata: A fenti példában az attribútum nyelvi értéke Java amely ebben az esetben a mögöttes nyelv. Ennélfogva az expressziós címkékben lévő kódot a Java fordító segítségével fordítják le.
2) Meghosszabbodik: Ez az attribútum az osztály kiterjesztésére (öröklésére) szolgál, mint ahogy a JAVA teszi
A kiterjesztések szintaxisa:
<%@ page extends="value" %>
Itt az érték azt az osztályt jelenti, amelyből örökölni kell.
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
A kód magyarázata: A fenti kódban a JSP kiterjeszti a DemoClass-t, amely a demotest csomagban található, és kiterjeszti az osztály összes funkcióját.
3) Importálás: Ez az attribútum a leggyakrabban használt attribútum az oldalirányelv attribútumaiban. Arra használatos, hogy a tárolót más java osztályok, interfészek, enumok stb. importálására használják, miközben servlet kódot generál. Hasonló a java osztályok, interfészek importálási utasításaihoz.
Az importálás szintaxisa:
<%@ page import="value" %>
Itt az érték az importálandó osztályokat jelöli.
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
A kód magyarázata:
A fenti kódban a Date osztályt a java.util csomagból importáljuk (minden segédprogram osztály), és a következő osztály összes metódusát használhatja.
4) contentType:
- Ez határozza meg a karakterkódolási sémát, azaz a tartalom típusának és a válasz karakterkészletének beállítására szolgál
- A contentType alapértelmezett típusa a
"text/html; charset=ISO-8859-1"
.
A contentType szintaxisa:
<%@ page contentType="value" %>
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
A kód magyarázata:
A fenti kódban a tartalomtípus szöveg/html-re van beállítva, ez állítja be a karakterkódolást a JSP-hez és a generált válaszoldalhoz.
5) információ
- Meghatároz egy karakterláncot, amely a getServletInfo() metódussal érhető el.
- Ez az attribútum a szervlet leírásának beállítására szolgál.
Az információ szintaxisa:
<%@ page info="value" %>
Itt az érték a szervlet információit jelenti.
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
A kód magyarázata:
A fenti kódban a „Guru-direktíva JSP” karakterlánc lekérhető a szervlet felületén a getServletInfo() segítségével.
6) Munkamenet
- A JSP oldal alapértelmezés szerint munkamenetet hoz létre.
- Néha nem kell munkamenetet létrehoznunk JSP-ben, ezért ebben az esetben ezt az attribútumot false értékre állíthatjuk. A session attribútum alapértelmezett értéke true, és a munkamenet létrejön. Ha hamisra van állítva, akkor jelezhetjük, hogy a fordító alapértelmezés szerint nem hozza létre a munkamenetet.
A munkamenet szintaxisa:
<%@ page session="true/false"%>
Ebben az esetben a session attribútumot igazra vagy hamisra lehet állítani
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
A kód magyarázata:
A fenti példában a session attribútum „false” értékre van állítva, ezért azt jelezzük, hogy nem akarunk munkamenetet létrehozni ebben a JSP-ben.
7) isThreadSafe:
- Meghatározza a szálfűzési modellt a generált szervlet számára.
- Az oldalon megvalósított szálbiztonsági szintet jelzi.
- Az alapértelmezett értéke igaz, tehát egyidejű
- Ezt az attribútumot használhatjuk a SingleThreadModel interfész megvalósítására a generált szervletben.
- Ha false értékre állítjuk, akkor megvalósítja a SingleThreadModel-t, és hozzáférhet minden megosztott objektumhoz, és következetlenséget okozhat.
Az isThreadSafe szintaxisa:
<% @ page isThreadSafe="true/false" %>
Itt az igaz vagy hamis azt jelenti, hogy van szinkronizálás, majd igaznak és hamisnak állítsa be.
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
A kód magyarázata:
A fenti kódban az isThreadSafe „true”-ra van állítva, így a szinkronizálás megtörténik, és több szál is használható.
8) Automatikus öblítés:
Ez az attribútum határozza meg, hogy a pufferelt kimenetet automatikusan ki kell-e üríteni vagy sem, és az attribútum alapértelmezett értéke igaz. Ha az értéke false, a puffer nem ürül ki automatikusan, ha pedig megtelik, kivételt kapunk. Ha a puffer nincs, akkor a false illegitim, és nincs pufferelés, ezért automatikusan kiürül.
Az autoFlush szintaxisa:
<% @ page autoFlush="true/false" %>
Itt az igaz/hamis azt jelenti, hogy el kell-e végezni a pufferelést vagy sem
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
A kód magyarázata:
A fenti kódban az automatikus öblítés false értékre van állítva, ezért a pufferelés nem történik meg, és manuálisan ürítette ki a kimenetet.
9) Buffer:
- Ennek az attribútumnak a használatával a kimeneti válaszobjektum pufferelhető.
- Ezzel az attribútummal meghatározhatjuk a pufferelés méretét, és az alapértelmezett méret 8 KB.
- Arra utasítja a szervletet, hogy írja be a puffert, mielőtt a válaszobjektumba írna.
A puffer szintaxisa:
<%@ page buffer="value" %>
Itt az érték a meghatározandó puffer méretét jelenti. Ha nincs puffer, akkor azt írhatjuk, hogy nincs, és ha nem említünk értéket, akkor az alapértelmezett 8KB
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
A kód magyarázata:
A fenti kódban a puffer mérete 16 KB, ahol a puffer ekkora méretű lenne
10) isErrorPage:
- Azt jelzi, hogy a hibaoldalt tartalmazó JSP-oldal egy másik JSP-oldalon kerül ellenőrzésre
- Minden „isErrorPage” attribútummal deklarált JSP-fájl ezután képes kivételeket fogadni más JSP-oldalakról, amelyek hibaoldalakat tartalmaznak.
- Kivételek csak ezekre az oldalakra vonatkoznak.
- Az alapértelmezett érték false.
Az isErrorPage szintaxisa:
<%@ page isErrorPage="true/false"%>
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
A kód magyarázata:
A fenti kódban az isErrorPage igaznak van beállítva. Ezért ellenőrizni fogja, hogy minden más JSP-ben van-e errorPage (a következő attribútumban ismertetett) attribútumkészlet, és képes kezelni a kivételeket.
11) Oldalkódolás:
A „pageEncoding” attribútum határozza meg a JSP-oldal karakterkódolását. Az alapértelmezett érték „ISO-8859-1”, ha más nincs megadva.
Az oldalkódolás szintaxisa:
<%@ page pageEncoding="vaue" %>
Itt az érték adja meg a JSP karakterkészlet értékét
Példa:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
A kód magyarázata:
A fenti kódban a „pageEncoding” alapértelmezett ISO-8859-1 karakterkészletre van állítva
12) hibaoldal:
Ez az attribútum a JSP-oldal hibaoldalának beállítására szolgál, ha a JSP kivételt dob, majd átirányít a kivételoldalra.
A hibaoldal szintaxisa:
<%@ page errorPage="value" %>
Itt az érték a hiba JSP-oldalértékét jelenti
Példa:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
A kód magyarázata:
A fenti kódban a kivételek kezelésére az errroHandler.jsp fájl található
13) figyelmen kívül hagyva:
- Az IsELIgnored egy flag attribútum, ahol el kell döntenünk, hogy figyelmen kívül hagyjuk-e az EL címkéket vagy sem.
- Adattípusa java enum, és az alapértelmezett érték false, ezért az EL alapértelmezés szerint engedélyezve van.
Az isELIgnored szintaxisa:
<%@ page isELIgnored="true/false" %>
Itt az igaz/hamis az EL értékét jelenti, függetlenül attól, hogy figyelmen kívül kell hagyni vagy sem.
Példa:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
A kód magyarázata:
A fenti kódban az isELIgnored igaz, ezért Kifejezési nyelv (EL) itt figyelmen kívül hagyják. Az alábbi példában négy attribútumot használunk (1-2 kódsor)
Példa négy attribútummal
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="false"%> <%@page import="java.util.Date" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Directive Guru JSP1</title> </head> <body> <a>Date is:</a> <%= new java.util.Date() %> </body> </html>
A kód magyarázata:
1-2. kódsor: Itt négy attribútumot határoztunk meg, pl
- Nyelv: így van beállítva Java mint programozási nyelv
- contentType: beállítva text/html-ként, hogy közölje a fordítóval, hogy a html-nek formátumban kell lennie
- pageEncoding: az alapértelmezett karakterkészlet van beállítva ebben az attribútumban
- isELIgnored: A kifejezéscímke hamis, ezért nem hagyja figyelmen kívül
3. kódsor: Itt import attribútumot használtunk, és a „Dátum osztályt” importálja, amely innen származik Java util csomagot, és megpróbáljuk megjeleníteni az aktuális dátumot a kódban.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja
teljesítmény:
- A dátum: Aktuális dátum a dátumosztály dátummódszerével
2)JSP Include direktíva
- A JSP „include direction” (kódsor 8) arra szolgál, hogy egy fájlt egy másik fájlba foglaljon
- Ez a mellékelt fájl lehet HTML, JSP, szöveges fájlok stb.
- Hasznos továbbá a felhasználói nézetekkel rendelkező sablonok létrehozásában, valamint az oldalak fejléc-lábléc és oldalsáv műveletekre való felosztásánál.
- Tartalmazza a fájlt a fordítási szakaszban
Az include direktíva szintaxisa:
<%@ include….%>
Példa:
Direktíva_jsp2.jsp (főfájl)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ include file="directive_header_jsp3.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP2</title> </head> <body> <a>This is the main file</a> </body> </html>
Direktíva_fejléc_jsp3.jsp (amely a fő fájlban található)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <a>Header file : </a> <%int count =1; count++; out.println(count);%> : </body> </html>
A kód magyarázata:
Direktíva_jsp2.jsp:
3. kódsor: Ebben a kódban az include címkéket használjuk, ahol a director_header_jsp3.jsp fájlt belefoglaljuk a főfájlba (_jsp2.jsp), és megkapja a főfájl és a mellékelt fájl kimenetét is.
Director_header_jsp3.jsp:
11-12. kódsor: A változók számát 1-re inicializáltuk, majd megnöveltük. Ez a kimenetet a fő fájlban adja meg, az alábbiak szerint.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:
output:
- A kimenet fejlécfájl: 2: Ez a fő fájl
- A kimenetet a directory_jsp2.jsp fájlból hajtja végre, míg a directory_header_jsp3.jsp fájlt először fordítja le.
- Miután a mellékelt fájl elkészült, a főfájl végrehajtásra kerül, és a kimenet az „Ez a főfájl” főfájlból lesz. Így a kimenetet „fejlécfájl: 2”-ként kapja meg a _jsp3.jsp-ből és „Ez a főfájl” a _jsp2.jsp-ből.
3) JSP Taglib irányelv
- A JSP taglib direktíva a címkekönyvtár meghatározására szolgál, előtagként „taglib”, amelyet használhatunk JSP.
- További részletek a JSP Egyéni címkék szakaszban találhatók
- A JSP taglib direktíva a JSP szabványos címkekönyvtárakat használó JSP-oldalakon használatos
- Egyéni címkéket használ, azonosítja a könyvtár helyét, és lehetőséget biztosít az egyéni címkék azonosítására a JSP oldalon.
A taglib direktíva szintaxisa:
<%@ taglib uri="uri" prefix="value"%>
Itt az „uri” attribútum egy egyedi azonosító a címkekönyvtár-leíróban, az „előtag” attribútum pedig egy címkenév.
Példa:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP</title> <gurutag:hello/> </head> <body> </body> </html>
A kód magyarázata:
3. kódsor: Itt a „taglib” uri és előtag attribútumokkal van definiálva.
9. kódsor: A „gurutag” az egyéni definiált címke, és bárhol használható