English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 :
Syntaxe | Description |
---|---|
jsp:include | Inclure un fichier au moment de la demande de la page. |
jsp:useBean | Chercher ou instancier un JavaBean. |
jsp:setProperty | Définir une propriété du JavaBean. |
jsp:getProperty | Sortir une propriété du JavaBean. |
jsp:forward | Rediriger la requête vers une nouvelle page. |
jsp:plugin | Générer les balises OBJECT ou EMBED pour le plugin Java en fonction du type de navigateur. |
jsp:element | Définir des éléments XML dynamiques |
jsp:attribute | Définir les attributs des éléments XML définis dynamiquement. |
jsp:body | Définir le contenu des éléments XML définis dynamiquement. |
jsp:text | Modèle d'écriture de texte utilisé dans les pages JSP et les documents. |
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'é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.
Attribut | Description |
---|---|
page | Adresse URL relative incluse dans la page. |
flush | Propriété booléenne, définissant s'il faut actualiser le tampon de cache avant d'inclure les ressources. |
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
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 :
Attribut | Description |
---|---|
class | Spécifiez le nom complet du paquet du Bean. |
type | Spécifiez le type de la variable d'objet à référence. |
beanName | Spé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 :
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 :
Attribut | Description |
---|---|
name | L'attribut name est obligatoire. Il indique pour quel Bean l'attribut doit être configuré. |
property | L'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. |
value | L'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é. |
param | param 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'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 :
Attribut | Description |
---|---|
name | nom de l'attribut Bean à rechercher. Le Bean doit être déjà défini. |
property | représente la valeur de l'attribut Bean à extraire |
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'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 :
Attribut | Description |
---|---|
page | L'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. |
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'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> 、 <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>动作元素允许在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>及不使用该动作元素执行结果的区别。