CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

59
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page

Transcript of CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Page 1: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT

UV JSP

JSP : Java Server Page

Page 2: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 2 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Plan du cours

Rappel sur les applications Web

Les techniques côté serveur

Gestion des cookies

Les Java Server Pages (JSP)

Page 3: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 3 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Applications Web

Serveur

Navigateur Web Ser

veur

Web

Environnement d ’exécution

Source de données

Script/programme serveur

Internet/Intranet

Réponse

Requête (http,…) 2eniveau

3eniveau

1er niveau

Client

Page 4: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 4 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Architecture

3 niveaux :– niveau 1: présentation

• navigateur + serveur Web

– niveau 2: applicatif• script ou programme

– niveau 3: données• données nécessaires au niveau 2

Page 5: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 5 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Déroulement

Une application Web type :

– 1: recueille les données utilisateur (niveau 1)

– 2: envoie une requête au serveur Web

– 3: exécute le programme serveur requis (niveau 2&3)

– 4: assemble/renvoie les données vers le navigateur (niveau 1)

Page 6: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 6 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

1: Collecte des données utilisateur

Quelques solutions pour le client :– très utilisée : formulaire HTML

• saisie de champs puis « submit »

• validation par scripts (JavaScript)

– nouvelle : applets Java :• connexion socket / RMI avec le serveur Web

• mise en forme et validation des données

– ...

Page 7: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 7 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

2: Requête HTTP vers le serveur Web

– contient :• l ’URL de la ressource à accéder (page,script,prog)• les données de formatage (le cas échéant)• des infos d ’en-tête complémentaires

– requête GET : • pour extraire des informations sur le serveur• intègre les données de formatage à l ’URL

http://www.inria.fr/servlet/hello?key1= value1&…

– requête POST :• pour modifier les données sur le serveur• données de la page assemblées/envoyées vers le serveur

Page 8: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 8 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

3: Exécution d ’un script/prog. serveur

Avec la requête http, le serveur Web :

– 1) identifie le type d ’environnement d ’exploitation à charger (mapping)

• en fonction de l ’extension du fichier (.jsp, .cgi, ...)

• ou du répertoire où il se trouve (cgi-bin/, servlet/)

– 2) charge l ’environnement d’exécution (run-time)• interpréteur Perl pour les programmes cgi en perl

• JVM pour les servlets Java, ...

Page 9: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 9 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

4: Retour des résultats au navigateur

Le script/prog côté serveur :– précise le type de contenu (HTML, XML, images,)

– intègre la réponse dans un flot de sortie

Le navigateur :– définit le type MIME dans l ’en-tête (text/html,…)

– et affiche les données en fonction

• duplication de l’environnement (variables, exécution), mémoire allouée, copie du programme, …

• retourne (en général) du HTML

Page 10: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 10 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Techniques côté serveur

CGI (Common Gateway Interface)

ASP (Microsoft)

Servlets Java et JSP (Sun)

Page 11: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 11 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

CGI (rappel)

– Principe :• un processus par requête est lancé sur le serveur

Interface CGI

Env. execution

Var. env.

Programme

Processus 1

Env. execution

Var. env.

Programme

Processus 3

Env. execution

Var. env.

Programme

Processus 2

Serveur Web

Page 12: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 12 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

CGI

– Avantages :• gratuit, pris en charge par tous les serveurs Web actuels

• peut être écrit dans n’importe quel langage (surtout perl)

– Inconvénients :• manque d’évolutivité (plusieurs processus créés)

– serveur très sollicité si plusieurs requêtes au même moment– amélioré par :

» FastCGI : instance partagée des programmes CGI» mod_perl (Apache) : script CGI interprété et exécuté dans le

serveur Web

• assez lent

• parfois difficile à développer

Page 13: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 13 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Technologies J2EE : les JSP

Les Pages JSP:– La technologie JSP permet d'embarquer des composants dans une

page et de laisser ces derniers générer la page qui sera finalement renvoyée au client

– Une page JSP peut contenir du code HTML, du code Java et des composants JavaBean

– JSP est en réalité une extension du modèle Servlet : lors du premier accès a la page JSP, le conteneur Web la compile en Servlet

– Permet de nettement séparer la présentation du code métier (Concepteurs Web, développeurs)

Page 14: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 14 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Technologies J2EE : les JSP

Pages JSP– JSP fournit une interface standard basée sur XML permettant de définir

des balises (tags) personnalisées et les regrouper dans des bibliothèques de balises (taglibs)

– Avec J2EE, la spécification JSP a atteint la version 1.1

Page 15: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 15 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Technologies J2EE : les JSP

Architecture typique d'une application Web

Navigateur

JSP

Servlet

Conteneur Web

Entrepôtde

données

HTTP(s)

HTML,XML

Page 16: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 16 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les JSP (Java Server Pages)

Réponse aux ASP/PHP/embedded perl, etc... Technologie qui permet de mixer Java et HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD><TITLE>Welcome to Our Store</TITLE></HEAD>

<BODY>

<H1>Welcome to Our Store</H1>

<SMALL>Welcome,

<!-- User name is "New User" for first-time visitors -->

<% out.println(Utils.getUserNameFromCookie(request)); %>

To access your account settings, click

<A HREF="Account-Settings.html">here.</A></SMALL>

<P>

Regular HTML for all the rest of the on-line store's Web page.

</BODY></HTML>

Page 17: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 17 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Un exemple de JSP/Servlet en Java

package hall;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter(); out.println("Hello World");out.flush(); }}

Page 18: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 18 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Introduction

Gestion des formulaires HTML

http://host/path?user=Marty+Hall&origin=bwi&dest=lax

La partie compliquée = paramètres du formulaire

Visibles ou non dans l'URL (GET/POST)

Ces paramètres doivent être décodés !

Avec les servlets : un vrai plaisir !

Page 19: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 19 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Récupèrer les paramètres

Méthode getParameter()

– Fonctionne avec GET ou POST

public class ShowParameters extends HttpServlet {

public void doGet(HttpServletRequest request,...) {

out.println(request.getParameter(“param1”));

Enumeration paramNames=request.getParameterNames();

String[] paramValues =

request.getParameterValues(paramNames);

}

}

Page 20: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 20 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les cookies

Morceaux d’informations envoyés par le serveur

… et renvoyés par le client quand il revient

visiter le même URL

Durée de vie réglable

Permet la persistance

Page 21: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 21 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

A quoi ça sert ?

Identification des utilisateurs (e-commerce)

Eviter la saisie d’informations à répétition– login, password, adresse, téléphone…

Gérer des « préférences utilisateur »– sites portails…

...

Page 22: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 22 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Cookie et sécurité ?

Jamais interprété ou exécuté : pas de virus

Un cookie est limité à 4KB et les navigateurs se limitent à 300 cookies (20 par site) : pas de surcharge de disque

Bien pour rendre privées des données non sensibles

– nom, adresse, …

… mais ne constitue pas un traitement sérieux de la sécurité

Page 23: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 23 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Gestion des cookies ?

Utiliser les fonctions de l ’API des servlets…– créer un cookie : classe Cookie, – écrire/lire un cookie : addCookie(cookie), getCookies(), – positionner des attributs d’un cookie : cookie.setXxx(…)

Exemple d'envoi d'un cookie :

...

String nom = request.getParameter("nom");

Cookie unCookie = new Cookie("nom", nom);

...ici positionner des attributs si on le désire

response.addCookie(unCookie);

...

Page 24: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 24 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Création d'un cookie

Cookie unCookie = new Cookie(name, value);

– 2 arguments de type java.lang.String : • name et value

– caractères non autorisés :• espace blanc

• [ ] ( ) = , " / ? @ : ;

Page 25: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 25 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Attributs des cookies

getValue/setValue getName/setName getComment/setComment getMaxAge/setMaxAge : délai restant avant expiration du cookie (en

seconde)

– par défaut : pour la session courante getPath/setPath : répertoire où s'applique le cookie

– dir. courant ou pages spécifiques

Page 26: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 26 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Récupération des cookies

Exemple de récupération des cookiesCookie [] cookies = request.getCookies();

String nom = getCookieValue(cookies, "nom", "non trouvé");

...

public static String getCookieValue(Cookie [] cookies, String cookieName, String defaultValue) {

for(int i=0; i < cookies.length; i++) { Cookie cookie = cookies[i];

if(cookieName.equals(cookie.getName()) return(cookie.getValue());}

return(defaultValue);

}

Page 27: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 27 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Temps d'expiration

Par défaut, durée de vie d'un cookie = la connexion. Si on veut que le cookie soit sauvé sur disque, modifier

sa durée de vie :

public static final int SECONDS_PER_YEAR = 60*60*24*365;

cookie.setMaxAge(SECONDS_PER_YEAR);

Page 28: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 28 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Principes de base et architecture JSP

But des JSP : simplifier la création et l'administration des pages Web dynamiques, en séparant le contenu de la présentation

Les pages JSP ne sont que des fichiers contenant du code HTML ou XML standard et de nouvelles balises de script

Converties en servlet lors de leur toute première invocation

L'objectif principal consiste à simplifier la couche de présentation dynamique via une architecture multiniveaux

Page 29: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 29 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

JSP

Du java dans une page WWW !

http://lil.univ-littoral.fr:8080/jsp/Test.jsp?titre=Les+JSP

...

<I> <%= request.getParameter("titre") %> </I>

...– Entre les balises JSP <% … %>

On peut mettre des pages .jsp partout où on met des pages HTML

Elles sont converties "au vol" en servlet par le moteur de JSP

Page 30: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 30 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Un exemple simple

<html><head><title>Un exemple de page JSP</title></head><body><!-- définit les informations globales a la page --><%@page language="java" %>

<!-- Déclare la variable c --><%! char c = 0; %>

<!-- Scriplet (code java) %><%

for(int i = 0; i < 26; i++){ for(int j = 0; j < 26; j++){ c = (char)(0x41 + (26 - i + j)%26);

%><%= c %><% } %><br><% } %></body></html>

Page 31: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 31 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Passons à la pratique

La structure d'une page JSP est le subtil mélange d'une servlet et de balises HTML, auquel a été ajoute une pincée de code Java entre des balises <% et %> et un zeste de balises XML

Balises JSP se divisent en trois catégories– les éléments de script : permettent d'insérer du code Java dans une

page JSP– les directives : elles influencent la structure globale de la servlet

issue de la conversion– les actions : il s'agit de balises spéciales servant à modifier le

comportement du code JSP durant son exécution

– On peut également créer ses propres balises !

Page 32: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 32 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Passons à la pratique

Certaines règles générales s'appliquent aux pages JSP– les balises JSP sont sensibles à la casse– les directives et les éléments de script obéissent à une syntaxe qui ne

repose pas sur XML (une syntaxe de type XML peut également être utilisée)

– les valeurs des attributs dans les balises apparaissent toujours entre guillemets

– les URLs présentes dans les pages JSP respectent les conventions de la servlet

– si une URL commence par /, nomme chemin relatif de contexte, elle est interprétée en fonction de l'application Web à laquelle la JSP appartient, sinon elle est interprétée en fonction du code JSP courant

Page 33: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 33 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Directives JSP

Les directives JSP sont des messagers envoyés par le code JSP au conteneur JSP

Elles servent à définir les valeurs globales, telles que les déclarations de classes, les méthodes à mettre en œuvre, le type de contenu produit...

Elles ne produisent aucune sortie à envoyer au client La portée des directives concerne l'intégralité du fichier JSP Les directives commencent par une balise <%@ et finissent par %> La syntaxe générale est la suivante :

<%@ nomdirective attribut="valeur" attribut="valeur" %>

Page 34: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 34 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Directives JSP

On peut utiliser trois directives principales dans les pages JSP

La directive page

la directive include

la directive taglib

Page 35: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 35 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Directives JSP

La directive page– Elle est utilisée pour définir et manipuler un nombre important d'attributs des pages et

qui influencent le fichier JSP dans sa totalité– Elle sert également à communiquer ces attributs au conteneur– La syntaxe générale de la directive page est la suivante :

<%@ page ATTRIBUTS %>

– Elle peut par exemple contenir les imports des paquetages et classes nécessaires au code Java contenu, les attributs de session, le niveau de sécurité des threads...

Page 36: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 36 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

La directive : page

Valeurs possibles :– <%@ page language="java"– <%@ page import="java.util.*, java.net.*" %>– <%@ page contentType="text/plain" %>– <%@ page session="true|false " %>– <%@ page errorPage="pathToErrorPage" %>– <%@ page isErrorPage="true|false" %>– <%@ page …

Page 37: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 37 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Directives JSP

Exemple de directive page<%@ page language="Java" import="java.rmi.*,java.util.*"

session="true" buffer="12kb" autoFlush="true"

info="Ma directive page" errorPage="error.jsp"

isErrorPage="false" isThreadSafe="false" %>

<html>

<head>

<title>Page de test de la directive page</title>

</head>

<body>

<h1> Page de test de la directive page</h1>

Bla bla bla...

</body>

</html>

Page 38: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 38 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Directives JSP

La directive include– Elle ordonne au conteneur d'insérer le contenu de la ressource dans la page

JSP courante, en l'imbriquant à la place de la directive

– La syntaxe de la directive include est la suivante :

<%@ include file="nomfichier" %>– Le fichier inclus peut être une ressource statique (tel qu'un fichier HTML) ou

une autre page JSP

– Exemple :

<html><head>

<title>Page de test 1 de la directive include</title></head><body>

<h1> Page de test 1 de la directive include</h1><%@ include file="/test.html" %><%@ include file="/jspTest.jsp %>

</body></html>

Page 39: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 39 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Directives JSP

La directive taglib– Elle permet à la page d'utiliser des extensions de balises (voir fin cours)

– Le conteneur exploite cette bibliothèque de balises afin de savoir ce qu'il doit faire lorsqu'il rencontre des balises personnalisées dans la page JSP

– La syntaxe de la directive taglib est la suivante :

<%@ taglib uri="tagLibraryURI" prefix="tagPrefix" %>

– On ne le fera pas dans ce cours (manque de temps), mais ce mécanisme permet de créer des balises personnalisées qui correspondent en fait a des classes Java

– Les taglibs permettent de séparer la présentation du code de manière optimale

Page 40: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 40 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Eléments de script

Les éléments de script permettent l'insertion dans la JSP de code Java, de déclarations de variables ou de méthodes, de scriptlets (code Java arbitraire) et d'expressions

– Déclarations• Bloc de code Java dans une page JSP utilisé pour définir des variables et des méthodes de

classe dans une servlet générée

• Initialisées lors de l'initialisation de la page JSP

• Portée de "classe" dans la servlet générée : accessible via la page JSP à d'autres déclarations, expressions et fragments de code

• Délimitée par <%! et %> et n'envoie rien dans le flux de sortie

– Scriptlets• Bloc de code Java exécuté au cours du processus de traitement de la requête, et qui se trouve

entre des balises <% et %>

• Peuvent produire une sortie vers le client

• Peuvent modifier les objets en interne à l'aide des méthodes

Page 41: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 41 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Eléments de script : les déclarations

<%! déclarations %>

<%!

private int accessCount = 0;

private int incrementCount() {return accessCount++;}

%>

...

<H2>Nombre et liste des articles</H2>

Nombre d'articles : <%= incrementCount() %>

– définitions des méthodes et variables de classe

à utiliser dans toute la page

– définit les méthodes jspInit() et jspDestroy()

Page 42: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 42 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Eléments de script : les scriptlets

<% code Java %> (scriplets)

<%

String nom = request.getParameter("nom");

...

out.println("Nom de l'utilisateur " + nom);

%>

– c'est un bloc de code Java

– placé dans _jspService() de la servlet générée

– ayant accès :

• aux variables et beans déclarés ( <%! … %> )

• aux objets implicites (voir plus loin)

Page 43: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 43 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Eléments de script

– Expressions• Une expression est une notation courte d'une scriptlet qui renvoie

la valeur d'une expression vers le client

• L'expression est évaluée lors du traitement de la requête HTTP, le résultat est converti en String puis il est affiché

• Délimitée par des balises <%= et %>

• Si le résultat de l'expression est un objet, la conversion est exécutée à l'aide de la méthode toString() de l'objet

• La syntaxe est la suivante :

<%= expression Java à traiter %>

Page 44: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 44 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Eléments de script : les expressions

<%= expression %>

Il est <%= new java.util.Date() %> <P>

et votre hostname est <%= request.getRemoteHost() %>

– permet d’intégrer des valeurs dans le code HTML

– ces valeurs sont évaluées, converties en chaînes de caractères et affichées

– les objets implicites (request, response, session, out, ...) disponibles

Page 45: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 45 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

Les actions standard sont des balises qui affectent l'exécution de la page JSP et la réponse renvoyée au client

Elles doivent être fournies par tous les conteneurs Une action standard est en réalité une balise incorporée dans une page JSP Au cours de la compilation de la servlet, le conteneur rencontre cette balise et la

remplace par le code Java correspondant à la tache prédéfinie requise Par exemple, s'il rencontre une action include standard

<jsp:include page="myJsp.jsp" flush="true" />

Page 46: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 46 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

Elles servent à offrir aux auteurs des pages JSP des fonctionnalités de base qu'ils peuvent exploiter afin d'exécuter des taches courantes

Les types d'actions standard sont les suivants :– <jsp:usebean>– <jsp:setProperty>– <jsp:getProperty>– <jsp:param>– <jsp:include>– <jsp:forward>– <jsp:plugin>

Page 47: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 47 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

<jsp:useBean>– Pour séparer le code de la présentation, il est conseille d'encapsuler le code dans un

objet Java (un JavaBean), puis de l'instancier et de l'utiliser au sein de la page JSP– <jsp:useBean> permet de créer ou de localiser une instance d'un bean donne, d'en

définir la durée de vie...– La syntaxe de l'action useBean est la suivante :

<jsp:useBean id="name" scope="scopeName" beandetails />– ou beandetails est au choix

• class="className"

• class="className" type="typeName"

• beanName="beanName" type="typeName"

• type="typeName"

Page 48: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 48 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

<jsp:setProperty>– Utilisée pour fixer les propriétés d'un bean– Il est possible de définir les propriétés d'un bean de plusieurs manières :

• au moment de la requête, à l'aide de l'objet request

• au moment de la requête, avec une expression évaluée

• à l'aide d'une chaîne spécifiée (ou codée physiquement) dans la page

– La syntaxe de l'action setProperty est la suivante :• <jsp:setProperty name="beanName" propertydetails />

• ou propertydetails est au choix :– property="*"– property="propertyName"– property="propertyName" param="parameterName"– property="propertyName" value="propertyValue"

Page 49: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 49 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

<jsp:getProperty>– Utilisée pour accéder les propriétés d'un bean– Accède à la valeur d'une propriété, la convertit en String et l'envoie vers le flux de

sortie, puis vers le client– La syntaxe est la suivante :

• <jsp:getProperty name="name" property="propertyName"/>

• et les attributs sont les suivants :– name : Nom de l'instance du bean– property : Nom de la propriété a obtenir

Page 50: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 50 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Usebean et getProperty

Mécanisme très puissant !

<jsp:usebean

id="name" (référence l'instance du composant)

class="paquetage.class" (nom qualifié de la classe)

scope="page|request|session|application" (portée)

/>

Pour lire une propriété du bean :

<jsp:getProperty name="name" property="property" />

Page 51: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 51 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Usebean et setProperty

Pour modifier une propriété du bean :

<jsp:setProperty name="name"

property="property"

value="value" />

<jsp:setProperty name="name"

property="*" />– Initialise tous les attributs de l ’objet name avec les paramètres HTTP du

même nom– En 2 lignes !

Page 52: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 52 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Exemple d'utilisation d'un bean

La page JSP :

<html> ...

<jsp:usebean id="test" class="test.SimpleBean" />

<jsp:setProperty name="test" property="message"

value="Hello !!" />

<h1>Le message est : <i>

<jsp:getProperty name="test" property="message" />

</i></h1>…

</html>

Page 53: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 53 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

<jsp:param>– Permet de fournir d'autres balises contenant des informations complémentaires sous la

forme de paires nom/valeur– Elle est utilisée conjointement avec les actions include, forward et plugin– La syntaxe est la suivante :

• <jsp:param name="paramName" value="paramValue"/>

• Les attributs disponibles sont les suivants :– name : Clé associée a l'attribut– value : valeur de l'attribut

Page 54: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 54 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

<jsp:include>– Permet l'insertion dans la page JSP courante, au moment du traitement de la requête,

de ressources statiques ou dynamiques– Même fonctionnement que le Dispatcher de servlets– Une page incluse ne peut définir ne en-tête ni cookie– La syntaxe est la suivante :

• <jsp:include page="URL" flush="true">– <jsp:param name="name" value="value"/>

• </jsp:include>

• Ou :– URL : La ressource a inclure– flush : toujours true !

• Les paramètres passes dans les balises <jsp:param> sont accessibles a la ressource qui est incluse au travers l'objet request transmis

Page 55: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 55 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

<jsp:forward>– Permet le transfert de la requête vers une autre page JSP, une autre servlet ou une

ressource statique– La syntaxe est la suivante :

• <jsp:forward page="URL">– <jsp:param name="name" value="value"/>

• </jsp:forward>

– La ressource vers laquelle la requête est transférée doit se trouver dans le même contexte que la page JSP qui émet la requête

– Il s'agit d'une redirection cote serveur qui prend en compte des paramètres supplémentaires

Page 56: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 56 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Actions standard

<jsp:plugin>– Utilisée dans les pages pour générer des balises HTML propres au navigateur client– Cette action a pour conséquence de télécharger le plug-in Java par exemple, puis

d'exécuter l'applet ou le composant JavaBean spécifié dans la balise– S'accompagne parfois de deux balises supplémentaires :

• <jsp:params> afin de transmettre des paramètres supplémentaires a l'applet ou au JavaBean

• <jsp:fallback> afin de spécifier le contenu a afficher dans le navigateur client si le plug-in ne peut pas démarrer

Page 57: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 57 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Objets Implicites

L'API servlet inclut des interfaces qui établissent des couches d'abstraction pratiques pour le developpeur

– HttpServletRequest, HttpSession... Ces interfaces représentent les données HTTP et fournit les méthodes

appropriées pour les manipuler JSP propose certains objets implicites, reposant sur l'API Servlet Ces objets sont accessibles via des variables standard et sont automatiquement

disponibles pour vos pages JSP sans que vous ayez besoin de rajouter du code

Page 58: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 58 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Objets Implicites

Les objets implicites disponibles dans une page JSP sont les suivants :– request : représente l'objet HttpServletRequest– response : représente l'objet HttpServletResponse– pageContext : point d'accès pour de nombreux attributs de page– session : l'objet HttpSession– application : contexte de servlet ServletContext– out : le flux de sortie JspWriter (idem response.getWriter())– config : l'objet ServletConfig pour cette page– page : instance de la classe de servlet d'implémentation qui traite la requête en cours

Page 59: CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Module UV JSPPage 59 / 59

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Quelques exemples d’actions

<jsp:include page="relative URL" flush="true" />– inclusion au moment où la page est servie, pas au moment où elle est traduite en

servlet.

<jsp:usebean id="name" class="package.class" />– permet d'instancier un bean depuis une page JSP.

– nécessite de connaître le mécanisme des beans...

– associé à <jsp:getProperty.../> et <jsp:setProperty.../>

<jsp:forward page="/uneAutreURL" />– redirige vers une autre URL