JSP Éléments d'action
Contrairement aux éléments de directive JSP, les éléments d'action JSP prennent effet pendant la phase de traitement de la requête. Les éléments d'action JSP sont écrits en syntaxe XML.
À l'aide des actions JSP, vous pouvez insérer dynamiquement des fichiers, réutiliser des composants JavaBean, rediriger les utilisateurs vers une autre page et générer du code HTML pour les plugins Java.
Les éléments d'action n'ont qu'une seule syntaxe, qui est conforme au standard XML :
<jsp:action_name attribute="value" />
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 :
| Syntaxe | Description |
|---|---|
| jsp:include | Inclut un fichier lorsque la page est demandée. |
| jsp:useBean | Recherche ou instancie un JavaBean. |
| jsp:setProperty | Définit les propriétés d’un JavaBean. |
| jsp:getProperty | Affiche la propriété d’un JavaBean. |
| jsp:forward | Transmet la requête vers une nouvelle page. |
| jsp:plugin | Génère des balises OBJECT ou EMBED pour les plugins Java en fonction du type de navigateur. |
| jsp:element | Définit des éléments XML dynamiques |
| jsp:attribute | Définit les attributs des éléments XML définis dynamiquement. |
| jsp:body | Définit le contenu des éléments XML définis dynamiquement. |
| jsp:text | Utilise des modèles pour écrire du texte dans les pages et documents JSP. |
Attributs courants
Tous les éléments d'action ont deux attributs : l'attribut id et l'attribut scope.
- attribut id :
L'attribut id est l'identifiant unique d'un élément d'action et peut être référencé dans les pages JSP. La valeur id créée par un élément d'action est accessible via PageContext.
- attribut scope :
Cet attribut est utilisé pour identifier le cycle de vie d'un élément d'action. L'attribut id et l'attribut scope sont directement liés ; 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) request, (c) session et (d) application.
Élément d'action <jsp:include>
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 地址" flush="true" />
Nous avons précédemment présenté la directive include, qui inclut des fichiers lorsque le fichier JSP est converti en Servlet. En revanche, l'action jsp:include ici est différente ; elle insère des fichiers lorsque la page est demandée.
Voici une liste des attributs liés à l'action include.
| Attribut | Description |
|---|---|
| page | L'adresse URL relative à inclure dans la page. |
| flush | Un attribut booléen qui définit s'il faut vider le tampon avant d'inclure la ressource. |
Exemple
Ci-dessous, nous définissons deux fichiersdate.jspetmain.jsp, le code est le suivant :
Code du fichier date.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
Code du fichier main.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h2>include 动作实例</h2>
<jsp:include page="date.jsp" flush="true" />
</body>
</html>
Placez maintenant les deux fichiers ci-dessus dans le répertoire racine du serveur et accédez au fichier main.jsp. Le résultat affiché est le suivant :
include 动作实例 今天的日期是: 2016-6-25 14:08:17
Élément d'action <jsp:useBean>
jsp:useBeanCette action est utilisée pour charger un JavaBean qui sera utilisé dans la page JSP.
Cette fonctionnalité est très utile car elle nous permet de tirer parti de la réutilisation des composants Java.
La syntaxe la plus simple de l'action jsp:useBean est :
<jsp:useBean id="name" class="package.class" />
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 d'attributs liés à l'action useBean.
| Attribut | Description |
|---|---|
| classe | Spécifie le nom de package pleinement qualifié du Bean. |
| type | Spécifie le type de la variable qui référencera cet objet. |
| beanName | Spécifie le nom du Bean via la méthode instantiate() de java.beans.Beans. |
Avant de donner des exemples concrets, examinons d'abord les éléments d'action jsp:setProperty et jsp:getProperty :
Élément d'action <jsp:setProperty>
jsp:setProperty est utilisé pour définir les propriétés d'un objet Bean déjà instancié. Il existe deux utilisations. Premièrement, vous pouvez utiliser jsp:setProperty à l'extérieur (après) l'élément jsp:useBean, comme indiqué ci-dessous :
<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 à l'intérieur de l'élément jsp:useBean, comme indiqué ci-dessous :
<jsp:useBean id="myName" ... > ... <jsp:setProperty name="myName" property="someProperty" .../> </jsp:useBean>
À ce stade, jsp:setProperty n'est exécuté que lorsqu'une nouvelle instance de Bean est créée ; si une instance existante est utilisée, jsp:setProperty n'est pas exécuté.
L'action jsp:setProperty possède les quatre attributs suivants, comme indiqué dans le tableau ci-dessous :
| Attribut | Description |
|---|---|
| name | L'attribut name est obligatoire. Il indique quelles propriétés du Bean doivent être définies. |
| property | L'attribut property est obligatoire. Il indique quelle propriété définir. Il existe un usage spécial : si la valeur de property est "*", cela signifie que tous les paramètres de requête dont les noms correspondent aux noms des propriétés du Bean seront transmis aux méthodes setter correspondantes. |
| value | L'attribut value est facultatif. Cet attribut est utilisé pour spécifier la valeur de la propriété du Bean. Les données de type String seront automatiquement converties vers les types numeric, boolean, Boolean, byte, Byte, char, Character dans la classe cible via la méthode standard valueOf. Par exemple, les valeurs de propriété de types boolean et Boolean (comme "true") sont converties via Boolean.valueOf, et les valeurs de propriété de types int et Integer (comme "42") sont converties via Integer.valueOf. value et param ne peuvent pas être utilisés en même temps, mais l'un ou l'autre peut être utilisé. |
| param | param est facultatif. Il spécifie quel paramètre de requête utiliser comme valeur de la propriété du Bean. Si la requête actuelle n'a pas de paramètre, rien n'est fait ; le système ne transmettra pas null à la méthode setter de la propriété du Bean. Par conséquent, vous pouvez laisser le Bean fournir ses propres valeurs de propriété par défaut, et ne modifier les valeurs par défaut que lorsque le paramètre de requête spécifie explicitement une nouvelle valeur. |
<jsp:getProperty> Élément d'action
L'action jsp:getProperty extrait la valeur de la propriété spécifiée du Bean, la convertit en une chaîne, puis l'affiche. Le format de syntaxe est le suivant :
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
Le tableau suivant répertorie les attributs associés à getProperty :
| Attribut | Description |
|---|---|
| name | Le nom de la propriété du Bean à récupérer. Le Bean doit déjà être défini. |
| property | Indique la valeur de la propriété du Bean à extraire. |
Exemple
Dans l'exemple suivant, nous utilisons un Bean :
package com.example.main;
public class TestBean {
private String message = "Example";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
Compilez le fichier d'exemple TestBean.java ci-dessus :
$ javac TestBean.java
Après compilation, un fichierTestBean.classsera généré dans le répertoire courant. Copiez ce fichier dans le répertoireWebContent/WEB-INF/classes/com/example/maindu projet JSP actuel (chemin du package com/example/main, créez-le manuellement s'il n'existe pas).
Voici un diagramme de la structure des répertoires dans Eclipse :

Voici un exemple très simple dont la fonction est de charger un Bean puis de définir/lire sa propriété message.
Maintenant, appelons ce Bean dans le fichier main.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h2>Jsp 使用 JavaBean 实例</h2>
<jsp:useBean id="test" class="com.example.main.TestBean" />
<jsp:setProperty name="test"
property="message"
value="Example..." />
<p>输出信息....</p>
<jsp:getProperty name="test" property="message" />
</body>
</html>
Accédez-y via un navigateur, exécutez le fichier ci-dessus, et la sortie est la suivante :

Élément d'action <jsp:forward>
L'action jsp:forward transmet la requête à 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 地址" />
Voici les attributs associés à forward :
| Attribut | Description |
|---|---|
| page | L'attribut page contient une URL relative. La valeur de page peut être donnée directement, ou elle peut être calculée dynamiquement lors de la requête. Il peut s'agir d'une page JSP ou d'un Java Servlet. |
Exemple
Dans l'exemple suivant, nous utilisons deux fichiers : date.jsp et main.jsp.
Le code du fichier date.jsp est le suivant :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
Le code du fichier main.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h2>forward 动作实例</h2>
<jsp:forward page="date.jsp" />
</body>
</html>
Placez maintenant les deux fichiers ci-dessus dans le répertoire racine du serveur et accédez au fichier main.jsp. Le résultat affiché est le suivant :
今天的日期是: 2016-6-25 14:37:25
<jsp:plugin> Élément d'action
L'action jsp:plugin est utilisée pour insérer les éléments OBJECT ou EMBED nécessaires à l'exécution d'applets Java via le plugin Java, selon le type de navigateur.
Si le plugin requis n'existe pas, il télécharge le plugin et exécute ensuite le composant Java. Le composant Java peut être une applet ou un JavaBean.
L'action plugin a plusieurs attributs correspondant aux éléments HTML pour formater le composant Java. L'élément param peut être utilisé pour passer des paramètres à l'Applet ou au Bean.
Voici un exemple typique d'utilisation de l'élément d'action plugin :
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"
width="60" height="80">
<jsp:param name="fontcolor" value="red" />
<jsp:param name="background" value="black" />
<jsp:fallback>
Unable to initialize Java Plugin
</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 qui envoie un message d'erreur à l'utilisateur lorsque le composant échoue.
<jsp:element>, <jsp:attribute>, <jsp:body> Éléments d'action
Les éléments d'action <jsp:element>, <jsp:attribute> et <jsp:body> définissent dynamiquement des éléments XML. Le terme « dynamique » est très important, ce qui signifie que les éléments XML sont générés dynamiquement au moment de la compilation plutôt que de manière statique.
L'exemple suivant définit dynamiquement des éléments XML :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
属性值
</jsp:attribute>
<jsp:body>
XML 元素的主体
</jsp:body>
</jsp:element>
</body>
</html>
Lorsque le navigateur accède à la page suivante, le résultat de sortie est le suivant :
<jsp:text> Élément d'action
L'élément d'action <jsp:text> permet l'utilisation de modèles de texte dans les pages et documents JSP. Le format de syntaxe est le suivant :
<jsp:text>模板数据</jsp:text>
Le modèle de texte ci-dessus ne peut pas contenir d'éléments en double, uniquement 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 des expressions comme ${whatever > 0} car le symbole > est illégal. Vous pouvez utiliser l'expression ${whatever gt 0} ou une valeur intégrée dans une section CDATA.
<jsp:text><![CDATA[<br>]]></jsp:text>
Si vous devez déclarer un DOCTYPE dans XHTML, vous devez utiliser l'élément d'action <jsp:text>. Exemple :
<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>
Welcome to JSP Programming
</jsp:text></book></books>
</body>
</html>
Pour l'exemple ci-dessus, vous pouvez essayer la différence entre l'utilisation de <jsp:text> et la non-utilisation de cet élément d'action.
Autres extensions