Chap 2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 24

JSP - Servlet

Chapitre 2: Java Server Page (JSP)

Dr. Ahmad Khoureich Ka

UADB

L3 D2AW

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 1 / 24


Outline

1 Introduction

2 Les éléments de scripts


Les déclarations
Les expressions
Les scriptlets

3 Les directives
La directive page
La directive include

4 Objets implicites

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 2 / 24


Introduction

C’est quoi un JSP ?

+ Un JSP est une page web (pas une classe Java) qui combine du
HTML (pour la partie statique) et du code java (pour la partie
dynamique).

+ Le code Java est intégré dans le code HTML à l’aide de balises


spéciales.

+ Contrairement aux servlets, les JSP ne sont pas organisés


suivant une logique de paquets, ils sont enregistrés dans les
mêmes répertoires que les pages web.

+ Dans le modèle MVC, les JSP sont utilisés pour la vue (la
présentation de la réponse).

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 3 / 24


Introduction

Exemple de servlet
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

LocalTime heure = LocalTime.now();


DateTimeFormatter dtf =
DateTimeFormatter.ofPattern("hh:mm:ss");
String hrtxt = heure.format(dtf);

response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Heure</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>IL est " + hrtxt + "</h1>");
out.println("</body>");
out.println("</html>");
}
}

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 4 / 24


Introduction

Exemple : Version JSP du servlet précédent


<%@page import="java.time.format.DateTimeFormatter"%>
<%@page import="java.time.LocalTime"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%!
LocalTime heure = LocalTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("hh:mm:ss");
%>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>Heure</title>
</head>
<body>
<h1>Il est <%= heure.format(dtf) %></h1>
</body>
</html>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 5 / 24


Introduction

Cycle de vie du JSP

Conteneur web

JSP Conversion du JSP en servlet


Requête nouveau ou oui (.JSP → .java)
modifié ?

Compilation du servlet
non (.java → .class)

Génération de la réponse Chargement et initialisation


Réponse
par le servlet du servlet

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 6 / 24


Introduction

Cycle de vie du JSP


Interface : javax.servlet.jsp.HttpJspPage
JSP

Initialisation : jspInit()
Initialisation de paramètres
Allocation de ressources

Service :
_jspService(...)
reception des requêtes
génération de la réponse

Destruction : jspDestroy()
Désallocation de resources

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 7 / 24


Introduction

Contenu d’un JSP : contenu statique

+ Le contenu statique peut être constitué de :


code HTML
CSS
Javascript
...

+ Lors de la conversion JSP → servlet le contenu statique reste


inchangé.

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 8 / 24


Introduction

Contenu d’un JSP : contenu dynamique


Le contenu dynamique est constitué des éléments suivants :
Les directives

Les éléments de scripts

Les expressions EL

Les éléments de propriétés JSP:[set|get]

Les éléments JSP:[include|forward]

L’élément JSP:plugin

Les tags personnalisés

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 9 / 24


Les éléments de scripts

Les éléments de scripts

+ Les éléments de scripts permettent d’insérer du code Java dans


une page JSP.

+ Il y a 4 types d’éléments de scripts :


1 le commentaire pour insérer un commentaire JSP.
Syntaxe : <%-- commentaire --%>

2 la déclaration pour déclarer des variables et des méthodes.

3 l’expression pour afficher la valeur d’une variable ou la valeur


retournée par une méthode.

4 le scriptlet pour les blocs d’instructions tels que les boucles, les
traitements conditionnels, etc.

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 10 / 24


Les éléments de scripts Les déclarations

Les déclarations
+ Les déclarations sont utilisées pour déclarer les variables et les
méthodes qui seront utilisées dans la page JSP.
+ Syntaxe : <%! déclaration %>
+ Exemple
<%!
float prixUnitCahier = 100f;
int quantite = 5;
public float CalculerTotal(float prix, int quantite){
float total = prix * quantite;
return total;
}
%>

+ Remarque
Il est possible d’insérer plusieurs balises déclaration dans une
page JSP. Lors de la conversion JSP → servlet toutes ces
déclarations seront regroupées dans le servlet résultant.
Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 11 / 24
Les éléments de scripts Les expressions

Les expressions

+ Les expressions sont utilisées pour afficher la valeur d’une


variable ou la valeur retournée par une méthode.

+ L’expression est évaluée dynamiquement puis convertie en


String avant son insertion dans la réponse.

+ Syntaxe : <%= expression %>

+ Exemple :
<body>
Le prix d'un cahier est: <%= prixUnitCahier %><br/>
Le nombre de cahier acheté est: <%= quantite %><br/>
Le total à payer est:
<%= CalculerTotal(prixUnitCahier, quantite) %>
</body>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 12 / 24


Les éléments de scripts Les scriptlets

Les scriptlets

+ Les scriptlets sont utilisés pour insérer des blocs d’instructions


(boucles, traitements conditionnels, etc.) dans la page JSP. Elles
contiennent généralement les instructions de traitement de la
requête.

+ Syntaxe : <% traitement %>

+ Exemple :
<body>
<%
float aPayer = CalculerTotal(prixUnitCahier, quantite);
if (aPayer >= 5000f) {
%>
Vous avez une réduction de 1500 F.
<% } else {%>
<b>1500 F de réduction à partir de 5000 F d'achats.</b>
<% }%>
</body>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 13 / 24


Les éléments de scripts Les scriptlets

Les scriptlets

+ Exemple (autre écriture) :


<body>
<%
float aPayer = CalculerTotal(prixUnitCahier, quantite);
if (aPayer >= 500f) {
out.println("Vous avez une réduction de 1500 F.");
else {
out.println("<b>1500 F de réduction à partir de 5000 F d'
achats.</b>");
}
%>
</body>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 14 / 24


Les directives

Les directives

+ Les directives sont des instructions utiles au conteneur pour la


traduction de la page JSP en servlet.

+ Ces directives sont au nombre de 3 :

la directive <%@ page %>

la directive <%@ include %>

la directive <%@ taglib %>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 15 / 24


Les directives La directive page

La directive <%@ page %>

+ La directive <%@ page %> permet de définir à l’aide de ses


attributs un certain nombre de propriétés pour la page JSP .
+ Syntaxe
<%@ page attribut="valeur" %>

+ Quelques attributs
contentType
import
errorPage
isErrorPage

+ Remarque : Plusieurs attributs peuvent être définis pour la


directive <%@ page %>, il suffit de les séparer par des virgules.

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 16 / 24


Les directives La directive page

L’attribut contentType

+ L’attribut contentType définit le type de contenu de la réponse


et optionnellement le jeu de caractères utilisé.

+ Exemple :
Le contenu de la réponse est du HTML
<%@ page contentType="text/html" %>

+ Le contenu de la réponse est une image jpeg


<%@ page contentType="image/jpeg" %>

+ Le contenu de la réponse est du HTML avec le jeu de caractères


ISO-Latin1
<%@ page contentType="text/html:charset=ISO-8859-1" %>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 17 / 24


Les directives La directive page

L’attribut import

+ L’attribut import permet de spécifier les paquets et/ou classes à


importer comme le fait le mot clé import.

+ Exemple :
Importer la classe LocalTime
<%@page import="java.time.LocalTime"%>

+ Importer toutes les classes du paquet java.util


<%@ page import="java.util.*" %>

+ Importer la classe LocalTime et toutes les classes du paquet


java.util
<%@ page import="java.time.LocalTime,java.util.*" %>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 18 / 24


Les directives La directive page

L’attribut errorPage

+ L’attribut errorPage est utilisé pour spécifier l’adresse url de la


page à afficher lorsqu’une erreur survient lors de l’exécution de la
page JSP.

+ Exemple :
Afficher la page erreur.jsp lorsqu’une erreur survient lors de
l’exécutions de cette page.
<%@ page errorPage="erreur.jsp" %>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 19 / 24


Les directives La directive page

L’attribut isErrorPage

+ L’attribut isErrorPage permet d’indiquer si cette page est une


page d’erreur. Cet attribut vaut par défaut false.

+ Exemple :
Indiquer que cette page est une page d’erreur.
<%@ page isErrorPage="true" %>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 20 / 24


Les directives La directive include

La directive <%@ include %>

+ La directive <%@ include %> permet d’inclure le contenu d’un


fragment de JSP dans une page JSP.

+ L’inclusion est faite pendant la phase de conversion JSP →


servlet.

+ La directive <%@ include %> peut être insérée n’importe où


dans la page JSP.

+ Syntaxe
<%@ include file="url_relative" %>

+ Remarque : <%@ include %> est généralement utilisée pour


inclure un menu, un en-tête de page ou un bas de page.

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 21 / 24


Les directives La directive include

La directive <%@ include %> : exemple


Exemple : pagedate.jsp
<%@page import="java.time.format.DateTimeFormatter"%>
<%@page import="java.time.LocalDate"%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>Aujourd'hui</title>
</head>
<body>
<%@include file="WEB-INF/jspf/dat.jspf" %>
</body>
</html>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 22 / 24


Les directives La directive include

La directive <%@ include %>


Fragment dat.jspf

<%!
LocalDate dat = LocalDate.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
%>

<h1>Aujourd'hui nous sommes le <%= dat.format(dtf) %></h1>

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 23 / 24


Objets implicites

Objets implicites

+ Les objets implicites sont des variables prédéfinies et initialisées


par le conteneur.

+ Ils sont disponibles dans les expressions et les scriptlets.

+ Quelques objets implicites :


out : représente l’objet permettant d’écrire sur la réponse
(PrintWriter).

config : représente l’objet ServletConfig du servlet obtenu à


partir de la page JSP.

Dr. Ahmad Khoureich Ka (UADB) JSP - Servlet L3 D2AW 24 / 24

Vous aimerez peut-être aussi