Les directives en JSP
Les directives en JSP
-
Objectifs
- Connaitre les directives en JSP
- Etre capable de travailler avec les directives page,include et taglib
-
Présentation
- Les directives sont des éléments qui permettent de préciser des informations relatives à la page.
- Les directives JSP sont des instructions insérées dans des tags HTML spéciaux.
- Les directives JSP permettent :
- d’importer un package ;
- d’inclure d’autres pages JSP ;
- d’inclure des bibliothèques de balises (nous y reviendrons dans un prochain chapitre) ;
- de définir des propriétés et informations relatives à une page JSP.
- La syntaxe des directives JSP est la suivante :
<%@ directive { attribut="valeur"} %>
- Il existe les trois directives suivantes :
- Les directives JSP commencent par
<%@
et se terminent par%>
. - Les directives sont parfois appelées directives de moteur JSP.
- Les directives fournissent des instructions et des paramètres qui déterminent la façon dont une page JSP est traitée. Par contre, une directive n’affecte que la page JSP qui la contient.
- Chaque directive a des attributs auxquels peuvent être affectées des valeurs spécifiques. L’instruction de directive inclut le nom de la directive, suivi de l’attribut et des paires de valeurs dont l’utilisation est souhaitée.
-
La directive page
-
Présentation
- La directive page est utilisée pour fournir des instructions au conteneur se rapportant à la page JSP actuelle.
- Vous pouvez coder les directives de page n’importe où dans votre page JSP. Par convention, les directives de page sont codées en haut de la page JSP.
-
Syntaxe
-
JSP
<%@ page attribute = "value" %>
-
XML
<jsp:directive.page attribute = "value" />
- Les espaces entre le symbole
@
et le nom de la directive, et entre le dernier attribut et la fermeture%>
, sont facultatifs. -
Attributs de la directive de page
- language
- Valeurs possibles: java
- Syntaxe:
<% @ page language = "valeur"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%>
- Description
- Permet de spécifier le langage à utiliser pour traiter les instructions de la page. Java est le langage utilisé majoritairement, mais on peut imaginer des servlets écrites dans un autre langage
- Dans la ligne ci-dessus, nous voyons les attributs de directive de page language , contentType et pageEncoding dans la même instruction de directive.
- contentType
- Valeurs possibles:text/html;charset=ISO-8859-1
- Syntaxe:
<% @ page contentType = "value"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%>
- Descriptionn
- Indique le type MIME de la page ainsi que le jeu de caractères utilisés
- L’attribut
contentType
définit le type MIME et le codage des caractères pour la réponse de la page JSP. - La valeur par défaut du type MIME est « text/html » pour les pages JSP dans une syntaxe standard. Cela affecte la sortie de la réponse JSP.
- Par exemple, si nous le changeons en « text/plain » (document en texte brut), certains navigateurs sont censés afficher le contenu HTML brut dans un tel cas. Ensuite, nous ne voyons que le contenu des codes HTML, pas la sortie HTML rendue.
- pageEncoding
- Valeurs possibles:ISO-8859-1
- Syntaxe:
<% @ page pageEncoding = "value"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%>
- Descriptionn
- L’attribut pageEncoding décrit le codage des caractères de la page JSP si elle est présente, sinon le «charset» donné par l’attribut contentType s’il est présent, sinon « ISO-8859-1 » par défaut.
- extends
- Valeurs possibles: package.class
- Description
- Permet de définir une classe à étendre, c’est-à-dire la classe parente de la servlet générée par JSP
- Syntaxe:
<% @ page extend = "value"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%>
<% @ page extend = "demotest.DemoClass"%>
- import
- Valeurs possibles: package.class|pakage.*
- Description
- Permet d’importer une liste de classes ou de packages en début de page, au même titre que dans une application Java.
- cet attribut est le plus utilisé dans les attributs de directive de page. Il est utilisé pour indiquer au conteneur d’importer d’autres classes java, interfaces, enums, etc. lors de la génération de code de servlet. Il est similaire aux instructions d’importation dans les classes et interfaces java.
- Syntaxe:
<% @ page import = "valeur"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
import = "java.util.Date" pageEncoding = "ISO-8859-1"%> - Session
- Valeurs possibles: true|false
- Description
- Permet de définir si la page actuelle peut accéder aux données stockées dans la session. Cet attribut est true par défaut
- Syntaxe:
<% @ page session = "true / false%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
session = "false"%> - buffer
- Valeurs possibles: none|8kb|sizekb
- Descriptionn
- Permet de définir si le flot de sortie est placé dans un tampon avant envoi. Par défaut la taille du tampon est de 8kb, mais il est possible de définir la taille en kb. Cet attribut s’utilise avec l’attribut autoflush
- Syntaxe:
<% @ page buffer = "valeur"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
buffer="16KB"%> - autoflush
- Valeurs possibles: true|false
- Descriptionn
- La valeur true (par défaut) indique que le tampon doit être vidé lorsqu’il est plein
- Syntaxe:
<% @ page autoFlush = "true / false"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
autoFlush = "false"%> - isThreadSafe
- Valeurs possibles:true|false
- Syntaxe:
<% @ page isThreadSafe = "true / false"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
isThreadSafe = "true"%> - Descriptionn
- La valeur true (par défaut) indique que plusieurs clients peuvent utilise simultanément la servlet. Lorsqu’elle vaut false, la servlet passe en mode monothread, ce qui signifie qu’un seul client\ peut accèder à la servlet à la fois. Cela est particulièrement utile si la servlet accède à une ressource qui ne peut être partagée
- L’ attribut de directive de page isThreadSafe Indique le niveau de sécurité des threads implémenté dans la page.
- La valeur par défaut de cet attribut est « true ». Ainsi, les demandes d’utilisateurs simultanées entraînent l’accès simultané de plusieurs threads à la méthode de service de la même instance de servlet.
- Le servlet synchronise l’accès aux données dans ses champs afin que des valeurs incohérentes ne résultent pas d’un ordre inattendu d’exécution des threads.
- info
- Valeurs possibles:Texte
- Descriptionn
- Permet de retourner une description grâce à la méthode
servlet.getServletInfo()
- Syntaxe:
<% @ page info = "valeur"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
info = "Directive Guru JSP" pageEncoding = "ISO-8859-1"%> - errorPage
- Valeurs possibles:URL
- Descriptionn
- Permet de spécifier une page JSP chargée de gérer les exceptions non gérées par celle-ci
- Syntaxe:
<% @ page errorPage = "true / false"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
errorPage="errorHandler.jsp"%> - isErrorPage
- Valeurs possibles:true|false
- Descriptionn
- Permet de spécifier si la page en cours est une page d’erreur
- Syntaxe:
<% @ page isErrorPage = "true / false"%>
- Exemple:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"
isErrorPage = "true"%> -
La directive include
-
Présentation
- La directive include est utilisée pour inclure un fichier pendant la phase de traduction.
-
Syntaxe
-
JSP
<%@ include file = "relative url">
-
XML
<jsp:directive.include file = "relative url" />
-
La directive taglib
- JSP est extensible et nous pouvons créer nos propres balises personnalisées pour effectuer certaines opérations ou utiliser d’autres bibliothèques de balises.
- Nous avons besoin de la directive taglib pour définir la bibliothèque de balises, elle identifie de manière unique la bibliothèque de balises à l’aide d’un uri et associe un préfixe de balise qui distinguera l’utilisation des actions dans la bibliothèque.
- Le dernier type de directive JSP est l’utilisation de librairies externes personnalisées, par le biais de la directive taglib (
<%@ taglib ...%>
), que nous utiliserons dans le chapitre dédié à cette technologie. - Le code ci-dessous montre un exemple de déclaration dans une page JSP:
-
Applications
- Soit les lignes de code suivantes:
- Quelles sont les attributs utulisées, expliquez le rôle de chacune
- Ligne de code 1-2: Ici, nous avons défini quatre attributs
Langage
: il est défini comme Java comme langage de programmationcontentType
: défini sur text / html pour indiquer au compilateur que le format HTML doit être au formatpageEncoding
: le jeu de caractères par défaut est défini dans cet attributisELIgnored
: la balise d’expression est fausse et n’est donc pas ignorée- Ligne de code 3: Ici, nous avons utilisé l’attribut
import
, et il importe la « classe de date » qui provient du package utilitaire Java, et nous essayons d’afficher la date actuelle dans le code. - Ligne de code 8:
- 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 HTML, 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
- Livre :Java EE Guide de développement d’applications web en Java. Autuer: Jérôme LAFOSSE
S.No. | Directive et description |
---|---|
1 | <% @ page ...%> Définit les attributs dépendant de la page, tels que le langage de script, la page d’erreur et les exigences de mise en mémoire tampon. |
2 | <% @ include ...%> Inclut un fichier pendant la phase de traduction. |
3 | <% @ taglib ...%> Déclare une bibliothèque de balises, contenant des actions personnalisées, utilisées dans la page |
<%@ taglib prefix="jgc" uri="WEB-INF/custom.tld"%> ... <jgc:HelloWorld/> ...
Bibliographie