Vous êtes sur la page 1sur 38

Les Servlets et les JSPs

Mr. Riadh BOUHOUCHI


Plan du cours
I. Créer un Servlet
II. Associer une vue à une Servlet
III. Présentation des JSP
IV.Les inclusions de JSP
V. Communiquer des données entre pages
VI.Utiliser Expression Langage(EL) dans les
JSP
VII.Manipuler des Java Beans dans les JSP
Créer un Servlet (1)

Une servlet est une classe Java ou il permet de la création des


données dynamique au sein d'un serveur HTTP. Ces données sont
le plus généralement présentées sous format HTML. Les servlets
utilisent l'API Java Servlet.

Une servlet s'exécute sur le serveur web et permet l'extension des


fonctions par exemple l'accès à des bases de données,
transactions des données.

1
Créer un Servlet (2)

Cycle de vie d'une servlet


Le conteneur Web maintient le cycle de vie d’une servlet qui est
présentées dans ces figures ci-dessous :

2
Créer un Servlet (2)

1. La servlet classe est chargée :La classe servlet est chargée


lorsque la première demande de la servlet est reçue par le
conteneur Web
2. Création de l’instance Servlet : Après le chargement de la
classe de servlet, le conteneur Web crée l’instance d’une
servlet. Une instance est créée seulement une fois dans le
cycle de vie de la servlet.
3. La méthode Init() : le conteneur appelle la méthode Init()
une seule fois après la création de l’instance servlet et crée les
objets Request et Response spécifiques à la requête

3
Créer un Servlet (2)

4. La méthode Service() : Le conteneur web appelle la méthode


service() à chaque requête.
5. La méthode Destroy () : La méthode destroy () est appelée
juste avant que le serveur ne détruise la servlet, cela donne
l’occasion libérer des ressources.

 Le cycle de vie d'une servlet est contrôlé par le serveur


d'application dans le quel vit cette servlet.
 Une servlet en réalité est une simple classe Java qu’il permet
le traitement de requêtes et la personnalisation de réponses.

4
Associer une vue à une Servlet (1)

En modèle MVC il est conseille de placer tout ce qui est concerné


à l'affichage final dans une couche à part.

Par contre le servlet n’est pas compatible avec ce modèle donc il


conçue une autre technologie qui nous permettons de faire la
séparation entre les partie vue et model.

5
Associer une vue à une Servlet (2)

La technologie utilisée pour réaliser une vue est la page JSP


(Java Server Pages)

L'intérêt de jsp est de rendre possible la création de pages


dynamiques : puisqu'il y a une étape de génération sur le serveur,
il devient possible de faire varier l'affichage et d’interagir avec
l'utilisateur

6
Présentation des JSP (1)

Les JSP (Java Server Pages) sont une technologie Java qui permet
la génération de pages web dynamiques. Il s’occupe a la partie
vue de Model MVC il permet de séparer la présentation sous
forme de code HTML et les traitements écrits en Java sous la
forme de JavaBeans ou de servlets

La question qui se pose pourquoi on utilise les JSP ?

La technologie servlet est trop difficile d'accès et ne convient pas


à la génération du code de présentation, écrire une page web en
langage Java est horriblement pénible.
7
Présentation des JSP (2)

Il est nécessaire de disposer d'une technologie qui joue le rôle de


simplification de l'API servlet :
Les pages JSP sont en quelque sorte une abstraction "haut
niveau" de la technologie servlet.
Le modèle MVC recommande une séparation nette entre le code
de contrôle et la présentation.

Le modèle MVC recommande une séparation total entre le code


métier et la présentation : dans le modèle on doit trouver le code
Java responsable de la génération des éléments dynamiques, et
dans la vue on doit simplement trouver l'interface qu’il permet
aux développeurs et designers de travailler facilement sur la vue
sans intervenir directement du code Java.
8
Présentation des JSP (3)

→ On peut résumer la technologie JSP en une technologie offrant


les capacités dynamiques des servlets tel que nous permettons la
simplicité d'accès aux objets Java, des mécanismes permettant
l'extension du langage utilisé au sein des pages JSP.

9
Les inclusions de JSP (1)

Dans une page JSP on trouve du code HTML ou XML, des


directives, des actions et du code Java aussi qui nous appelons
des inclusions ce que nous permet d’intégrer des codes
spécifiques.

10
Les inclusions de JSP (2)

1. Les balises
Balises de commentaire
Tout comme dans les langages Java et HTML il est possible
d'écrire des commentaires dans le code des pages JSP
Exemple Code : JSP
<!DOCTYPE html>

<html>
<head>

<meta charset="utf-8" />

<title> Exemple</title>
</head>

<body>
<%-- Ceci est un commentaire JSP, non visible dans la page HTML finale. --%>
<!-- Ceci est un simple commentaire HTML. -->

<p> Ceci est un simple texte.</p> </body>

</html>

11
Les inclusions de JSP (3)

Balises de déclaration
Cette balise permet de déclarer une variable à l'intérieur d'une JSP
Exemple code JSP :

<%! String chaine = "HELLO "; %>

Il est possible aussi d’effectuer plusieurs déclarations dans


un même bloc :

<%! String test = null; public boolean resultat() { return true; } %>

12
Les inclusions de JSP (4)

Balises de scriptlet
C’est un mélange entre "script" et "servlet" .
Cette balise sert à inclure du code Java au sein de page mais il faut que être
entre une balise HTML <form>

<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>

13
Les inclusions de JSP (5)

Balises d'expression
C’est un mélange entre "script" et "servlet" .
Cette balise sert à inclure du code Java au sein de page mais il faut que être
entre une balise HTML <form>

<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>

14
Les inclusions de JSP (6)

Balises d'expression
Exemple :

<% out.println("HELLO "); %>

<%= "HELLO" %>

15
Les inclusions de JSP (7)

2. Les directives

Les directives JSP permettent d'importer un package ou d'inclure


d'autres pages JSP ou des bibliothèques de balises et définir des
propriétés et les informations relatives à une page JSP.

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


va gérer la page JSP.

Il existe en trois :taglib, page et include.


Elles sont toujours comprises entre les balises <%@ et %>

16
Les inclusions de JSP (8)

Directive taglib

Le code ci-dessous inclut une bibliothèque personnalisée nommée


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

17
Les inclusions de JSP (9)

Directive page

Il définit des informations relatives à la page JSP.


Exemple comment importer des classes Java
Code JSP

<%@ page import="java.util.List, java.util.Date" %>

18
Les inclusions de JSP (10)

Directive page
D'autres options sont utilisables via la directive page comme le
contentType ou l'activation d’une session.
Voici l'ensemble des propriétés accessibles avec cette directive :
<%@ page

language="..."
extends="..." import="..."

session="true | false"

buffer="none | 8kb | sizekb"

autoFlush="true | false"

isThreadSafe="true | false"
isELIgnored ="true | false"
info="..."

errorPage="..."
contentType="..."
pageEncoding="..."

isErrorPage="true | false"
%>
19
Les inclusions de JSP (11)

Directive include
Cette directive permet d'inclure un fichier dans le code source JSP.
Le fichier inclus peut être de code JSP, HTML ou Java.
Exemple
bonjour.htm :
<p><table border="1" cellpadding="4" cellspacing="0" width="30%" align=center >
<tr bgcolor="#A6A5C2">
<td align="center">BONJOUR</Td>
</Tr>
</table></p>

<HTML>
<HEAD>
<TITLE>Essai de page JSP</TITLE>
</HEAD>
<BODY>
<p align="center">Test d'inclusion d'un fichier dans la JSP</p>
<%@ include file="bonjour.htm"%>
<p align="center">fin</p>
</BODY>
</HTML>

20
Communiquer des données entre pages (1)

C’est un concept qui peut intervenir dans la gestion des objets par
la technologie JSP. Il sont appelée visibilité ou scope en anglais
elle définit tout simplement leur durée de vie et les attributs de
requête. Il existe quatre différents types des portées dans une
application :

Page : cette portée est uniquement accessible dans la page JSP


Requête : cette portée est uniquement accessible durant l'existence
de la requête en cours
Session : cette portée est accessible durant l'existence de la session
en cours
Application : cette portée est accessible durant toute l'existence de
l'application.
21
Communiquer des données entre pages (2)

Pour que vous visualisiez bien le principe, voici un schéma


regroupant les différentes portées existantes qui définit la
communication entre les pages :

22
23
Communiquer des données entre pages (3)

1. Portée page n'est accessible que sur une page JSP donnée
2. 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
3. Portée session est accessible durant l'intégralité de la visite
d'un client donné à condition que ne soit pas dépassé durant
cette visite déjà définit
4. Portée application est accessible durant toute l'existence de
l'application et par tous les clients
24
Utiliser Expression Langage(EL) dans
les JSP (1)
Ces expressions sont indispensables à une utilisation optimale des
JSP. C'est grâce à elles que l'on peut s'affranchir définitivement de
l'écriture de scriptlets dans nos belles pages JSP.
Les expressions EL permettent via des syntaxes des tests basiques
sur des expressions et de manipuler simplement des objets et attributs
dans une page sans utiliser de code ni de script Java
Facilites la maintenance des pages JSP, en fournissant des notations
simples et surtout standard, est ainsi grandement facilitée. Avant tout,
étudions la forme et la syntaxe d'une telle expression : ${ expression }

25
Utiliser Expression Langage(EL) dans
les JSP (2)

La première chose qu’il faut savoir, c'est qu'à l'intérieur d'une


expression pour réaliser ces tests, il est possible d'inclure tout une
série d'opérateurs. Parmi ceux-ci, on retrouve les traditionnels :

1. opérateurs arithmétiques, applicables à des nombres : +, -, *, /, %


2. opérateurs logiques, applicables à des booléens : &&, ||,
3. opérateurs relationnels, basés sur l'utilisation des méthodes
equals() et compareTo()

26
Utiliser Expression Langage(EL) dans
Exemple les JSP
(3)

27
Manipuler des Java Beans dans les JSP (1)

L'utilisation d'un Bean dans une JSP est très pratique car il peut faire
des traitements complexes et être utilisable par d'autre JSP.
Le bean peut par exemple assurer l'accès à une base de données et il
permet de simplifier des traitements.

La manipulation des beans depuis une page JSP.

Il est présenté avec <jsp:include>,<jsp:useBean>, <jsp:getProperty>,


<jsp:setProperty> et enfin <jsp:forward>.

28
Manipuler des Java Beans dans les JSP (2)

<jsp:include> : Il permet d'inclure dynamiquement le contenu généré


par une JSP ou une servlet au moment où la JSP est exécutée. C'est la
différence avec la directive include pour laquelle le fichier est inséré
dans la JSP avant la génération de la servlet.
La syntaxe est la suivante :
<jsp:include page="relativeURL" flush="true" />

<jsp:useBean>: La syntaxe est la suivante :


<jsp:useBean
id="beanInstanceName"
scope="page|request|session|application"
{ class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{package.class | <%= expression %>}" type="package.class"
}
{ /> |
> ...
</jsp:useBean>

29
Manipuler des Java Beans dans les JSP (3)
L'attribut id permet de donner un nom à la variable qui va contenir la
référence sur le bean.
L'attribut scope permet de définir la portée sur laquelle le bean est défini
et utilisable.
La valeur de cet attribut détermine la manière dont le tag localise ou
instancie le bean.
Les valeurs possibles sont :
Valeur Rôle
Le bean est utilisable dans toute la page JSP ainsi que dans les fichiers statiques inclus. C'est la valeur par
Page
défaut.
le bean est accessible durant la durée de vie de la requête. La méthode getAttribute() de l'objet request permet
Request
d'obtenir une référence sur le bean.
le bean est utilisable par toutes les JSP qui appartiennent à la même session que la JSP qui a instanciée le
Session bean. Le bean est utilisable tout au long de la session par toutes les pages qui y participent. La JSP qui crée le
bean doit avoir l'attribut session = « true » dans sa directive page.
le bean est utilisable par toutes les JSP qui appartiennent à la même application que la JSP qui a instanciée le
Application
bean. Le bean n'est instancié que lors du rechargement de l'application.

30
Manipuler des Java Beans dans les JSP (4)
<jsp:setProperty>
Il permet de mettre à jour la valeur d'un ou plusieurs attributs d'un Bean.
Le tag utilise le setter (méthode setXXX() où XXX est le nom de la
propriété avec la première lettre en majuscule) pour mettre à jour la
valeur.
Le bean doit exister grâce à un appel au tag <jsp:useBean>.
Il existe trois façons de mettre à jour les propriétés soit à partir des
paramètres de la requête soit avec une valeur :

1. Alimenter automatiquement toutes les propriétés avec les paramètres


correspondants de la requête
2. Alimenter automatiquement une propriété avec le paramètre de la
requête correspondant
3. Alimenter une propriété avec la valeur précisée
31
Manipuler des Java Beans dans les JSP (5)
<jsp:setProperty>
La syntaxe est la suivante :

<jsp:setProperty name="monBean" property="*" />

L'attribut name doit contenir le nom de la variable qui contient la


référence du bean.
Cette valeur doit être identique à celle de l'attribut id du tag
<jsp:useBean> utilisé pour instancier le bean.

32
Manipuler des Java Beans dans les JSP (6)
<jsp:setProperty>
<jsp:setProperty name="beanInstanceName"
{ property="*" |
property="propertyName" [ param=" parameterName" ] |
property="propertyName" value="{string | <%= expression%>}"
}
/>

L'attribut property= «*» permet d'alimenter automatiquement les


propriétés du bean avec les paramètres correspondants contenus dans la
requête.
Le nom des propriétés et le nom des paramètres doivent être identiques.

33
Manipuler des Java Beans dans les JSP (7)
<jsp:getProperty>
Il permet d'obtenir la valeur d'un attribut d'un Bean.
Le tag utilise le getter (méthode getXXX() où XXX est le nom de la
propriété avec la première lettre en majuscule) pour obtenir la valeur et
l'insérer dans la page HTML générée.
Le bean doit exister grâce à un appel au tag <jsp:useBean>.
La syntaxe est la suivante:
<jsp:getProperty name="beanInstanceName" property=" propertyName" />

L'attribut property indique le nom de la propriété dont on veut la valeur.

34
Manipuler des Java Beans dans les JSP (8)
<jsp:forward>
Il permet de rediriger la requête vers une autre URL pointant vers un
fichier HTML, JSP ou une servlet.
Dès que le moteur de JSP rencontre ce tag, il redirige le requête vers
l'URL précisée et ignore le reste de la JSP courante. Tout ce qui a été
généré par la JSP est perdu.
La syntaxe est la suivante:
<jsp:forward page="{relativeURL | <%= expression %>}" />

ou

<jsp:forward page="{relativeURL | <%= expression %>}" >


<jsp:param name="parameterName" value="{ parameterValue |
<%= expression %>}" /> +
</jsp:forward>

35
Merci pour votre attention

Vous aimerez peut-être aussi