Vous êtes sur la page 1sur 21

Chapitre 3:

JSP (Java Server Page)


(suite)
Les balises
1. Balises de commentaire
2. Balises de déclaration
3. Balises de scriptlet
4. Balises d'expression
1. Balises de commentaire :
out comme dans les langages Java et HTML, il est
possible d'écrire des commentaires dans le code de vos
pages JSP. Ils doivent être compris entre les balises :
<%-- et --%>

<!DOCTYPE html>
<html>
<head> <meta charset="utf-8" /> <title>Exemple</title>
</head>
<body>
<%-- Ceci est un commentaire JSP %>
<!-- Ceci est un simple commentaire HTML. -->
<p>Ceci est un simple texte.</p>
</body>
</html>
2. Balises de déclaration

Cette balise vous permet de déclarer une variable à l'intérieur


d'une JSP.
<%! String chaine = "Salut."; %>

<%!
String test = null;

public boolean test() {


return true; }
%>
3. Balises de scriptlet

Derrière ce mot étrange, un mélange atroce entre "script" et


"servlet", se cache simplement du code Java.

<form action="/tirage" method="post">


<%
for(int i = 1; i < 3; i++){
out.println("Numéro " + i + ": <select name=\"number"+i+"\">");
for(int j = 1; j <= 10; j++){
out.println("<option value=\""+j+"\">"+ j + "</option>"); }
out.println("</select><br />"); }
%>
<br />
<input type="submit" value="Valider" />
</form>
4. Balises d'expression

La balise d'expression est en quelque sorte un raccourci de


la scriptlet suivante :

<% out.println("Bip bip !"); %>

Elle retourne simplement le contenu d'une chaîne. Voici sa


syntaxe :

<%= "Bip bip !" %>

Notez bien l'absence de point-virgule lors de l'utilisation de


ce raccourci.
Les directives
Les directives

Les directives JSP permettent :

• d'importer un package ;
• d'inclure d'autres pages JSP ;
• d'inclure des bibliothèques de balises.
• de définir des propriétés et informations relatives à une page JSP.

• Pour généraliser, elles contrôlent comment le conteneur de servlets va


gérer votre JSP. Il en existe trois : taglib, page et include.

• Elles sont toujours comprises entre les balises <%@ et %>, et hormis
la directive d'inclusion de page qui peut être placée n'importe où, elles
sont à placer en tête de page JSP.
1. Directive taglib
Le code ci-dessous inclut une bibliothèque personnalisée nommée
maTagLib :

<%@ taglib uri="maTagLib.tld" prefix="tagExemple" %>

2. Directive page <%@ page


language="..."
extends="..."
La directive page définit des informations
import="..."
relatives à la page JSP.
session="true | false"
<%@ page import="java.util.Date" %>
buffer="none | 8kb | sizekb"
autoFlush="true | false"
isThreadSafe="true | false"
isELIgnored ="true | false"
info="..."
errorPage="..."
contentType="..."
pageEncoding="..."
isErrorPage="true | false"
%>
3. Directive include
Lorsque vous développez une vue, elle correspond rarement à une JSP
constituée d'un seul bloc. En pratique, il est très courant de découper
littéralement une page web en plusieurs fragments, qui sont ensuite
rassemblés dans la page finale à destination de l'utilisateur.

Cela permet notamment de pouvoir réutiliser certains blocs dans


plusieurs vues différentes. <%@ include file="uneAutreJSP.jsp" %>

cette directive ne doit être utilisée que pour inclure du contenu


"statique" dans votre page :

l'exemple le plus courant pour un site web étant par exemple le


header ou le footer de la page, très souvent identiques sur l'intégralité
des pages du site.
3. Directive include (Action standard include)

Une autre balise d'inclusion dite "standard" existe, et permet d'inclure du


contenu de manière "dynamique".
Le contenu sera ici chargé à l'exécution, et non à la compilation comme
c'est le cas avec la directive précédente :

<%-- L'inclusion dynamique d'une page fonctionne par URL relative : --%>
<jsp:include page="page.jsp" />

<%-- Son équivalent en code Java est : --%>


<% request.getRequestDispatcher( "page.jsp" ).include( request, response ); %>

<%-- Et il est impossible d'inclure une page externe comme ci-dessous : --%>
<jsp:include page="http://www.site.com" />
La portée des objets
Les directives
La portée des objets. Souvent appelée visibilité, ou scope en anglais, elle
définit tout simplement leur durée de vie.

Exemple : l'objet HttpServletRequest, ne sont visibles que durant le


traitement d'une même requête. Ils sont créés par le conteneur lors de la
réception d'une requête HTTP, et disparaissent dès lors que le traitement
de la requête est terminé.

Il existe au total quatre portées différentes dans une application :

•page (JSP seulement) : les objets dans cette portée sont uniquement
accessibles dans la page JSP en question ;
•requête : les objets dans cette portée sont uniquement accessibles
durant l'existence de la requête en cours ;
•session : les objets dans cette portée sont accessibles durant
l'existence de la session en cours ;
•application : les objets dans cette portée sont accessibles durant
toute l'existence de l'application.
Les directives
• un objet de portée page n'est accessible que sur une
page JSP donnée ;

• un objet de portée requête n'est accessible que durant


le cheminement d'une requête dans l'application, et
n'existe plus dès lors qu'une réponse est renvoyée au
client ;

• un objet de portée session est accessible durant


l'intégralité de la visite d'un client donné, à condition
bien sûr que le temps d'inactivité défini par le
conteneur ne soit pas dépassé durant cette visite ;

• un objet de portée application est accessible durant


toute l'existence de l'application et par tous les clients.
Les directives
Les actions standard
1. L'actions standard useBean,
setProperty,getProperty

• La valeur de l'attribut id est le nom du bean à récupérer, ou le nom que


vous souhaitez donner au bean à créer.

• L'attribut class correspond logiquement à la classe du bean. Il doit


obligatoirement être spécifié si vous souhaitez créer un bean, mais pas si
vous souhaitez simplement récupérer un bean existant.

• L'attribut optionnel scope correspond à la portée de l'objet. Si un bean du


nom spécifié en id existe déjà dans ce scope, et qu'il est du type ou de la
classe précisé(e), alors il est récupéré, sinon une erreur survient. Si aucun
bean de ce nom n'existe dans ce scope, alors un nouveau bean est créé.
Enfin, si cet attribut n'est pas renseigné, alors le scope par défaut sera
limité à la page en cours.
Expression Language
Expression Langage
Les expressions langage permettent via une syntaxe très épurée
d'effectuer des tests basiques sur des expressions, et de manipuler
simplement des objets et attributs dans une page, et cela sans nécessiter
l'utilisation de code ni de script Java
la syntaxe d'une telle expression : ${ expression }
La réalisation de tests :
Expression Langage

Utilisation de Bean avec EL : ${ Bean.proprite }


TP: application Client

• un bean, représentant un client ;

• une servlet, chargée de récupérer les données envoyées par le formulaire, de


les enregistrer dans le bean et de les transmettre à une JSP ;

• une JSP, chargée d'afficher la fiche du client créé, c'est-à-dire les données
transmises par la servlet.

Vous aimerez peut-être aussi