Contrairement aux éléments de directive JSP, les éléments d'action JSP fonctionnent pendant la phase de traitement de la demande. Les éléments d'action JSP sont écrits dans la syntaxe XML.
Utilisez les actions JSP pour insérer dynamiquement des fichiers, réutiliser les composants JavaBean, rediriger les utilisateurs vers d'autres pages et générer du code HTML pour les plug-ins Java.
Il n'existe qu'une seule syntaxe pour les éléments d'action, et elle est conforme au standard XML :
<jsp:action_name attribut="valeur" />
Les éléments d'action sont essentiellement des fonctions prédéfinies. La spécification JSP définit une série d'actions standard, qui utilisent JSP comme préfixe. Les éléments d'action standard disponibles sont les suivants :
grammaire | décrire |
---|---|
jsp: inclure | Importez un fichier lorsque la page est demandée. |
jsp:utiliserBean | Recherchez ou instanciez un JavaBean. |
jsp:setPropriété | Définissez les propriétés de JavaBean. |
jsp:getPropriété | Affiche les propriétés d'un JavaBean. |
jsp: en avant | Envoyez la demande vers une nouvelle page. |
jsp: plugin | Génère des balises OBJECT ou EMBED pour les plug-ins Java en fonction du type de navigateur. |
jsp:élément | Définir des éléments XML dynamiques |
jsp:attribut | Définissez les attributs des éléments XML définis dynamiquement. |
jsp: corps | Définit le contenu d'un élément XML défini dynamiquement. |
jsp:texte | Utiliser des modèles qui écrivent du texte dans des pages et des documents JSP |
Tous les éléments d'action ont deux attributs : l'attribut id et l'attribut scope.
attribut d'identifiant :
L'attribut id est l'identifiant unique de l'élément d'action et peut être référencé dans la page JSP. La valeur id créée par l'élément d'action peut être appelée via PageContext.
attribut de portée :
Cet attribut est utilisé pour identifier le cycle de vie de l'élément d'action. L'attribut id est directement lié à l'attribut scope, et l'attribut scope définit la durée de vie de l'objet id associé. L'attribut scope a quatre valeurs possibles : (a) page, (b) requête, (c) session et (d) application.
L'élément d'action <jsp:include> est utilisé pour inclure des fichiers statiques et dynamiques. Cette action insère le fichier spécifié dans la page en cours de génération. Le format de syntaxe est le suivant :
<jsp:include page="URL relative" flush="true" />
La directive include a déjà été introduite. Elle introduit des fichiers lorsque le fichier JSP est converti en servlet. L'action jsp:include ici est différente. Le moment où le fichier est inséré est celui où la page est demandée.
Voici une liste de propriétés liées à l’action d’inclusion.
propriété | décrire |
---|---|
page | L'adresse URL relative contenue dans la page. |
flush | Propriété booléenne qui définit si le cache doit être vidé avant d'inclure la ressource. |
Ci-dessous nous définissons deux fichiers date.jsp et main.jsp, le code est le suivant :
Code du fichier date.jsp :
<p> Date du jour : <%= (new java.util.Date()).toLocaleString()%></p>
Code du fichier main.jsp :
<html><head><title>Exemple d'action d'inclusion</title></head><body><center><h2>Exemple d'action d'inclusion</h2><jsp:include page="date.jsp" flush ="true" /></center></body></html>
Placez maintenant les deux fichiers ci-dessus dans le répertoire racine du serveur et accédez au fichier main.jsp. Les résultats affichés sont les suivants :
L'action d'inclusion ExempleDate d'aujourd'hui : 12 septembre 2013 14:54:22
L'action jsp:useBean permet de charger un JavaBean qui sera utilisé dans la page JSP.
Cette fonctionnalité est très utile car elle nous permet de profiter de la réutilisation des composants Java tout en évitant la perte de la commodité qui distingue JSP des Servlets.
La syntaxe la plus simple pour l'action jsp:useBean est :
<jsp:useBean id="nom" />
Une fois la classe chargée, nous pouvons modifier et récupérer les propriétés du bean via les actions jsp:setProperty et jsp:getProperty.
Voici une liste de propriétés liées à l'action useBean.
propriété | décrire |
---|---|
classe | Spécifiez le nom complet du package du bean. |
taper | Spécifie le type qui fera référence à la variable objet. |
nom du haricot | Spécifiez le nom du Bean via la méthode instantiate() de java.beans.Beans. |
Avant de donner des exemples spécifiques, regardons d'abord les éléments d'action jsp:setProperty et jsp:getProperty :
jsp:setProperty est utilisé pour définir les propriétés de l'objet Bean instancié. Il existe deux façons de l'utiliser. Tout d’abord, vous pouvez utiliser jsp:setProperty en dehors (derrière) l’élément jsp:useBean, comme ceci :
<jsp:useBean id="myName" ... />...<jsp:setProperty name="myName" property="someProperty" .../>
À ce stade, que jsp:useBean trouve un Bean existant ou crée une nouvelle instance de Bean, jsp:setProperty sera exécuté. La deuxième utilisation consiste à placer jsp:setProperty dans l'élément jsp:useBean, comme indiqué ci-dessous :
<jsp:useBean id="myName" ... >... <jsp:setProperty name="myName" property="someProperty" .../></jsp:useBean>
Pour le moment, jsp:setProperty ne sera exécuté que lors de la création d'une nouvelle instance de Bean. Si une instance existante est utilisée, jsp:setProperty ne sera pas exécuté.
propriété | décrire |
---|---|
nom | L'attribut name est obligatoire. Il indique sur quel Bean la propriété doit être définie. |
propriété | L'attribut property est obligatoire. Il indique quelle propriété définir. Il existe un usage spécial : si la valeur de la propriété est "*", cela signifie que tous les paramètres de requête dont les noms correspondent aux noms de propriété du Bean seront transmis à la méthode de jeu de propriétés correspondante. |
valeur | L'attribut value est facultatif. Cette propriété est utilisée pour spécifier la valeur de la propriété Bean. Les données de chaîne seront automatiquement converties en nombres, booléens, booléens, octets, octets, char et caractères via la méthode valueOf standard dans la classe cible. Par exemple, les valeurs d'attribut de type booléen et booléen (telles que "true") sont converties par Boolean.valueOf, et les valeurs d'attribut de type int et Integer (telles que "42") sont converties par Integer.valueOf. La valeur et le paramètre ne peuvent pas être utilisés en même temps, mais l'un ou l'autre peut être utilisé. |
paramètre | le paramètre est facultatif. Il spécifie quel paramètre de requête est utilisé comme valeur de la propriété Bean. Si la requête actuelle n'a aucun paramètre, rien ne sera fait et le système ne transmettra pas null à la méthode set de la propriété Bean. Par conséquent, vous pouvez laisser le bean fournir lui-même la valeur de propriété par défaut et modifier la valeur de propriété par défaut uniquement lorsque le paramètre de requête spécifie explicitement une nouvelle valeur. |
L'action jsp:getProperty extrait la valeur de la propriété Bean spécifiée, la convertit en chaîne, puis la génère. Le format de syntaxe est le suivant :
<jsp:useBean id="myName" ... />...<jsp:getProperty name="myName" property="someProperty" .../>
Le tableau suivant présente les propriétés associées à getProperty :
propriété | décrire |
---|---|
nom | Le nom de la propriété Bean à récupérer. Le bean doit être défini. |
propriété | Indique que la valeur de la propriété Bean doit être extraite |
Dans les exemples suivants, nous utilisons des Beans :
/* Fichier : TestBean.java */package action ; public class TestBean { private String message = "Aucun message spécifié" ; public String getMessage() { return(message); public void setMessage(String message) { this.message = message; }}
Compilez l'exemple ci-dessus et générez le fichier TestBean.class. Copiez le fichier dans le répertoire où le serveur stocke officiellement les classes Java, plutôt que dans le répertoire réservé aux classes qui peuvent être automatiquement chargées après modification (par exemple : C:apache-tomcat). -7.0.2 répertoire webappsWEB-INFclassesaction, la variable CLASSPATH doit contenir ce chemin). Par exemple, pour Java Web Server, les beans et toutes les classes utilisées par les beans doivent être placés dans le répertoire classes, ou encapsulés dans des fichiers jar et placés dans le répertoire lib, mais ils ne doivent pas être placés sous des servlets. Ce qui suit est un exemple très simple. Sa fonction est de charger un Bean puis de définir/lire sa propriété de message.
Appelons maintenant le Bean dans le fichier main.jsp :
<html><head><title>Utilisation de JavaBeans dans JSP</title></head><body><center><h2>Utilisation de JavaBeans dans JSP</h2> <jsp:useBean id="test" /> < jsp:setProperty name="test" property="message" value="Bonjour JSP..." /> <p>Message reçu....</p> <jsp:getProperty name="test" property="message " /> </center></body></html>
Exécutez le fichier ci-dessus et le résultat sera le suivant :
Utilisation de JavaBeans dans le message JSPGot....Bonjour JSP...
L'action jsp:forward transmet la requête vers une autre page. La balise jsp:forward n'a qu'un seul attribut, page. Le format de syntaxe est le suivant :
<jsp:forward page="URL relative" />
Voici les attributs associés à forward :
propriété | décrire |
---|---|
page | L'attribut page contient une URL relative. La valeur de la page peut être donnée directement ou calculée dynamiquement lors de la requête. Il peut s'agir d'une page JSP ou d'un servlet Java. |
Nous utilisons deux fichiers dans les exemples suivants : date.jsp et main.jsp.
Le code du fichier date.jsp est le suivant :
<p> Date du jour : <%= (new java.util.Date()).toLocaleString()%></p>
Code du fichier main.jsp :
<html><head><title>L'exemple d'action forward</title></head><body><center><h2>L'exemple d'action forward</h2><jsp:forward page="date.jsp" / ></centre></corps>
Placez maintenant les deux fichiers ci-dessus dans le répertoire racine du serveur et accédez au fichier main.jsp. Les résultats affichés sont les suivants :
Date d'aujourd'hui : 12 septembre 2010 14:54:22
L'action jsp:plugin est utilisée pour insérer les éléments OBJECT ou EMBED nécessaires à l'exécution de l'applet Java via le plug-in Java, selon le type de navigateur.
Si le plug-in requis n'existe pas, il télécharge le plug-in puis exécute le composant Java. Un composant Java peut être une applet ou un JavaBean.
L'action du plugin possède plusieurs attributs correspondant aux éléments HTML utilisés pour formater les composants Java. L'élément param peut être utilisé pour transmettre des paramètres à Applet ou Bean.
Ce qui suit est un exemple typique d’utilisation de l’élément d’action du plugin :
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" > <jsp:param name="fontcolor" value="red" /> <jsp:param name="background" value=" black" /> <jsp:fallback> Impossible d'initialiser le plugin Java </jsp:fallback> </jsp:plugin>
Si vous êtes intéressé, vous pouvez essayer d'utiliser une applet pour tester l'élément d'action jsp:plugin. L'élément <fallback> est un nouvel élément. Lorsque le composant échoue, un message d'erreur est envoyé à l'utilisateur.
Les éléments d'action <jsp:element>, <jsp:attribute>, <jsp:body> définissent dynamiquement les éléments XML. La dynamique est très importante, ce qui signifie que les éléments XML sont générés dynamiquement au moment de la compilation plutôt que statiques.
L'exemple suivant définit dynamiquement des éléments XML :
<%@page language="java" contentType="text/html"%><html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun. com/JSP/Page"><head><title>Générer un élément XML</title></head><body><jsp:element name="xmlElement"><jsp:attribute name="xmlElementAttr"> Valeur pour le attribut</jsp:attribute><jsp:body> Corps de l'élément XML</jsp:body></jsp:element></body></html>
Le code HTML généré lors de l'exécution est le suivant :
<html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <head><title>Générer un élément XML</ title></head><body><xmlElement xmlElementAttr="Valeur de l'attribut"> Corps de l'élément XML</xmlElement></body></html>
L'élément d'action <jsp:text> permet l'utilisation de modèles pour écrire du texte dans les pages et documents JSP. Le format de syntaxe est le suivant :
<jsp:text>Données du modèle</jsp:text>
Le modèle de texte ci-dessus ne peut pas contenir d'autres éléments, mais ne peut contenir que du texte et des expressions EL (Remarque : les expressions EL seront introduites dans les chapitres suivants). Veuillez noter que dans les fichiers XML, vous ne pouvez pas utiliser d'expressions telles que ${whatever > 0} car le symbole > est illégal. Vous pouvez utiliser l'expression ${whatever gt 0} ou la valeur intégrée dans une section CDATA.
<jsp:text><![CDATA[<br>]]></jsp:text>
Si vous devez déclarer DOCTYPE en XHTML, vous devez utiliser l'élément d'action <jsp:text>. Un exemple est le suivant :
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">]]></jsp:text>< head><title>jsp:text action</title></head><body><books><book><jsp:text> Bienvenue dans JSP Programmation</jsp:text></book></books></body></html>
Vous pouvez essayer l'exemple ci-dessus pour voir la différence entre utiliser <jsp:text> et ne pas utiliser cet élément d'action.