English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP 动作元素

Les éléments d'instruction JSP diffèrent des éléments d'action JSP, les éléments d'action JSP agissent à l'étape de traitement de la requête. Les éléments d'action JSP sont écrits en syntaxe XML.

Les actions JSP peuvent insérer dynamiquement des fichiers, réutiliser des composants JavaBean, rediriger les utilisateurs vers une autre page, générer du code HTML pour les plugins Java.

Les éléments d'action ont une seule syntaxe, elle est conforme aux normes XML :

<jsp:action_name attribute="value"> />

Les éléments d'action sont généralement des fonctions prédéfinies, la norme JSP définit une série d'actions standard, elles commencent par JSP, les éléments d'action standard disponibles sont les suivants :

SyntaxeDescription
jsp:includeInclure un fichier au moment de la demande de la page.
jsp:useBeanChercher ou instancier un JavaBean.
jsp:setPropertyDéfinir une propriété du JavaBean.
jsp:getPropertySortir une propriété du JavaBean.
jsp:forwardRediriger la requête vers une nouvelle page.
jsp:pluginGénérer les balises OBJECT ou EMBED pour le plugin Java en fonction du type de navigateur.
jsp:elementDéfinir des éléments XML dynamiques
jsp:attributeDéfinir les attributs des éléments XML définis dynamiquement.
jsp:bodyDéfinir le contenu des éléments XML définis dynamiquement.
jsp:textModèle d'écriture de texte utilisé dans les pages JSP et les documents.

Propriétés courantes

Tous les éléments d'action ont deux attributs : id et scope.

  • Attribut id :

    L'attribut id est l'identifiant unique de l'élément d'action, il 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 scope :

    Cette propriété est utilisée pour identifier le cycle de vie de l'élément d'action. Les attributs id et scope sont directement liés, l'attribut scope définissant la durée de vie des objets associés à l'id. L'attribut scope peut prendre 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 création. Le format syntaxique est le suivant :

<jsp:include page="adresse URL relative" flush="true"> />

 L'instruction include a déjà été présentée, elle est introduite lors de la conversion d'un fichier JSP en Servlet, tandis que l'action jsp:include ici diffère, l'inclusion de fichiers se fait au moment de la demande de la page.

Voici la liste des attributs associés à l'action include.

AttributDescription
pageAdresse URL relative incluse dans la page.
flushPropriété booléenne, définissant s'il faut actualiser le tampon de cache avant d'inclure les ressources.

Exemple en ligne

Dans ce qui suit, nous avons définis deux fichiers date.jsp et main.jspVoici le code comme suit :

Le code du fichier date.jsp :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
   La date d'aujourd'hui est : <%= (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>Base Tutorial Website(oldtoolbag.com)</title>
</head>
<body>
<h2>Exemple d'action include</h2>
<jsp:include page="date.jsp" flush="true" />
</body>
</html>

Placez maintenant ces deux fichiers dans le répertoire racine du serveur et accédez au fichier main.jsp. Le résultat affiché est le suivant :

Exemple d'action include
La date d'aujourd'hui est : 2016-6-25 14:08:17

L'élément d'action <jsp:useBean>

jsp:useBean L'action est utilisée pour charger un JavaBean qui sera utilisé dans la page JSP.

Cette fonction est très utile car elle permet de tirer parti des avantages de la réutilisation des composants Java.

La syntaxe la plus simple de l'action jsp:useBean est :

<jsp:useBean id="name" />

Après le chargement de la classe, nous pouvons modifier et récupérer les propriétés du bean à l'aide des actions jsp:setProperty et jsp:getProperty .

Voici la liste des propriétés liées à l'action useBean :

AttributDescription
classSpécifiez le nom complet du paquet du Bean.
typeSpécifiez le type de la variable d'objet à référence.
beanNameSpécifiez le nom du Bean par le biais de 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 :

L'élément d'action <jsp:setProperty>

jsp:setProperty est utilisé pour configurer les propriétés d'un objet Bean déjà instancié, et il existe deux utilisations. Tout d'abord, vous pouvez utiliser jsp:setProperty à l'extérieur (à la suite) de l'élément jsp:useBean, comme indiqué ci-dessous :

<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" ...>/>

Dans ce cas, peu importe si jsp:useBean trouve un Bean existant ou crée une nouvelle instance de Bean, jsp:setProperty s'exécute toujours. La deuxième utilisation consiste à insérer 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>

Dans ce cas, jsp:setProperty ne s'exécute que lors de la création d'une nouvelle instance de Bean, s'il utilise une instance existante, jsp:setProperty ne s'exécute pas.

L'action jsp:setProperty a les quatre propriétés suivantes, comme indiqué dans le tableau suivant :

AttributDescription
nameL'attribut name est obligatoire. Il indique pour quel Bean l'attribut doit être configuré.
propertyL'attribut property est obligatoire. Il représente l'attribut à définir. Il y a une utilisation spéciale : si la valeur de property est "}}*", ce qui signifie que tous les paramètres de requête whose noms correspondent aux noms et aux noms des attributs de Bean seront transmis aux méthodes set des attributs correspondants.
valueL'attribut value est optionnel. Il est utilisé pour spécifier la valeur de l'attribut Bean. Les données de chaîne sont automatiquement converties en nombre, boolean, Boolean, byte, Byte, char, Character dans la classe cible via la méthodevalueOf standard. Par exemple, les valeurs de type boolean et Boolean (comme "true") sont converties par Boolean.valueOf, les valeurs de type int et Integer (comme "42(") est converti par Integer.valueOf.   value et param ne peuvent pas être utilisés simultanément, mais l'un des deux peut être utilisé.
paramparam est optionnel. Il spécifie quel paramètre de requête est utilisé comme valeur de l'attribut Bean. Si la requête actuelle n'a pas de paramètres, rien ne se passe, le système ne transmet pas null à la méthode set de l'attribut Bean. Par conséquent, vous pouvez faire que le Bean fournisse des valeurs par défaut pour les attributs, et ces valeurs par défaut ne sont modifiées que lorsque les nouveaux valeurs spécifiés par les paramètres de la requête sont explicitement indiqués.

L'élément d'action jsp:getProperty

L'action jsp:getProperty extrait la valeur de l'attribut Bean spécifié, la convertit en chaîne de caractères, puis l'affiche. Le format grammatical est le suivant :

<jsp:useBean id="myName" ... />
...
<jsp:getProperty name="myName" property="someProperty" .../>

Le tableau suivant montre les attributs associés à getProperty :

AttributDescription
namenom de l'attribut Bean à rechercher. Le Bean doit être déjà défini.
propertyreprésente la valeur de l'attribut Bean à extraire

Exemple en ligne

Dans l'exemple suivant, nous avons utilisé Bean :

package com.w3codebox.main;
public class TestBean {
   private String message = "基础教程网";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

Compilation du fichier d'exemple suivant TestBean.java :

$ javac TestBean.java

Après compilation, un fichier sera généré dans le répertoire actuel. TestBean.class fichier , Copiez ce fichier dans le répertoire du projet JSP actuel : WebContent/WEB-INF/classes/com/w3codebox/mainsous ( com/w3codebox/Le chemin du paquet main, sans besoin de création manuelle).

Voici une vue de la structure de répertoires dans Eclipse :

Voici un exemple très simple, qui charge un Bean, puis configure/Lisez son attribut message.

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>Base Tutorial Website(oldtoolbag.com)</title>
</head>
<body>
<h2>Exemple d'utilisation de JavaBean par Jsp</h2>
<jsp:useBean id="test"> />
 
<jsp:setProperty name="test"> 
                    property="message" 
                    value="Tutoriel de base..." />
 
<p>Message de sortie....</p>
 
<jsp:getProperty name="test" property="message"> />
</body>
</html>

Lorsque le navigateur accède à ces fichiers, il exécute ce qui suit :

Élément d'action <jsp:forward>

 L'action jsp:forward redirige la requête vers une autre page. Le marqueur jsp:forward a un seul attribut page. Le format grammatical est indiqué ci-dessous :

<jsp:forward page="URL relative adresse"> />

Voici les attributs associés à forward :

AttributDescription
pageL'attribut page contient une URL relative. La valeur de page peut être fournie directement ou calculée dynamiquement lors de la requête, et peut être une page JSP ou un Servlet Java.

Exemple en ligne

Dans cet exemple, nous avons utilisé deux fichiers, à savoir : date.jsp et main.jsp.

Voici le code du fichier date.jsp :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
   La date d'aujourd'hui est : <%= (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>Base Tutorial Website(oldtoolbag.com)</title>
</head>
<body>
<h2>Exemple d'action forward</h2>
<jsp:forward page="date.jsp"> />
</body>
</html>

Placez maintenant ces deux fichiers dans le répertoire racine du serveur et accédez au fichier main.jsp. Le résultat affiché est le suivant :

La date d'aujourd'hui est : 2016-6-25 14:37:25

Élément d'action <jsp:plugin>

L'action plugin jsp est utilisée pour insérer les éléments OBJECT ou EMBED nécessaires pour exécuter les Java Applets via des plugins Java dans le navigateur.

Si le plugin nécessaire n'existe pas, il télécharge le plugin puis exécute le composant Java. Le composant Java peut être un applet ou un JavaBean.

Les actions plugin ont plusieurs attributs correspondant aux éléments HTML pour formatter les composants Java. L'élément param peut être utilisé pour transmettre des paramètres à l'Applet ou au Bean.

Voici un exemple typique utilisant 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>
      Impossible d'initialiser le Plugin Java
   </jsp:fallback>
 
</jsp:plugin>

Si vous êtes intéressé, vous pouvez essayer d'utiliser applet pour tester l'élément d'action jsp:plugin, l'élément <fallback> est un nouvel élément qui envoie des informations d'erreur à l'utilisateur en cas de défaillance du composant.

<jsp:element> 、 <jsp:attribute> 、 Élément d'action jsp:body

<jsp:element> 、 <jsp:attribute> 、 <jsp:body>Élément d'action définit dynamiquement l'élément XML. Le dynamisme est très important, ce qui signifie que les éléments XML sont générés dynamiquement lors de la compilation而非systématiquement.

Voici un exemple où l'élément XML est défini dynamiquement :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Base Tutorial Website(oldtoolbag.com)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
   Valeur de l'attribut
</jsp:attribute>
<jsp:body>
   Corps de l'élément XML
</jsp:body>
</jsp:element>
</body>
</html>

Le navigateur accède aux pages suivantes et affiche les résultats suivants :


<jsp:text>Élément d'action

<jsp:text>动作元素允许在JSP页面和文档中使用写入文本的模板,语法格式如下:

<jsp:text>模板数据</jsp:text>

以上文本模板不能包含重复元素,只能包含文本和EL表达式(注:EL表达式将在后续章节中介绍)。请注意,在XML文件中,您不能使用表达式如 ${whatever > 0},因为>符号是非法的。 你可以使用 ${whatever gt 0}表达式或者嵌入在一个CDATA部分的值。

<jsp:text><![CDATA[<br>]]></jsp:text>

如果你需要在 XHTML 中声明 DOCTYPE,必须使用到<jsp:text>动作元素,示例如下:

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

你可以对以上示例尝试使用<jsp:text>及不使用该动作元素执行结果的区别。