Institut Supérieur d’Informatique
Tuteur : Mohamed Sahbi
Chapitre 3 : JSP Bahroun
Année 2022-2023
Une page JSP est une page HTML qui peut
contenir du
code Java. Elle est un squelette de
contient des morceaux de code
page HTML qui
Java permettant de
réaliser des traitements
dynamiques ou d’intégrer des
Introduction
La technologie JSP permet l’utilisation et la
balises JSP qui ajoutent des
création de
fonctionnalités pour
étendre les possibilités de
développement. données.
La page officielle de cette technologie est à l'adresse suivante
:http://www.oracle.com/technetwork/java/javaee/jsp/index.html
Le mécanisme JSP permet de séparer la
logiquecontrôlant la présentation des données de
la logiquemétier, contrôlant la valeur des données.
D’un point devue technique, les JSP sont
compilées par le moteur
JASPER pour devenir des
Le principe de fonctionnement est
Servlets Java.
proche de langagePHP mais à l’inverse, JSP
compile le code au lieu del’interpréter à chaque
fois, ce qui soulage la charge de
traitement du
serveur.Introduction
Les pages JSP sont exécutées par le serveur
d’applications
pour répondre aux requêtes des clients.
Les JSP ont plusieurs fonctionnalités :
la création de sites Web dynamiques; le travail
avec des bases de données ;
Présentation
l’amélioration de la sécurité (le code est exécuté
par le
serveur et donc non accessible par les clients).
l’utilisation des JavaBeans (simplicité du
code,
manipulation d’objets simples...) ; l’utilisation
de balises personnalisées (taglib).
Avec ce modèle de programmation, il est plus aisé
de
scinder le développement d’une application Web
: • Le graphiste s’occupe de la partie présentation
HTML
Avantages
• Le développeur s’occupe de la partie logique
avec les
traitements et l’accès aux données.
Côté serveur, une page JSP est interprétée une seule
soit lors du premier appel, soit lors du lancement
fois,
du En fait, le conteneur Web crée une
conteneur Web.
Servlet à partir de la
page JSP.
Cycle de vie
La Servlet est ensuite compilée, chargée en mémoire
et mise
en service pour répondre aux requêtes clients.
Cycle de vie
Script JSP
Un script JSP contient :
Des balises HTML :
<html>,<head>,<body>,</html>,</head>,</body> Des
variables prédéfinis :
• request
• response
Des balises JSP :
• Les balises de commentaire,
• Les balises de déclaration,
• Les balises de scriptlet,
• Les balises d’expression,
• Les balises de directives,
Les variables
prédéfinies
– application : le ServletContext (idem
Ils (objets implicites) sont accessibles dans les balises JSP
: – request : le HttpServletRequest
– response : le HttpServletResponse –
session : le HttpSession
– out : flot de sortie (idem response.getWriter())
getServletConfig().getContext() )
C’est un bloc de code Java compris entre les balises
suivantes : <% /* scriptlet */ %> . Ce code Java devient le
corps de la méthode_jspService() lors de la génération de
la servlet.
Les objets les plus utilisés dans les scriptlets sont :
Les balises JSP : scriptlets : <% … %>
l'objet request pour connaître les détails de la requête
HTTP,
l'objet out permettant d'envoyer des données vers le
client. <% String[ ] noms = {"titi", "toto"};
Exemple i++){ out.println(noms[i]);
for(int i = 0; i < noms.length; } %>
Pour évaluer une expression ou un objet Java et renvoyer sa
valeur, il
faut utiliser : – l’objet out : <% out.println(" bonjour … ");
%> – l’expression : <%= " bonjour … " %>
Les balises JSP : expressions : <%= …
%>
<%
String[ ] noms = {"nn", "tt","aa","xx"};
for(int i = 0; i < noms.length; i++){
%>
Le nom est <%= noms[i] %>
<%
}
%>
Ils sont utilisés pour déclarer des attributs et des méthodes
à <%!
l'échelle de la page private int accessCount = 0;
Les balises JSP : déclarations : <%! …
%> private int incrementCount() {
return accessCount++; }
%>
…
<H2>Nombre et liste des articles</H2>
Nombre d'articles : <%= incrementCount() %>
Une directive permet de spécifier des informations qui vont
servir
à configurer et à influer sur le code de la servlet
générée. Notons trois directives :
Les balises JSP : directives
<%@ page ... %> : définir des options de
configuration <%@ include ... %> : inclure des fichiers
statiques dans la JSP <%@ taglib ... %> : définir des
tags personnalisés
– <%@ page language="java"
– <%@ page import="java.util.*, java.net.*" %> – <%@
page contentType="text/plain" %>
Les balises JSP : directives
– <%@ page session="true|false " %> – <%@ page
errorPage="pathToErrorPage" %>
Directive <%@ page ... %>
– <%@ page isErrorPage="true|false" %> – <%@ page …
Valeurs possibles :
Directive <%@ include .. %>
La directive <%@ include ... %> est utile si plusieurs pages
doivent partager une même ensemble d'information
se
(l’ajoutd’entête et de pied-de-page dans toutes les pages
jsp). Dans cecas, codez ces parties dans des fichiers
séparés et injectez les, via
cette directive, dans tous les
autre fichiers qui en ont besoin.
Les balises JSP : directives
<%@ include file="header.jsp" %>
<!-- Contenu de la page à générer -->
<%@ include file="footer.jsp" %>
<%@ page language="java" %>
<HTML><BODY>
</BODY><HTML>
Exemple 1
<%@ page language="java" %>
<html>
<head>
<title> JSP Page 2</title>
</head>
<body>
<p>
<%! int i = 0 ; %>
<% i ++ ; %>
Hello World ! <%= "Vous avez atteint ce JSP " + i + " fois" %> </p>
<%@ include file="piedDePage.html" %>
</body>
</html>
16
Exemple 2
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
Affichage de la date en français
<%
Date date = new Date();
<%@page import="java.text.DateFormat"%>
DateFormat df = DateFormat.getDateInstance( DateFormat.FULL , Locale.FRANCE );
<%@page import="java.util.Locale"%>
<%@page import="java.util.Date"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>JSP Page</title>
</head>
<body>
%>
<p>Au moment de l’exécution de ce script nous sommes le
<%=df.format(date)%>.</p> </body></html>
17
public class Adresse {
public class Personne {
Exemple 3 (1/4) Réalisation d’un annuaire
Personne.java
Adresse.java
package servlet.ex3;
package servlet.ex3;
String nom; String prenom; int age;
int cp;
int numero; String nomRue; String ville;
Méthodes set et get
Adresse adresse;
écrites d’une manière
… …
automatique
public Personne (String nom, String
public Adresse(int n, String r, int cp,
String v){ setCp(cp); setNumero(n); setVille(v); setPrenom(prenom); setAge(age);
setNomRue(r);}} setAdresse(adresse);}}
prenom, int age, Adresse adresse){ setNom(nom);
18
Exemple 3 (2/4)
Réalisation d’un annuaire
Personne p2=new Personne("Ben saleh ","samia",20,ad1);
annuaire.jsp
<%@page
import="servlet.ex3.Adresse, servlet.ex3.Personne, java.util.*"
contentType="text/html; charset=iso-8859-15"
%>
<%
Adresse ad1=new Adresse(17,"rue de palestine",1000, "Tunis"); Adresse
ad2=new Adresse(31," rue des fleurs",1080, "Marsa"); Adresse ad3=new
Adresse(46,"rue de la liberté",1005, "Bardo"); Adresse ad4=new
Adresse(122,"rue des martyrs",2100, "Radès");
Personne p1=new Personne("Ben saleh","Ali",23,ad1);
Personne p3=new Personne("Arfaoui", "Ali",37,ad2);
Personne p4=new Personne("Farhat", "Dali",52,ad3);
Personne p5=new Personne("Hamdi", "Monia",19,ad4);
[…]
%>
19
<% ArrayList<Personne> listePersonnes = new ArrayList();
Exemple 3 (3/4)
Réalisation d’un annuaire
annuaire.jsp
listePersonnes.add(p1);
listePersonnes.add(p2);
listePersonnes.add(p3);
listePersonnes.add(p4);
listePersonnes.add(p5);%>
<table>
<tr>
<th>Numéro</th>
<th>Nom</th>
<th>Prénom</th>
<th>Age</th>
<th>Adresse complète</th>
</tr>
20
Exemple 3 (4/4)
Réalisation d’un annuaire
[…]
<%
for(int i=0;i<listePersonnes.size();i++){ Personne p = listePersonnes.get(i);
Adresse a = p.getAdresse();
out.println("<tr>");
out.println("<td>"+(i+1)+"</td>"); out.println("<td>"+p.getNom()+"</td>");
out.println("<td>"+p.getPrenom()+"</td>"); out.println("<td>"+p.getAge()+"</td>");
out.println("<td>"+a.getNumero()+"
"+a.getNomRue()+"<br/>"+a.getCp()+"-"+a.getVille()+"</td>");out.println("</tr>");
}
%>
</table>
</body>
</html>
21
Exemple 3 – L’affichage
Numéro Nom Prénom Age Adresse complète 1 Ben saleh Ali 23 17 rue
de palestine 2 Ben saleh samia 20 17 rue de palestine 3 Arfaoui Ali 37
31 rue des fleurs
4 Farhat Dali 40 46 rue de la liberté
Réalisation d’un annuaire
5 Hamdi Monia 19 122 rue des martyrs
1000-Tunis
1000-Tunis
1080-Marsa
1005-Bardo
2100-Radès
22
int random4() {return ( int ) (Math.random() *4 ) ;}
Exemple 4
for ( int i =0; i < langages.length ; i++)
{ out.println ( "<li>" + langages [ i ] + "</ li>" ) ; }
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE
html>
<html><head><title>JSP complet</title></head> <body>
<%! String [ ] langages = {" Java " , "C++" , " ADA" , " PHP" };
%>
<p>Parmi tous les langages orientés objets :</p> <ol>
<%
%>
</ol>
<p>Le prochain langage que j'apprends est
<b><%= langages [ random4 ( ) ] %> </b></p> </body>
</html>