Směrnice JSP
Co jsou směrnice JSP?
- Direktivy JSP jsou zprávy do kontejneru JSP. Poskytují globální informace o celé stránce JSP.
- Direktivy JSP se používají k zadání speciálních instrukcí kontejneru pro překlad kódu JSP do kódu servletu.
- Ve fázi životního cyklu JSP musí být JSP převeden na servlet, který je fází překladu.
- Dávají kontejneru pokyny, jak zacházet s určitými aspekty zpracování JSP
- Direktivy mohou mít mnoho atributů oddělených čárkou jako páry klíč–hodnota.
- V JSP je směrnice popsána v
<%@ %>
značky.
Syntaxe směrnice:
<%@ directive attribute="" %>
Typy direktiv v JSP
V JSP existují tři typy direktiv:
- Směrnice stránky
- Zahrnout směrnici
- Direktiva Taglib
Každý z nich je podrobně popsán níže s příklady:
1) Direktiva JSP Page
Syntaxe direktivy Page:
<%@ page…%>
- Poskytuje atributy, které se použijí na celou stránku JSP.
- Definuje atributy závislé na stránce, jako je skriptovací jazyk, chybová stránka a požadavky na ukládání do vyrovnávací paměti.
- Používá se k poskytování pokynů pro kontejner, který se týká aktuální stránky JSP.
Níže je uveden seznam atributů spojených s direktivou stránky:
- Jazyk
- Rozšiřuje
- import
- typ obsahu
- info
- Zasedání
- isThreadSafe
- automatické proplachování
- nárazník
- IsErrorPage
- kódování stránky
- chybová stránka
- isELIgonored
Další podrobnosti o každém atributu
1) jazyk: Definuje programovací jazyk (podkladový jazyk) používaný na stránce.
Syntaxe jazyka:
<%@ page language="value" %>
Zde je hodnota programovací jazyk (podkladový jazyk)
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Vysvětlení kódu: Ve výše uvedeném příkladu je hodnota jazyka atributu Java což je v tomto případě základní jazyk. Kód ve značkách výrazu by tedy byl zkompilován pomocí kompilátoru Java.
2) Prodlužuje: Tento atribut se používá k rozšíření (zdědění) třídy jako JAVA
Syntaxe extends:
<%@ page extends="value" %>
Zde hodnota představuje třídu, ze které má být zděděna.
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Vysvětlení kódu: Ve výše uvedeném kódu JSP rozšiřuje DemoClass, který je součástí demotestu, a rozšíří všechny funkce třídy.
3) Import: Tento atribut je nejpoužívanějším atributem v atributech direktivy stránky. Používá se k tomu, aby sdělil kontejneru, aby importoval jiné třídy Java, rozhraní, výčty atd. při generování kódu servletu. Je podobný příkazům pro import v třídách Java, rozhraních.
Syntaxe importu:
<%@ page import="value" %>
Zde hodnota označuje třídy, které je třeba importovat.
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Vysvětlení kódu:
Ve výše uvedeném kódu importujeme třídu Date z balíčku java.util (všechny třídy utilit) a může používat všechny metody následující třídy.
4) ContentType:
- Definuje schéma kódování znaků, tj. používá se k nastavení typu obsahu a znakové sady odpovědi
- Výchozí typ contentType je
"text/html; charset=ISO-8859-1"
.
Syntaxe contentType:
<%@ page contentType="value" %>
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Vysvětlení kódu:
Ve výše uvedeném kódu je typ obsahu nastaven jako text/html, nastavuje kódování znaků pro JSP a pro vygenerovanou stránku odpovědi.
5) informace
- Definuje řetězec, ke kterému lze přistupovat pomocí metody getServletInfo().
- Tento atribut se používá k nastavení popisu servletu.
Syntaxe informací:
<%@ page info="value" %>
Zde hodnota představuje informace o servletu.
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Vysvětlení kódu:
Ve výše uvedeném kódu lze řetězec „Guru Direktiva JSP“ načíst rozhraním servletu pomocí getServletInfo()
6) Zasedání
- Stránka JSP ve výchozím nastavení vytváří relaci.
- Někdy nepotřebujeme, aby se relace vytvořila v JSP, a proto můžeme v takovém případě nastavit tento atribut na false. Výchozí hodnota atributu session je true a relace je vytvořena. Když je nastaveno na false, pak můžeme kompilátoru označit, že relaci ve výchozím nastavení nevytváří.
Syntaxe relace:
<%@ page session="true/false"%>
Zde v tomto případě může být atribut session nastaven na true nebo false
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Vysvětlení kódu:
Ve výše uvedeném příkladu je atribut relace nastaven na hodnotu „false“, čímž dáváme najevo, že v tomto JSP nechceme vytvářet žádnou relaci.
7) isThreadSafe:
- Definuje model vláken pro generovaný servlet.
- Označuje úroveň zabezpečení vláken implementované na stránce.
- Jeho výchozí hodnota je true, takže simultánní
- Tento atribut můžeme použít k implementaci rozhraní SingleThreadModel do generovaného servletu.
- Pokud jej nastavíme na hodnotu false, bude implementovat SingleThreadModel a bude mít přístup ke všem sdíleným objektům a může způsobit nekonzistenci.
Syntaxe isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Zde true nebo false představuje, zda je synchronizace tam, pak nastavte jako true a nastavte ji jako false.
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Vysvětlení kódu:
Ve výše uvedeném kódu je isThreadSafe nastaveno na „true“, takže synchronizace bude provedena a lze použít více vláken.
8) AutoFlush:
Tento atribut určuje, že výstup ve vyrovnávací paměti by měl být vyprázdněn automaticky nebo ne a výchozí hodnota tohoto atributu je true. Pokud je hodnota nastavena na false, buffer se automaticky nevyprázdní a pokud je plný, dostaneme výjimku. Když je vyrovnávací paměť žádná, pak je nepravda nelegitimní a neexistuje žádná vyrovnávací paměť, takže bude automaticky vyprázdněna.
Syntaxe autoFlush:
<% @ page autoFlush="true/false" %>
Zde true/false představuje, zda je třeba provést ukládání do vyrovnávací paměti nebo ne
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Vysvětlení kódu:
Ve výše uvedeném kódu je automatické vyprázdnění nastaveno na hodnotu false, a proto se ukládání do vyrovnávací paměti neprovede a výstup se vyprázdní ručně.
9) Buffer:
- Pomocí tohoto atributu může být objekt výstupní odezvy ukládán do vyrovnávací paměti.
- Pomocí tohoto atributu můžeme definovat velikost ukládání do vyrovnávací paměti a výchozí velikost je 8 kB.
- Řídí servletu, aby zapsal vyrovnávací paměť před zápisem do objektu odpovědi.
Syntaxe bufferu:
<%@ page buffer="value" %>
Zde hodnota představuje velikost vyrovnávací paměti, kterou je třeba definovat. Pokud není žádná vyrovnávací paměť, můžeme zapisovat jako žádná, a pokud neuvedeme žádnou hodnotu, pak výchozí hodnota je 8 kB
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Vysvětlení kódu:
Ve výše uvedeném kódu je velikost vyrovnávací paměti uvedena jako 16 kB, přičemž vyrovnávací paměť by měla tuto velikost
10) isErrorPage:
- Znamená to, že stránka JSP, která má chybovou stránku, bude zkontrolována na jiné stránce JSP
- Jakýkoli soubor JSP deklarovaný s atributem „isErrorPage“ je pak schopen přijímat výjimky z jiných stránek JSP, které mají chybové stránky.
- Výjimky jsou dostupné pouze pro tyto stránky.
- Výchozí hodnota je false.
Syntaxe isErrorPage:
<%@ page isErrorPage="true/false"%>
Příklad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Vysvětlení kódu:
Ve výše uvedeném kódu je isErrorPage nastavena jako true. Proto zkontroluje, zda má jakýkoli jiný JSP nastaven atribut errorPage (popsaný v dalším atributu) a dokáže zpracovat výjimky.
11) Kódování stránky:
Atribut „pageEncoding“ definuje kódování znaků pro stránku JSP. Výchozí hodnota je specifikována jako „ISO-8859-1“, pokud není specifikována žádná jiná.
Syntaxe pageEncoding:
<%@ page pageEncoding="vaue" %>
Zde hodnota určuje hodnotu znakové sady pro JSP
Příklad:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Vysvětlení kódu:
Ve výše uvedeném kódu bylo „pageEncoding“ nastaveno na výchozí znakovou sadu ISO-8859-1
12) chybová stránka:
Tento atribut se používá k nastavení chybové stránky pro stránku JSP, pokud JSP vyvolá výjimku a poté přesměruje na stránku výjimky.
Syntaxe errorPage:
<%@ page errorPage="value" %>
Zde hodnota představuje hodnotu chybové stránky JSP
Příklad:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Vysvětlení kódu:
Ve výše uvedeném kódu pro zpracování výjimek máme errroHandler.jsp
13) je EIGnorováno:
- IsELIgnored je příznakový atribut, kde se musíme rozhodnout, zda ignorovat EL tagy nebo ne.
- Jeho datový typ je java enum a výchozí hodnota je false, takže EL je ve výchozím nastavení povoleno.
Syntaxe isELIgnored:
<%@ page isELIgnored="true/false" %>
Pravda/nepravda zde představuje hodnotu EL, ať už má být ignorována nebo ne.
Příklad:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Vysvětlení kódu:
Ve výše uvedeném kódu je isELIgnored pravdivé a tedy jazyk výrazů (EL) je zde ignorován. V níže uvedeném příkladu používáme čtyři atributy (řádek kódu 1-2)
Příklad se čtyřmi atributy
<%@ 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>
Vysvětlení kódu:
Řádek 1–2 kódu: Zde jsme definovali čtyři atributy, tzn
- Jazyk: Je nastaven jako Java jako programovací jazyk
- contentType: nastavte jako text/html, abyste kompilátoru řekli, že html musí být ve formátu
- pageEncoding: v tomto atributu je nastavena výchozí znaková sada
- isELIgnored: Značka výrazu je false, proto není ignorována
3. řádek kódu: Zde jsme použili atribut import, a to import „třídy data“, která je z Java util balíček a snažíme se v kódu zobrazit aktuální datum.
Když spustíte výše uvedený kód, získáte následující výstup
Výstup:
- Datum je: Aktuální datum pomocí metody data třídy data
2) Direktiva JSP Include
- JSP „zahrnout direktiva“ (kódová řada 8) se používá k zahrnutí jednoho souboru do druhého souboru
- Tento zahrnutý soubor může být HTML, JSP, textové soubory atd.
- Je také užitečné při vytváření šablon s uživatelskými pohledy a rozdělení stránek na akce záhlaví a zápatí a postranního panelu.
- Zahrnuje soubor ve fázi překladu
Syntaxe směrnice include:
<%@ include….%>
Příklad:
Direktiva_jsp2.jsp (hlavní soubor)
<%@ 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>
Direktiva_header_jsp3.jsp (která je součástí hlavního souboru)
<%@ 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>
Vysvětlení kódu:
Direktiva_jsp2.jsp:
3. řádek kódu: V tomto kódu používáme značky include, kde vkládáme soubor direktiva_header_jsp3.jsp do hlavního souboru (_jsp2.jsp) a získává výstup hlavního souboru i zahrnutého souboru.
Direktiva_header_jsp3.jsp:
Řádek 11–12 kódu: Vzali jsme počet proměnných inicializovaný na 1 a poté jsme jej zvýšili. To poskytne výstup v hlavním souboru, jak je znázorněno níže.
Když spustíte výše uvedený kód, získáte následující výstup:
Výstup:
- Výstupem je hlavičkový soubor: 2 : Toto je hlavní soubor
- Výstup je proveden ze souboru direktiva_jsp2.jsp, zatímco zahrnutý soubor direktivy_header_jsp3.jsp bude zkompilován jako první.
- Po dokončení vloženého souboru se spustí hlavní soubor a výstup bude z hlavního souboru „Toto je hlavní soubor“. Získáte tedy výstup jako „Soubor záhlaví: 2“ z _jsp3.jsp a „Toto je hlavní soubor“ z _jsp2.jsp.
3) Směrnice JSP Taglib
- Direktiva JSP taglib se používá k definování knihovny značek s předponou „taglib“, kterou můžeme použít JSP.
- Více podrobností bude popsáno v sekci JSP Custom Tags
- Direktiva JSP taglib se používá na stránkách JSP pomocí standardních knihoven značek JSP
- Používá sadu vlastních značek, identifikuje umístění knihovny a poskytuje prostředky k identifikaci vlastních značek na stránce JSP.
Syntaxe direktivy taglib:
<%@ taglib uri="uri" prefix="value"%>
Zde je atribut „uri“ jedinečným identifikátorem v deskriptoru knihovny značek a atribut „prefix“ je název značky.
Příklad:
<%@ 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>
Vysvětlení kódu:
3. řádek kódu: Zde je „taglib“ definován s atributy uri a prefix.
9. řádek kódu: „gurutag“ je definovaná vlastní značka a lze ji použít kdekoli