Le JavaServer Pages ou JSP
est une technologie basée sur Java
qui permet aux développeurs de générer dynamiquement du
code HTML, XML ou tout
autre type de page
Web. La technologie permet au code Java et à certaines
actions prédéfinies d'êtres ajoutés dans un contenu statique.
La syntaxe du JSP ajoute des balises XML, appelées actions
JSP, qui peuvent être utilisées pour appeler des fonctions.
De plus, la technologie permet la création de bibliothèques
de balises JSP (taglib) qui agissent comme des
extensions au HTML ou au XML. Les bibliothèques de balises
offrent une méthode indépendante de la plate-forme pour
étendre les fonctionnalités d'un serveur HTTP.
Les JSP sont compilées par un compilateur JSP pour devenir
des servlets
Java. Un compilateur JSP peut générer un servlet Java
en code source Java qui peut à sont tour être compilé par
le compilateur
Java, ou peut générer le pseudo-code
Java interprétable directement. Dans les deux cas, il
est bon de comprendre comment le compilateur JSP transforme
la page en servlet Java. À titre d'exemple, voyez un exemple
de page JSP avec le servlet et la page HTML résultants.
Syntaxe JSP
Un JSP peut être séparé en plusieurs parties :
- les données statiques comme le HTML
- les directives
- les scripts et variables
- les actions
- les balises personnalisées
Données statiques
Les données statiques sont écrites dans la réponse HTTP
exactement comme elles apparaissent dans le fichier source.
Un fichier JSP sans code Java et sans action serait donc
un fichier valide. Dans ce cas, les mêmes données seraient
envoyées à chaque fois que la page serait demandée par le
serveur HTTP. Bien sûr, l'intérêt des JSP est d'insérer
des données dynamiques à l'intérieur de ce contenu statique.
Directives JSP
Les directives contrôle comment le compilateur doit générer
le servlet. Elles sont placées entre les symboles « <%@ »
et « %> ». Les directives suivantes sont disponibles :
| Directive |
Description et exemple d'utilisation |
| include |
Cette directive indique au compilateur d'inclure un
autre fichier dans la page. C'est comme si le contenu
du fichier à inclure était directement copié dans le
fichier courant. Cette fonctionnalité est similaire
à celle offerte par le préprocesseur C.
<%@ include file="unAutreFichier" %>
|
| page |
Il y a plusieurs options à cette directive :
| import |
Importe un paquetage (package) Java.
Cette directive résulte en une instruction import
dans le servlet. |
| contentType |
Définit le type de contenu de la page générée.
Par exemple, ce peut être text/html pour
du HTML. |
| errorPage |
Indique la page à afficher si une exception
se produit pendant le traitement de la requête
HTTP. |
| isErrorPage |
Si cette valeur est à true, la page
est une page d'erreur. |
| isThreadSafe |
Indique si le servlet résultant est protégé
pour les threads (fils d'exécution). |
<%@ page import="java.util.*" %> //
import
<%@ page contentType="text/html" %>
// contentType
<%@ page isErrorPage=false %> // pas une page
d'erreur
<%@ page isThreadSave=true %> //JSP sécuritaire
aux threads
|
| taglib |
Directive qui indique qu'une bibliothèque de balises
doit être utilisée. Elle requiert qu'un préfixe soit
utilisé (comme un namespace en C++)
et l'URI
de la description de la bibliothèque.
<%@ taglib prefix="myprefix" uri="taglib/mytag.tld"
%>
|
Éléments de scripts JSP et variables
Variables de script standard
Les variables suivantes sont toujours disponibles dans
une page JSP :
- out : le JSPWriter utilisé pour envoyer
la réponse HTTP au client.
- page : le servlet lui-même.
- pageContext : une instance PageContext
qui contient les données associées à la page entière.
Une page HTML donnée peut être passée entre plusieurs
JSP.
- request : objet représentant la requête HTTP.
- response : objet représentant la réponse HTTP.
- session : la session HTTP, qui peut être utilisée
pour conserver de l'information à propos d'un utilisateur
d'une requête à une autre.
Éléments de script
Il y a trois types basiques d'éléments qui permettent d'insérer
du code Java dans le servlet.
| Élément |
Description et exemple |
| Déclaration (!) |
Une déclaration permet d'insérer du code directement
dans la classe du servlet. Elle peut être utilisée pour
définir une variable globale à la classe ou pour créer
des méthodes Java.
<%! int variableDeClasse = 0; %>
|
| Scriptlet |
Un Scriptlet est utilisé pour placer du code
dans la méthode _jspService() du Servlet. C'est
généralement l'élément utilisé pour placer tout code
Java, sauf les méthodes et les variables de classe.
<% int variable = 0;
out.println("On peut aussi écrire des variables : " + variable); %>
|
| Expression (=) |
Cet élément sert à afficher une expression. Ce code
est donc ajouté à la méthode _jspService(),
comme paramètre à un appel out.print().
Voici une variable : <%= variable %>
|
| Commentaire (--) |
Utilisé pour faire un commentaire dans le code JSP.
Le texte dans un commentaire JSP ne sera pas envoyé
au client ni compilé dans le servlet.
<%-- Voici un commentaire JSP --%>
|
[modifier]
Actions JSP
Les actions JSP sont des balises XML qui appellent des
fonctions sur serveur HTTP. Les actions suivantes sont disponibles.
| Action |
Description et exemple |
| jsp:include |
Agit de façon similaire à l'appel d'une sous-routine.
Le contrôle est temporairement donné à une autre page,
soit un autre fichier JSP, soit un fichier statique.
Après le traitement de l'autre page, le contrôle est
redonné au JSP en cours d'exécution. En utilisant
cette fonctionnalité, le code Java peut être partagé
entre deux pages plutôt que dupliqué.
<jsp:include page="pageÀInclure.jsp" >
<jsp:param name="paramètre" value="valeur" />
</jsp:include>
|
| jsp:param |
Peut être utilisé dans un bloc jsp:include, jsp:forward
ou jsp:params. Il indique un paramètre à être ajouté
aux paramètres actuels de la requête. Pour un
exemple, voir celui de jsp:include et jsp:forward. |
| jsp:forward |
Donne le contrôle de la requête et de la réponse
à une autre page JSP ou à un servlet. Le contrôle
est définitivement donné.
<jsp:forward page="pagePrenantContrôle.jsp" >
<jsp:param name="paramètre" value="valeur" />
</jsp:forward>
|
| jsp:plugin |
Les versions plus vieilles de Netscape et de
Internet
Explorer utilisaient différents types de balises
pour ajouter une applet. Cette action génère le code
nécessaire pour le navigateur utilisé par le client.
<jsp:plugin type="applet" height="100%" weight="100%"
codebase="/applets"
code="MonApplet" >
<jsp:params>
<jsp:param name="enableDebug" value="true" />
</jsp:params>
<jsp:fallback>
Votre navigateur ne supporte pas les applets Java.
</jsp:fallback>
</jsp:plugin>
|
| jsp:fallback |
Le contenu à montrer si le client ne supporte pas
l'affichage d'applet (utilisé avec jsp:plugin). Pour
un exemple, voir celui de jsp:plugin. |
| jsp:getProperty |
Retrouve la valeur d'une propriété provenant d'un
Java
bean.
<jsp:getProperty name="nomDeBean" property="derniereModif" />
|
| jsp:setProperty |
Règle la valeur d'une propriété d'un Java bean.
<jsp:setProperty name="nomDeBean"
property="derniereModif" value="<%= new Date()%>" />
|
| jsp:useBean |
Crée ou réutilise un Java bean déjà existant pour
pouvoir l'utiliser dans la page.
<jsp:useBean id="nomDeBean" class="package.Bean" scope="request" />
|
Bibliothèques de balises JSP
En plus des actions JSP pré-définies, les développeurs
peuvent ajouter leurs propres actions personnalisées
en utilisant l'API d'extension de balises JSP (JSP Tag
Exentesion API). Pour ce faire, il faut écrire une
classe Java qui implémente une des interfaces de balises
et écrire le fichier XML de description de balise qui donne
les caractéristiques du marqueur et les classes qui l'implémentent.
[modifier]
Liens externes
Récupérée de « http://fr.wikipedia.org/wiki/JavaServer_Pages
»
|