Direttive JSP
Cosa sono le direttive JSP?
- Le direttive JSP sono i messaggi al contenitore JSP. Forniscono informazioni globali su un'intera pagina JSP.
- Le direttive JSP vengono utilizzate per fornire istruzioni speciali a un contenitore per la traduzione di JSP in codice servlet.
- Nella fase del ciclo di vita JSP, JSP deve essere convertito in un servlet che รจ la fase di traduzione.
- Forniscono istruzioni al contenitore su come gestire determinati aspetti dell'elaborazione JSP
- Le direttive possono avere molti attributi separati da virgole come coppie chiave-valore.
- In JSP, la direttiva รจ descritta in
<%@ %>tag.
Sintassi della direttiva:
<%@ directive attribute="" %>
Tipi di direttive in JSP
Esistono tre tipi di direttive in JSP:
- Direttiva sulla pagina
- Includi direttiva
- Direttiva Taglib
Ognuno di essi รจ descritto in dettaglio di seguito con esempi:
1) Direttiva della pagina JSP
Sintassi della direttiva Page:
<%@ pageโฆ%>
- Fornisce attributi che vengono applicati all'intera pagina JSP.
- Definisce gli attributi dipendenti dalla pagina, come il linguaggio di scripting, la pagina di errore e i requisiti di buffering.
- Viene utilizzato per fornire istruzioni a un contenitore che riguarda la pagina JSP corrente.
Di seguito รจ riportato l'elenco degli attributi associati alla direttiva di pagina:
- Lingue disponibili
- estende
- Importare
- tipo di contenuto
- Maggiori informazioni.
- Sessione
- รจThreadSafe
- scarico automatico
- bufferizzare
- IsErrorPage
- paginaCodifica
- errorePagina
- isELIgonorato
Maggiori dettagli su ogni attributo
1) lingua: Definisce il linguaggio di programmazione (lingua sottostante) utilizzato nella pagina.
Sintassi del linguaggio:
<%@ page language="value" %>
Qui il valore รจ il linguaggio di programmazione (linguaggio sottostante)
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Spiegazione del codice: Nell'esempio precedente, il valore della lingua dell'attributo รจ Java che รจ la lingua sottostante in questo caso. Pertanto, il codice nei tag di espressione verrebbe compilato utilizzando il compilatore Java.
2) Si estende: Questo attributo viene utilizzato per estendere (ereditare) la classe come fa JAVA
Sintassi di extends:
<%@ page extends="value" %>
Qui il valore rappresenta la classe da cui deve essere ereditato.
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Spiegazione del codice: Nel codice precedente JSP estende DemoClass che si trova all'interno del pacchetto demotest ed estenderร tutte le funzionalitร della classe.
3) Importa: Questo attributo รจ l'attributo piรน utilizzato negli attributi della direttiva di pagina. Viene utilizzato per indicare al contenitore di importare altre classi Java, interfacce, enumerazioni, ecc. durante la generazione del codice servlet. ร simile alle istruzioni di importazione nelle classi Java e nelle interfacce.
Sintassi di importazione:
<%@ page import="value" %>
Qui il valore indica le classi che devono essere importate.
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
import="java.util.Date" pageEncoding="ISO-8859-1"%>
Spiegazione del codice:
Nel codice soprastante importiamo la classe Date dal pacchetto java.util (tutte le classi di utilitร ) e puรฒ utilizzare tutti i metodi della classe seguente.
4) tipo di contenuto:
- Definisce lo schema di codifica dei caratteri, ovvero viene utilizzato per impostare il tipo di contenuto e il set di caratteri della risposta
- Il tipo predefinito di contentType รจ
"text/html; charset=ISO-8859-1".
Sintassi del contentType:
<%@ page contentType="value" %>
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Spiegazione del codice:
Nel codice precedente, il tipo di contenuto รจ impostato come text/html, imposta la codifica dei caratteri per JSP e per la pagina di risposta generata.
5) informazioni
- Definisce una stringa a cui รจ possibile accedere tramite il metodo getServletInfo().
- Questo attributo viene utilizzato per impostare la descrizione del servlet.
Sintassi delle informazioni:
<%@ page info="value" %>
Qui, il valore rappresenta le informazioni sul servlet.
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Spiegazione del codice:
Nel codice sopra, la stringa โGuru La direttiva "JSP" puรฒ essere recuperata dall'interfaccia servlet utilizzando getServletInfo()
6) Sessione
- La pagina JSP crea la sessione per impostazione predefinita.
- A volte non abbiamo bisogno che una sessione venga creata in JSP, e quindi, possiamo impostare questo attributo su false in quel caso. Il valore predefinito dell'attributo session รจ true, e la sessione viene creata. Quando รจ impostato su false, allora possiamo indicare al compilatore di non creare la sessione per impostazione predefinita.
Sintassi della sessione:
<%@ page session="true/false"%>
In questo caso l'attributo di sessione puรฒ essere impostato su true o false
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
session="false"%>
Spiegazione del codice:
Nell'esempio sopra, l'attributo session รจ impostato su "false", quindi indichiamo che non vogliamo creare alcuna sessione in questo JSP
7) รจThreadSafe:
- Definisce il modello di threading per il servlet generato.
- Indica il livello di sicurezza del thread implementato nella pagina.
- Il suo valore predefinito รจ true quindi simultaneo
- Possiamo utilizzare questo attributo per implementare l'interfaccia SingleThreadModel nel servlet generato.
- Se lo impostiamo su false, implementerร SingleThreadModel e potrร accedere a qualsiasi oggetto condiviso e puรฒ produrre incoerenze.
Sintassi di isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Qui vero o falso indica se la sincronizzazione รจ presente, quindi impostalo come vero e impostalo come falso.
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
isThreadSafe="true"%>
Spiegazione del codice:
Nel codice soprastante, isThreadSafe รจ impostato su "true", quindi verrร eseguita la sincronizzazione e potranno essere utilizzati piรน thread.
8) Lavaggio automatico:
Questo attributo specifica se l'output bufferizzato deve essere svuotato automaticamente o meno e il valore predefinito di tale attributo รจ true. Se il valore รจ impostato su false, il buffer non verrร svuotato automaticamente e se รจ pieno, otterremo un'eccezione. Quando il buffer รจ none, false รจ illegittimo e non c'รจ buffering, quindi verrร svuotato automaticamente.
Sintassi di autoFlush:
<% @ page autoFlush="true/false" %>
Qui vero/falso rappresenta se il buffering deve essere eseguito o meno
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
autoFlush="false"%>
Spiegazione del codice:
Nel codice sopra, l'autoflush รจ impostato su false e quindi il buffering non verrร eseguito e l'output verrร svuotato manualmente.
9) Buffer:
- Utilizzando questo attributo l'oggetto di risposta in output puรฒ essere messo in buffer.
- Possiamo definire la dimensione del buffering da effettuare utilizzando questo attributo; la dimensione predefinita รจ 8 KB.
- Indica al servlet di scrivere nel buffer prima di scrivere nell'oggetto di risposta.
Sintassi del buffer:
<%@ page buffer="value" %>
Qui il valore rappresenta la dimensione del buffer che deve essere definito. Se non c'รจ alcun buffer, allora possiamo scrivere come none, e se non menzioniamo alcun valore allora il valore predefinito รจ 8KB
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
buffer="16KB"%>
Spiegazione del codice:
Nel codice sopra, la dimensione del buffer รจ indicata come 16 KB, dove il buffer sarebbe di quella dimensione
10) รจErrorPage:
- Indica che la pagina JSP che contiene un errorePage verrร controllata in un'altra pagina JSP
- Qualsiasi file JSP dichiarato con l'attributo "isErrorPage" รจ quindi in grado di ricevere eccezioni da altre pagine JSP che contengono pagine di errore.
- Le eccezioni sono disponibili solo per queste pagine.
- Il valore predefinito รจ falso.
Sintassi di isErrorPage:
<%@ page isErrorPage="true/false"%>
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
isErrorPage="true"%>
Spiegazione del codice:
Nel codice precedente, isErrorPage รจ impostato su true. Pertanto, controllerร che qualsiasi altro JSP abbia impostato l'attributo errorPage (descritto nell'attributo successivo) e possa gestire le eccezioni.
11) Codifica della pagina:
L'attributo "pageEncoding" definisce la codifica dei caratteri per la pagina JSP. Il valore predefinito รจ specificato come "ISO-8859-1" se non รจ specificato alcun altro.
Sintassi di pageEncoding:
<%@ page pageEncoding="vaue" %>
Qui valore specifica il valore del set di caratteri per JSP
Esempio:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
isErrorPage="true"%>
Spiegazione del codice:
Nel codice sopra "pageEncoding" รจ stato impostato sul set di caratteri predefinito ISO-8859-1
12) pagina errore:
Questo attributo viene utilizzato per impostare la pagina di errore per la pagina JSP se JSP genera un'eccezione e quindi reindirizza alla pagina delle eccezioni.
Sintassi di errorPage:
<%@ page errorPage="value" %>
Qui il valore rappresenta il valore della pagina JSP di errore
Esempio:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
errorPage="errorHandler.jsp"%>
Spiegazione del codice:
Nel codice sopra, per gestire le eccezioni abbiamo errroHandler.jsp
13) isELIgnored:
- IsELIgnored รจ un attributo flag in cui dobbiamo decidere se ignorare o meno i tag EL.
- Il suo tipo di dati รจ Java enum e il valore predefinito รจ false, quindi EL รจ abilitato per impostazione predefinita.
Sintassi di isELIgnored:
<%@ page isELIgnored="true/false" %>
Qui, vero/falso rappresenta il valore di EL se deve essere ignorato o meno.
Esempio:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
isELIgnored="true"%>
Spiegazione del codice:
Nel codice sopra, isELIgnored รจ vero e quindi Linguaggio di espressione (EL) viene ignorato qui. Nell'esempio seguente stiamo usando quattro attributi (riga di codice 1-2)
Esempio con quattro attributi
<%@ 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>
Spiegazione del codice:
Code Linea 1-2: Qui abbiamo definito quattro attributi, ad es
- Lingua: รจ impostata come Java come linguaggio di programmazione
- contentType: impostato come text/html per indicare al compilatore che html deve essere formato
- pageEncoding: il set di caratteri predefinito รจ impostato in questo attributo
- isELIgnored: il tag di espressione รจ falso quindi non viene ignorato
Code Linea 3: Qui abbiamo utilizzato l'attributo di importazione e sta importando la "classe data" da cui proviene Java util e stiamo provando a visualizzare la data corrente nel codice.
Quando esegui il codice sopra, otterrai il seguente output
Uscita:
- La data รจ: data corrente utilizzando il metodo data della classe data
2) Direttiva JSP Include
- La "direttiva include" JSP (codeline 8) viene utilizzata per includere un file in un altro file
- Questo file incluso puรฒ essere HTML, JSP, file di testo, ecc.
- ร utile anche per creare modelli con le visualizzazioni dell'utente e suddividere le pagine in azioni di intestazione e piรจ di pagina e barra laterale.
- Include file in fase di traduzione
Sintassi della direttiva include:
<%@ includeโฆ.%>
Esempio:
Direttiva_jsp2.jsp (file principale)
<%@ 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>
Direttiva_header_jsp3.jsp (che รจ incluso nel file principale)
<%@ 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>
Spiegazione del codice:
Direttiva_jsp2.jsp:
Code Linea 3: In questo codice utilizziamo i tag include in cui includiamo il file direct_header_jsp3.jsp nel file principale (_jsp2.jsp) e otteniamo l'output sia del file principale che del file incluso.
Direttiva_header_jsp3.jsp:
Code Linea 11-12: Abbiamo preso un conteggio variabile inizializzato a 1 e poi lo abbiamo incrementato. Questo darร l'output nel file principale come mostrato di seguito.
Quando esegui il codice sopra ottieni il seguente output:
Produzione:
- L'output รจ File di intestazione: 2: questo รจ il file principale
- L'output viene eseguito dal file direttiva_jsp2.jsp mentre il file incluso direttiva_header_jsp3.jsp verrร compilato per primo.
- Una volta terminato il file incluso, viene eseguito il file principale e l'output sarร dal file principale "Questo รจ il file principale". Quindi otterrai l'output come "File intestazione: 2" da _jsp3.jsp e "Questo รจ il file principale" da _jsp2.jsp.
3) Direttiva JSP Taglib
- La direttiva taglib JSP viene utilizzata per definire la libreria di tag con "taglib" come prefisso, che possiamo utilizzare JSP.
- Maggiori dettagli saranno trattati nella sezione Tag personalizzati JSP
- La direttiva taglib JSP viene utilizzata nelle pagine JSP che utilizzano le librerie di tag standard JSP
- Utilizza una serie di tag personalizzati, identifica la posizione della libreria e fornisce mezzi per identificare i tag personalizzati nella pagina JSP.
Sintassi della direttiva taglib:
<%@ taglib uri="uri" prefix="value"%>
Qui l'attributo "uri" รจ un identificatore univoco nel descrittore della libreria di tag e l'attributo "prefisso" รจ un nome di tag.
Esempio:
<%@ 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>
Spiegazione del codice:
Code Linea 3: Qui โtaglibโ รจ definito con gli attributi uri e prefisso.
Code Linea 9: โgurutagโ รจ il tag personalizzato definito e puรฒ essere utilizzato ovunque


