Directives JSP

Que sont les directives JSP ?

  • Les directives JSP sont les messages envoyés au conteneur JSP. Ils fournissent des informations globales sur une page JSP entière.
  • Les directives JSP sont utilisées pour donner des instructions spéciales à un conteneur pour la traduction de JSP en code de servlet.
  • Dans la phase du cycle de vie de JSP, JSP doit être converti en servlet qui constitue la phase de traduction.
  • Ils donnent des instructions au conteneur sur la façon de gérer certains aspects du traitement JSP
  • Les directives peuvent avoir de nombreux attributs séparés par des virgules sous forme de paires clé-valeur.
  • Dans JSP, la directive est décrite dans <%@ %> Mots clés.

Syntaxe de la directive :

<%@ directive attribute="" %>

Types de directives dans JSP

Il existe trois types de directives dans JSP :

  1. Directive de page
  2. Inclure la directive
  3. Directive Taglib

Chacun d’entre eux est décrit en détail ci-dessous avec des exemples :

1) Directive de page JSP

Syntaxe de la directive Page :

<%@ page…%>
  • Il fournit des attributs qui sont appliqués à l'ensemble de la page JSP.
  • Il définit les attributs dépendants de la page, tels que le langage de script, la page d'erreur et les exigences de mise en mémoire tampon.
  • Il est utilisé pour fournir des instructions à un conteneur relatif à la page JSP actuelle.

Voici la liste des attributs associés à la directive page :

  1. Langue
  2. Étend
  3. Importer
  4. type de contenu
  5. d’informations.
  6. Session
  7. estThreadSafe
  8. rinçage automatique
  9. tampon
  10. EstErrorPage
  11. pageEncodage
  12. erreurPage
  13. estELIgonoré

Plus de détails sur chaque attribut

1) langue: Il définit le langage de programmation (langue sous-jacente) utilisée dans la page.

Syntaxe du langage :

<%@ page language="value" %>

Ici, la valeur est le langage de programmation (langage sous-jacent)

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

Explication du code: Dans l'exemple ci-dessus, la valeur de langue de l'attribut est Java qui est le langage sous-jacent dans ce cas. Par conséquent, le code des balises d’expression serait compilé à l’aide du compilateur Java.

2) Prolonge: Cet attribut est utilisé pour étendre (hériter) la classe comme le fait JAVA

Syntaxe de extends :

<%@ page extends="value" %>

Ici, la valeur représente la classe dont elle doit être héritée.

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	   pageEncoding="ISO-8859-1"%>

<%@ page extends="demotest.DemoClass" %>

Explication du code : Dans le code ci-dessus, JSP étend DemoClass qui fait partie du package demotest et étendra toutes les fonctionnalités de la classe.

3) Importer: Cet attribut est l'attribut le plus utilisé dans les attributs de directive de page. Il est utilisé pour indiquer au conteneur d'importer d'autres classes Java, interfaces, énumérations, etc. tout en générant du code de servlet. Il est similaire aux instructions d'importation dans les classes Java, les interfaces.

Syntaxe d'importation:

<%@ page import="value" %>

Ici, la valeur indique les classes qui doivent être importées.

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    import="java.util.Date" pageEncoding="ISO-8859-1"%>

Explication du code :

Dans le code ci-dessus, nous importons la classe Date à partir du package java.util (toutes les classes utilitaires) et elle peut utiliser toutes les méthodes de la classe suivante.

4) Type de contenu:

  • Il définit le schéma de codage des caractères, c'est-à-dire qu'il est utilisé pour définir le type de contenu et le jeu de caractères de la réponse.
  • Le type par défaut de contentType est "text/html; charset=ISO-8859-1".

Syntaxe du contentType :

<%@ page contentType="value" %>

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

Explication du code :

Dans le code ci-dessus, le type de contenu est défini sur text/html, il définit le codage des caractères pour JSP et pour la page de réponse générée.

5) informations

  • Il définit une chaîne accessible par la méthode getServletInfo().
  • Cet attribut est utilisé pour définir la description du servlet.

Syntaxe des informations :

<%@ page info="value" %>

Ici, la valeur représente les informations du servlet.

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>

Explication du code :

Dans le code ci-dessus, la chaîne « Guru Directive JSP » peut être récupérée par l'interface servlet à l'aide de getServletInfo()

6) Séance

  • La page JSP crée une session par défaut.
  • Parfois, nous n'avons pas besoin de créer une session dans JSP, et par conséquent, nous pouvons définir cet attribut sur false dans ce cas. La valeur par défaut de l'attribut session est true, et la session est créée. Lorsqu'il est défini sur false, nous pouvons indiquer au compilateur de ne pas créer la session par défaut.

Syntaxe de la session :

<%@ page session="true/false"%>

Ici, dans ce cas, l'attribut de session peut être défini sur true ou false

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    session="false"%>

Explication du code:

Dans l'exemple ci-dessus, l'attribut de session est défini sur « false », nous indiquons donc que nous ne voulons créer aucune session dans cette JSP.

7) estThreadSafe :

  • Il définit le modèle de thread pour le servlet généré.
  • Il indique le niveau de sécurité des threads implémenté dans la page.
  • Sa valeur par défaut est vraie donc simultanée
  • Nous pouvons utiliser cet attribut pour implémenter l'interface SingleThreadModel dans le servlet généré.
  • Si nous le définissons sur false, alors il implémentera SingleThreadModel et pourra accéder à tous les objets partagés et peut générer des incohérences.

Syntaxe de isThreadSafe :

<% @ page isThreadSafe="true/false" %>

Ici, true ou false représente si la synchronisation est là, puis définissez-la sur true et définissez-la sur false.

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isThreadSafe="true"%>

Explication du code :

Dans le code ci-dessus, isThreadSafe est défini sur « true », la synchronisation sera donc effectuée et plusieurs threads pourront être utilisés.

8) Chasse automatique :

Cet attribut spécifie si la sortie en mémoire tampon doit être vidée automatiquement ou non et la valeur par défaut de cet attribut est true. Si la valeur est définie sur false, la mémoire tampon ne sera pas vidée automatiquement et si elle est pleine, nous obtiendrons une exception. Lorsque la mémoire tampon est nulle, la valeur false est illégitime et il n'y a pas de mise en mémoire tampon, elle sera donc vidée automatiquement.

Syntaxe de autoFlush :

<% @ page autoFlush="true/false" %>

Ici, vrai/faux indique si la mise en mémoire tampon doit être effectuée ou non

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    autoFlush="false"%>

Explication du code :

Dans le code ci-dessus, le flux automatique est défini sur false et, par conséquent, la mise en mémoire tampon ne sera pas effectuée et la sortie sera manuellement vidée.

9) Buffer:

  • En utilisant cet attribut, l'objet de réponse de sortie peut être mis en mémoire tampon.
  • Nous pouvons définir la taille de la mise en mémoire tampon à effectuer en utilisant cet attribut et la taille par défaut est de 8 Ko.
  • Il demande au servlet d'écrire dans le tampon avant d'écrire dans l'objet de réponse.

Syntaxe du tampon :

<%@ page buffer="value" %>

Ici, la valeur représente la taille du tampon qui doit être défini. S'il n'y a pas de tampon, alors nous pouvons écrire comme aucun, et si nous ne mentionnons aucune valeur, la valeur par défaut est 8 Ko.

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    buffer="16KB"%>

Explication du code :

Dans le code ci-dessus, la taille du tampon est mentionnée comme étant de 16 Ko, le tampon étant de cette taille.

10) isErrorPage :

  • Cela indique que la page JSP comportant une page d'erreur sera vérifiée dans une autre page JSP.
  • Tout fichier JSP déclaré avec l'attribut « isErrorPage » est alors capable de recevoir des exceptions d'autres pages JSP qui ont des pages d'erreur.
  • Les exceptions sont disponibles pour ces pages uniquement.
  • La valeur par défaut est faux.

Syntaxe de isErrorPage :

<%@ page isErrorPage="true/false"%>

Mise en situation :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isErrorPage="true"%>

Explication du code :

Dans le code ci-dessus, isErrorPage est défini sur true. Par conséquent, il vérifiera que tous les autres JSP ont un jeu d'attributs errorPage (décrit dans l'attribut suivant) et il peut gérer les exceptions.

11) Encodage de page :

L'attribut « pageEncoding » définit le codage des caractères de la page JSP. La valeur par défaut est « ISO-8859-1 » si aucune autre valeur n'est spécifiée.

Syntaxe de pageEncoding :

<%@ page pageEncoding="vaue" %>

Ici, la valeur spécifie la valeur du jeu de caractères pour JSP

Mise en situation :

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isErrorPage="true"%>

Explication du code :

Dans le code ci-dessus, « pageEncoding » a été défini sur le jeu de caractères par défaut ISO-8859-1.

12) page d'erreur :

Cet attribut est utilisé pour définir la page d'erreur de la page JSP si JSP génère une exception, puis redirige vers la page d'exception.

Syntaxe de errorPage :

<%@ page errorPage="value" %>

Ici, la valeur représente la valeur de la page JSP d'erreur

Mise en situation :

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    errorPage="errorHandler.jsp"%>

Explication du code :

Dans le code ci-dessus, pour gérer les exceptions, nous avons errroHandler.jsp

13) estELIgnoré :

  • IsELIgnored est un attribut d'indicateur dans lequel nous devons décider d'ignorer ou non les balises EL.
  • Son type de données est java enum et la valeur par défaut est false donc EL est activé par défaut.

Syntaxe de isELIgnored :

<%@ page isELIgnored="true/false" %>

Ici, vrai/faux représente la valeur de EL, qu'elle doive être ignorée ou non.

Mise en situation :

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="true"%>

Explication du code :

Dans le code ci-dessus, isELIgnored est vrai et donc Langage d'expression (EL) est ignoré ici. Dans l'exemple ci-dessous, nous utilisons quatre attributs (ligne de code 1-2)

Exemple avec quatre attributs

<%@ 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>

Explication du code :

Ligne de code 1-2 : Ici, nous avons défini quatre attributs, à savoir

  • Langue : Elle est définie comme Java comme langage de programmation
  • contentType : défini comme text/html pour indiquer au compilateur que le HTML doit être au format
  • pageEncoding : le jeu de caractères par défaut est défini dans cet attribut
  • isELIgnored : la balise d'expression est fausse et n'est donc pas ignorée

Ligne de code 3 : Ici, nous avons utilisé l'attribut d'importation, et il s'agit d'importer une « classe de date » qui provient de Java util, et nous essayons d'afficher la date actuelle dans le code.

Lorsque vous exécutez le code ci-dessus, vous obtiendrez le résultat suivant

Directive sur les pages JSP

Sortie:

  • La date est : la date actuelle en utilisant la méthode de date de la classe de date

2)Directive d'inclusion JSP

  • La « directive d'inclusion » JSP (ligne de code 8) est utilisée pour inclure un fichier dans un autre fichier.
  • Ce fichier inclus peut être du HTML, du JSP, des fichiers texte, etc.
  • Il est également utile pour créer des modèles avec les vues utilisateur et diviser les pages en actions d'en-tête, de pied de page et de barre latérale.
  • Il inclut le fichier pendant la phase de traduction

Syntaxe de la directive include :

<%@ include….%>

Mise en situation :

Directive_jsp2.jsp (fichier principal)

<%@ 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>

Directive_header_jsp3.jsp (qui est inclus dans le fichier principal)

<%@ 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>

Explication du code :

Directive_jsp2.jsp :

Ligne de code 3 : Dans ce code, nous utilisons des balises d'inclusion dans lesquelles nous incluons le fichier directive_header_jsp3.jsp dans le fichier principal (_jsp2.jsp) et obtenons la sortie du fichier principal et du fichier inclus.

Directive_header_jsp3.jsp :

Ligne de code 11-12 : Nous avons pris un nombre de variables initialisé à 1 puis l'avons incrémenté. Cela donnera la sortie dans le fichier principal comme indiqué ci-dessous.

Lorsque vous exécutez le code ci-dessus, vous obtenez le résultat suivant :

Directive d'inclusion JSP

Sortie :

  • La sortie est le fichier d'en-tête : 2 : Il s'agit du fichier principal
  • La sortie est exécutée à partir du fichier directive_jsp2.jsp tandis que le fichier inclus directive_header_jsp3.jsp sera compilé en premier.
  • Une fois le fichier inclus terminé, le fichier principal est exécuté et la sortie proviendra du fichier principal « Ceci est le fichier principal ». Vous obtiendrez donc le résultat sous la forme « Fichier d'en-tête : 2 » de _jsp3.jsp et « Ceci est le fichier principal » de _jsp2.jsp.

3) Directive JSP Taglib

  • La directive JSP taglib est utilisée pour définir la bibliothèque de balises avec « taglib » comme préfixe, que nous pouvons utiliser dans JSP.
  • Plus de détails seront traités dans la section Balises personnalisées JSP
  • La directive JSP taglib est utilisée dans les pages JSP à l'aide des bibliothèques de balises standard JSP
  • Il utilise un ensemble de balises personnalisées, identifie l'emplacement de la bibliothèque et fournit des moyens d'identifier les balises personnalisées dans la page JSP.

Syntaxe de la directive taglib :

<%@ taglib uri="uri" prefix="value"%>

Ici, l'attribut « uri » est un identifiant unique dans le descripteur de la bibliothèque de balises et l'attribut « préfixe » est un nom de balise.

Mise en situation :

<%@ 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>

Explication du code :

Ligne de code 3 : Ici « taglib » est défini avec les attributs uri et préfixe.

Ligne de code 9 : « gurutag » est la balise personnalisée définie et elle peut être utilisée n'importe où