0% ont trouvé ce document utile (0 vote)
20 vues23 pages

Ch4 JSP

Le document présente la technologie JSP, qui permet de créer des pages HTML dynamiques intégrant du code Java. Il décrit le cycle de vie des pages JSP, les balises JSP, et leurs fonctionnalités, ainsi que des exemples pratiques d'utilisation. JSP facilite la séparation entre la logique de présentation et la logique métier, rendant le développement web plus structuré et sécurisé.

Transféré par

Cyrille Kevin Bakouan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues23 pages

Ch4 JSP

Le document présente la technologie JSP, qui permet de créer des pages HTML dynamiques intégrant du code Java. Il décrit le cycle de vie des pages JSP, les balises JSP, et leurs fonctionnalités, ainsi que des exemples pratiques d'utilisation. JSP facilite la séparation entre la logique de présentation et la logique métier, rendant le développement web plus structuré et sécurisé.

Transféré par

Cyrille Kevin Bakouan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Institut Supérieur d’Informatique

Chapitre 3 : JSP

Tuteur : Mohamed Sahbi


Bahroun
Année 2022-2023
Introduction

Une page JSP est une page HTML qui peut contenir du
code Java. Elle est un squelette de page HTML qui
contient des morceaux de code Java permettant de
réaliser des traitements dynamiques ou d’intégrer des
données.

La technologie JSP permet l’utilisation et la création de


balises JSP qui ajoutent des fonctionnalités pour
étendre les possibilités de développement.

La page officielle de cette technologie est à l'adresse suivante :http://www.oracle.com/technetwork/java/javaee/jsp/index.html


Introduction

Le mécanisme JSP permet de séparer la logique


contrôlant la présentation des données de la logique
métier, contrôlant la valeur des données. D’un point de
vue technique, les JSP sont compilées par le moteur
JASPER pour devenir des Servlets Java.

Le principe de fonctionnement est proche de langage


PHP mais à l’inverse, JSP compile le code au lieu de
l’interpréter à chaque fois, ce qui soulage la charge de
traitement du serveur.
Présentation

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 ;
 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).
Avantages

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

• Le développeur s’occupe de la partie logique avec les


traitements et l’accès aux données.
Cycle de vie

Côté serveur, une page JSP est interprétée une seule fois,
soit lors du premier appel, soit lors du lancement du
conteneur Web.
En fait, le conteneur Web crée une Servlet à partir de la
page JSP.
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

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())
– application : le ServletContext (idem
getServletConfig().getContext() )
Les balises JSP : scriptlets : <% … %>

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 :
 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"};


for(int i = 0; i < noms.length; i++){
Exemple
out.println(noms[i]);
} %>
Les balises JSP : expressions : <%= … %>

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


faut utiliser :
– l’objet out : <% out.println(" bonjour … "); %>
– l’expression : <%= " bonjour … " %>

<%
String[ ] noms = {"nn", "tt","aa","xx"};
for(int i = 0; i < noms.length; i++){
%>
Le nom est <%= noms[i] %>
<%
}
%>
Les balises JSP : déclarations : <%! … %>

Ils sont utilisés pour déclarer des attributs et des méthodes à


l'échelle de la page

<%!
private int accessCount = 0;
private int incrementCount() {
return accessCount++; }
%>

<H2>Nombre et liste des articles</H2>
Nombre d'articles : <%= incrementCount() %>
Les balises JSP : directives

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 :


 <%@ page ... %> : définir des options de configuration
 <%@ include ... %> : inclure des fichiers statiques dans la JSP
 <%@ taglib ... %> : définir des tags personnalisés
Les balises JSP : directives

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 …
Les balises JSP : directives
Directive <%@ include .. %>
La directive <%@ include ... %> est utile si plusieurs pages se
doivent partager une même ensemble d'information (l’ajout
d’entête et de pied-de-page dans toutes les pages jsp). Dans ce
cas, codez ces parties dans des fichiers séparés et injectez les, via
cette directive, dans tous les autre fichiers qui en ont besoin.

<%@ page language="java" %>


<HTML><BODY>
<%@ include file="header.jsp" %>
<!-- Contenu de la page à générer -->
<%@ include file="footer.jsp" %>
</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
Affichage de la date en français

<%@page import="java.text.DateFormat"%>
<%@page import="java.util.Locale"%>
<%@page import="java.util.Date"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
Date date = new Date();
DateFormat df = DateFormat.getDateInstance( DateFormat.FULL , Locale.FRANCE );
%>
<p>Au moment de l’exécution de ce script nous sommes le
<%=df.format(date)%>.</p> </body></html> 17
Exemple 3 (1/4)
Réalisation d’un annuaire

Adresse.java Personne.java
package servlet.ex3; package servlet.ex3;
public class Adresse { public class Personne {
int cp; String nom;
int numero; String prenom;
String nomRue; int age;
String ville; Méthodes set et get Adresse adresse;
écrites d’une manière …
… automatique

public Adresse(int n, String r, int cp, public Personne (String nom, String
String v){ prenom, int age,
setCp(cp); Adresse adresse){
setNumero(n); setNom(nom);
setVille(v); setPrenom(prenom);
setAge(age);
setNomRue(r);}}
setAdresse(adresse);}}

18
Exemple 3 (2/4)
Réalisation d’un annuaire

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 p2=new Personne("Ben saleh ","samia",20,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
Exemple 3 (3/4)
Réalisation d’un annuaire

annuaire.jsp
<% ArrayList<Personne> listePersonnes = new ArrayList();
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

Réalisation d’un annuaire

Numéro Nom Prénom Age Adresse complète


17 rue de palestine
1 Ben saleh Ali 23
1000-Tunis
17 rue de palestine
2 Ben saleh samia 20
1000-Tunis
31 rue des fleurs
3 Arfaoui Ali 37
1080-Marsa
46 rue de la liberté
4 Farhat Dali 40
1005-Bardo
122 rue des martyrs
5 Hamdi Monia 19
2100-Radès

22
Exemple 4
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html><head><title>JSP complet</title></head>
<body>
<%! String [ ] langages = {" Java " , "C++" , " ADA" , " PHP" };
int random4() {return ( int ) (Math.random() *4 ) ;}
%>
<p>Parmi tous les langages orientés objets :</p>
<ol>
<%
for ( int i =0; i < langages.length ; i++)
{ out.println ( "<li>" + langages [ i ] + "</ li>" ) ; }
%>
</ol>
<p>Le prochain langage que j'apprends est
<b><%= langages [ random4 ( ) ] %> </b></p>
</body>
</html>

Vous aimerez peut-être aussi