Vous êtes sur la page 1sur 18

07/04/2012

Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès

Java EE développement d’applications web

EL Moukhtar ZEMMOURI ENSAM - Meknès

Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Java EE développement d’applications web EL Moukhtar ZEMMOURI ENSAM - Meknès
Les composants web Java EE JSP Java Server Pages
Les composants web Java EE JSP Java Server Pages

Les composants web Java EE JSP Java Server Pages

Les composants web Java EE JSP Java Server Pages
Les composants web Java EE JSP Java Server Pages
Les composants web Java EE JSP Java Server Pages
Les composants web Java EE JSP Java Server Pages
Les composants web Java EE JSP Java Server Pages
Les composants web Java EE JSP Java Server Pages

07/04/2012

Plan

Plan  Introduction  Principe de fonctionnement des JSP  Types de balises JSP  Éléments

Introduction

Principe de fonctionnement des JSP

Types de balises JSP

Éléments de base du scripting JSP

Technique de gestion des erreurs

Les objets implicites JSP

Gestion des cookies et sessions

3

JSP Introduction

JSP Introduction  La plupart des applications Web produisent des pages HTML dynamiquement en modifiant uniquement

La plupart des applications Web produisent des pages HTML dynamiquement en modifiant uniquement les champs de données et pas la structure de base de la page.

Les JSP constituent une technologie

appropriée pour ce type de contenu

Au contraire des servlets qui modifient toute la structure de la page.

4

07/04/2012

JSP Introduction

JSP Introduction  Les Servlets sont des classes Java (code 100% Java) exécutées côté serveur 

Les Servlets sont des classes Java (code 100% Java) exécutées côté serveur

Les JSP sont plutôt proches du code HTML

Une page JSP (fichier texte .jsp) ressemble beaucoup à une page html dans laquelle on a

ajouté du code Java encapsulé dans des balises <% … %>

5

JSP Introduction

JSP Introduction  Une page JSP contient un modèle de document statique (html) et des balises

Une page JSP contient un modèle de document statique (html) et des balises spécifiques (jsp) pour inclure du texte ou exécuter une partie de la logique applicative.

Le contenu statique est servi comme du HTML normal.

Ainsi les JSP permettent de séparer clairement les deux types de code:

Traitement de la requête Génération du flux HTML

6

07/04/2012

JSP Introduction

JSP Introduction  Les JSP réutilisent des fonctionnalités de la classe Servlet telles que:  L’objet

Les JSP réutilisent des fonctionnalités de la classe Servlet telles que:

L’objet request de la classe HttpServletRequest L’objet response de la classe HttpServletResponse

En fait, le fichier JSP est traduit en servlet qui

est compilée, puis instanciée lors de son invocation via une URL

7

Principe de fonctionnement

Principe de fonctionnement 8
Principe de fonctionnement 8

8

07/04/2012

Les balises JSP

Les balises JSP  Une page JSP contient 3 types de balises :  Les directives

Une page JSP contient 3 types de balises :

Les directives : instructions qui contrôlent le comportement du compilateur de pages JSP, et qui sont donc évaluées avant la compilation

les éléments de scripts (scriptlets) : blocs d’instructions Java

inclus dans la page JSP entre des délimiteurs <% et %>

des balises personnalisées (custom tags ou custom actions):

elles sont définies par le programmeur et génèrent du contenu dynamique lorsque la page est demandée.

9

Premier exemple JSP (hello.jsp)

Premier exemple JSP (hello.jsp)  <html> <head><title>Un exemple de page

<html> <head><title>Un exemple de page JSP</title></head> <body> <!-- définit les informations globales a la page -->

<%@page language="java" %>

<!-- Scriplet (code java) --> <% out.println("Bonjour tout le monde"); %> </body> </html>

10

07/04/2012

Un autre exemple simple

Un autre exemple simple 11
Un autre exemple simple 11

11

Types d’éléments dans une JSP

Types d’éléments dans une JSP  On distingue 5 types d’éléments dans une page JSP: Traduction

On distingue 5 types d’éléments dans une page JSP:

Traduction

Servlet

Nom élément

Tag

Directives

<%@…%>

Pour l’ensemble de la page

Page include

Déclarations

<%!…%>

En dehors de service()

Méthodes et variables de la servlet

Scriptlets

<%…%>

Dans service()

code

Expressions

<%=…%>

Dans service()

code

Commentaire

<%----%>

Non traduits

12

07/04/2012

Les scriptlets <%…%>

Les scriptlets <%…%>  Sont des blocs de code JAVA intégrés au sein d’une page HTML

Sont des blocs de code JAVA intégrés au sein d’une page HTML

Tout code JAVA valide

L’objet out pour produire de la sortie HTML, objets request et response

Se transforme dans la méthode _jspService()

de la servlet

les variables sont locales à la méthode

les blocs de code s'insèrent dans la servlet

13

Les scriptlets : exemple

Les scriptlets : exemple  <% String[] noms = {"ali", "hassan"}; for(int i = 0; i

<%

String[] noms = {"ali", "hassan"}; for(int i = 0; i < noms.length; i++){ out.println(noms[i]);

}

%>

14

07/04/2012

Les expression : <%=…%>

Les expression : <%=…%>  Pour évaluer une expression ou un objet Java et renvoyer sa

Pour évaluer une expression ou un objet Java et renvoyer sa valeur :

retourne une version String de l'expression raccourci pour <% out.println(…); %>

Se transforme en out.println(…) dans la méthode _jspService(…) de la servlet

15

Les expression : exemple

Les expression : exemple  <% String[] noms = {"ali", "hassan"}; for(int i = 0; i

<%

String[] noms = {"ali", "hassan"}; for(int i = 0; i < noms.length; i++){ %>

Le nom <%= i %> ième nom est : <%= noms[i] %>

<%

}

%>

16

07/04/2012

Les déclarations : <%!…%>

Les déclarations : <%!…%>  Pour déclarer des méthodes et des variables d’instance , connues de

Pour déclarer des méthodes et des variables d’instance, connues de toute la page jsp (méthodes de la servlet générée)

Elles peuvent être placées puis utilisées n’importe où dans la page

les méthodes ne sont exécutées que si elles sont

appelées explicitement

Se transforme en déclarations de champs et méthodes au niveau de la servlet

17

Les déclarations : exemple

Les déclarations : exemple  <%! private int accessCount = 0; private int incrementCount() {return accessCount++;}

<%!

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

%>

<H2> Nombre et liste des articles </H2> Nombre d'articles :

<%= incrementCount() %>

18

07/04/2012

Les commentaires : <%- -- -%>

Les commentaires : <%- - … - -%>  Permettent d’insérer des commentaires dans la page

Permettent d’insérer des commentaires dans la page jsp.

On peut évidemment utiliser les balises HTML <!---->

L’avantage des balises jsp est que les commentaires ne seront pas visibles des utilisateurs

19

Les directives : <%@…%>

Les directives : <%@…%>  Ce sont des messages envoyés au container JSP et qui vont

Ce sont des messages envoyés au container JSP et qui vont indiquer au container la façon dont il doit transcrire une JSP en servlet

<%@ directive attribut1="valeur"

attribut2="valeur"

%>

3 types de directives possibles :

page : informations relatives à la page include : fichiers à inclure littéralement Taglib : inclusion des balises personnalisées

20

07/04/2012

La directive <%@page …%>

La directive <%@page …%>  Valeurs possibles :  <%@ page language ="java" %> 

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 …

Info, extends, buffer, autoFlush, isThreadSafe.

21

La directive <%@include …%>

La directive <%@include …%>  Ces directives permettent d’inclure le contenu d’un fichier dans la page

Ces directives permettent d’inclure le contenu d’un fichier dans la page JSP

Syntaxe : <%@include file=«UrlRelative»%>

Ce type d’inclusion est réalisé avant la compilation de

la page JSP en servlet

file=«UrlRelative»%>  Ce type d’inclusion est réalisé avant la compilation de la page JSP en servlet

22

07/04/2012

Gestion des erreurs

Une exception Java peut être déclenchée et gérée par la JSP

On peut ainsi spécifier une page d'erreur séparée pour la JSP :

placer une directive de page pour errorPage au début du fichier

<%@page errorPage="err.jsp" %>

permet d‘enlever le code d'erreur de la JSP

un objet Exception est passé à la page d'erreur

 

23

La page d’erreur jsp

Elle est identifiée par une directive de page en début de fichier :

<@page isErrorPage="true" %>

Exemple:

<%@page isErrorPage="true" %> <html><body> Information d'exception :

<strong> <%= exception %> </strong> <pre> <% java.io.PrintWriter monWriter =new java.io.PrintWriter(out); exception.printStackTrace(monWriter); %> </pre></body></html>

 

24

07/04/2012

 

Les objets implicites JSP

Dans une JSP on a accès à une liste d’objets implicites permettant d’interagir avec l’environnement de la servlet d’exécution:

 

request : le HttpServletRequest permet d’accéder aux paramètres POST, GET et l’entête de la requête (cookies, formulaires…)

response : le HttpServletResponse

out : javax.servlet.jsp.JspWriter est un flux de sortie permettant d’envoyer la réponse au client (idem response.getWriter())

session : le HttpSession

exception : le java.lang.Throwable permettant d’attraper les exceptions

config : javax.servlet.ServletConfig

pageContext : javax.srvlet.jsp.PageContext accès aux attributs de la page

application : javax.servlet.ServletContext

page : le this d’une instance de la page

 

25

 

Gestion des cookies et sessions

Cookies et Sessions fonctionnent de la même façon que dans l'API Servlet

 

Cookie :

<% Cookie c = new Cookie("Sport", "Foot"); response.addCookie(c); %>

Sessions :

 

toutes les pages JSP disposent automatiquement d'un objet session

<% String val = (String)session.getValue("Sport"); %>

 

26

07/04/2012

Actions dans une JSP

Actions dans une JSP  Les actions permettent de faire des actions au moment où la

Les actions permettent de faire des actions au moment où la page est demandée par un client :

inclure dynamiquement un fichier

utiliser des beans

rediriger vers une autre page

etc

On distingue les actions suivants:

<jsp:include … />

<jsp:forward … />

<jsp:useBean … />

27

Action : <jsp:include … />

Action : <jsp:include … />  <jsp:include page="url" />  Pour inclure des éléments

<jsp:include page="url" />

Pour inclure des éléments standards comme des en-têtes et des pieds de page

On peut inclure n'importe quoi qui s'intégrera correctement dans le flot de la page

inclusion au moment où la page est servie, pas au moment où elle est traduite en servlet.

28

07/04/2012

Action : <jsp:forward … />

<jsp:forward page="/unAutreURI" />

Cette balise est utilisée pour passer le contrôle de la requête à une autre ressource dynamique ou statique

Afin de passer des informations à la ressource à inclure on utilise la balise param

<jsp:param name=«redir» value = «valeur» />

 

29

Interaction JSP, Servlets et JavaBeans

Les JSP doivent servir à la conception de l'IHM en HTML dans le Navigateur

La logique de traitement (logique applicative) doit venir de composants auxquels accède la

JSP

Avantages de l'utilisation de composants :

lisibilité accrue de la JSP dissociation de la présentation et des traitements Réutilisation des composants

 

30

07/04/2012

Les JavaBeans : c’est quoi?

C'est une classe Java publique qui :

possède un constructeur public sans argument

Aucuns de ses attributs ne doit être public

Chaque attribut (property) doit avoir un getter et un

setter

public PropertyType getPropertyName()

public void setPropertyName(PropertyType val)

Pour les attributs booléans, on doit remplacer getX par isX

 

31

Utiliser un Bean dans une JSP

On utilise la balise <jsp:useBean … />

<jsp:useBean id="nom de l'instance du Bean" class="nom qualifié de la classe du Bean" scope="request | session | application | page" />

L'attribut "scope" (portée) :

request : le Bean est valide pour la requête, il est détruit à la fin

page : (défaut), idem request sauf que le Bean ne peut pas être transmis

session : il est stocké dans la session de l'utilisateur et il dure autant que la session

application : le Bean est valide pour l'application courante. Il est crée une fois et est partagé par tous les clients de l'application

 

32

07/04/2012

Définir les propriétés du Bean

Définir les propriétés du Bean  On utilise la balise <jsp:setProperty … />  <jsp:useBean

On utilise la balise <jsp:setProperty … />

<jsp:useBean id="monObjet" class="maClasse" scope="request" /> <jsp:setProperty name="monObjet" property="Sport" value="Foot" />

<jsp:setProperty name="monObjet" property="email"

value="addr_email" />

33

Lire les propriétés du Bean

Lire les propriétés du Bean  On utilise la balise <jsp:getProperty >  <jsp:useBean

On utilise la balise <jsp:getProperty

>

<jsp:useBean id="monObjet" class="maClasse" scope="request" /> <jsp:getProperty name="monObjet" property="Sport" /> <jsp:getProperty name="monObjet" property="email" />

On peut aussi utiliser l’instance du bean dans des balises scriplets et faire appel à ses méthodes:

<%= monObjet.getNomProp() %>

34

07/04/2012

 

Exemple simple d’un Bean

La page JSP :

 
 

<html> <jsp:useBean id="mybean" class="monPackage.SimpleBean"/> <jsp:setProperty name="mybean" property="message"

value="Hello !!" />

<h1>Le message est : <i> <jsp:getProperty name="mybean" property="message"/>

</i></h1>…

</html>

 

35

 

Exemple simple d’un Bean

Le code source Java du Bean :

 

package monPackage; public class SimpleBean {

 

private String message = "no message"; public SimpleBean() {

}

public String getMessage() { return message;

}

public void setMessage(String message) { this.message = message;

 
 

}

}

N.B : le bean doit obligatoirement appartenir à un package

 
 

36