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:

  1. Oldal irányelv
  2. Tartalmazza az irányelvet
  3. 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:

  1. Nyelv
  2. kiterjeszti
  3. import
  4. tartalom típus
  5. info
  6. ülés
  7. isThreadSafe
  8. automatikus öblítés
  9. ütköző
  10. IsErrorPage
  11. oldalKódolás
  12. hibaoldal
  13. 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

JSP oldal irányelv

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:

JSP Include direktíva

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ó