0% ont trouvé ce document utile (0 vote)
54 vues49 pages

Introduction Aux JSP: JSP: Java Server Pages

Transféré par

nadabellaali0
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
54 vues49 pages

Introduction Aux JSP: JSP: Java Server Pages

Transféré par

nadabellaali0
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 49

Introduction aux JSP

JSP: Java Server Pages


Introduction
Servlet: classe java qui étend javax.servlet.httpServlet, Accent
mis sur le code java

Que sont les pages JSP?


 Technologie basée sur Java qui simplifie le développement de
sites web dynamique.
 Offre la possibilité d’incorporer rapidement des éléments
dynamiques dans les pages web en intégrant du code java et
en utilisant des balises (tags) simples.
 Ainsi, les développeurs HTML peuvent accéder aux données et
à la logique métier encapsulée dans des objets Java sans
devoir maîtriser toutes la complexité de développement des
applications Java.
Les avantages des JSP
 basé sur un langage orienté objet fortement typé:
 L’encapsulation, la gestion automatique de la mémoire, le
traitement des exceptions…
 La portabilité du bytecode ne limite pas à l’utilisation exclusive
d’un seul type de plate-forme matérielle:
 Si l’un des serveurs doit être remplacé, les pages JSP peuvent
Introduction

Les composants réutilisables


 Plusieurs balises permettent d’interagir avec des
objets java résidant dans le serveur, en particulier avec les
javaBeans côté serveur.

La séparation de la présentation et de l’implémentation


 L’avantage de dissocier ces deux aspects tient à ce que les
modification apportées à l’un ne se répercutent pas sur l’autre.
Code Java embarqué dans une page HTML entre les
balises <% et %>
 désignés par une URL
http://localhost:8080/AppliWeb_JSP/index.jsp
 fragments de code Java exécutés sur le moteur de Servlets

 pages JSP sont converties en Servlet par le moteur de Servlets


lors du premier appel à la JSP
Une JSP en 1 étape
 Ecrire une JSP Clock.jsp et la mettre à la racine du dossier web
au même endroit que les fichier HTML.

Netbe
ans

Web
webContent
Pages
Que contient une JSP?

Fichiertexte combinant du HTML standard et de nouvelles balises


de script.
Compilées en servlet lors de leur première invocation.
Exécutée par un moteur JSP ou conteneur (un plug-in pour des
serveurs web existants)
Lorsque un client demande une ressource JSP, le conteneur
enveloppe cette requête et la transmet à JSP en compagnie
d’un objet réponse. JSP traite la requête et modifie l’objet
réponse pour y incorporer la communication avec le client.

Mais au final une JSP n’est autre qu’une servlet


Correspondance JSP/Servlet
• JSP d’origine

• Servlet générée par Tomcat


• $ECLIPSEWORKDIR\.metadata\.plugins\org.eclipse.wst.server.core\
tmpX\
work\Catalina\localhost\MonProjet\org\apache\jsp
JSP : cycle de vie
 Identique au cycle de vie d’une Servlet:
 Appel de la méthode jspInit() après le chargement de la page
 Appel de la méthode _jspService() à chaque requête
 Appel de la méthode jspDestroy() lors du déchargement

 Rq: Il est possible de redéfinir dans la JSP les méthodes


jspInit() et jspDestroy()
JSP : exemple (modification de jspInit())
Les conventions des balises
Deux types de balises:
Les balises orientées-script inspirées des ASP (Active Server Pages):
Reconnaissables leur délimiteurs : débutent par <% et se terminent par %>
Dans certain cas les caractères sont suivis par !, =, @ pour affiner le sens de
la balise.

Les balises basées sur XML:


Ils tiennent compte de la casse.
Les attribut qui paraissent dans la balise doit être entourée d’apostrophes ou
de guillemets.
Une balise sans corps est close par un chevron simple de fermeture (/>).
Par contre les balise ayant un corps adopte les même convention que HTML.
<jsp:useBean id="Bean" class="ensat.cours.HelloBean" />

<jsp:useBean id="Bean" class="ensat.cours.HelloBean" >


…..
</jsp:useBean>
Standard JSP Syntaxe vs XML Syntaxe

<body>
<% String visitor= request.getParameter("name");
if(visitor== null) visitor="World";%>
Hello, <%=visitor %>!
</body>

<body>
<jsp:useBean id="Bean" class="ensat.cours.HelloBean" />
<jsp:setProperty name="Bean" property="name" param="x"/>
Hello, <jsp:getProperty name="Bean" property="name"/>
</body>
JSP : éléments du code

• Page JSP:
– Html: structure statique de la page
– Code JSP: éléments dynamiques de la
page

• 4 types d’éléments
JSP: éléments de
script

• 4 types d’éléments de script:

– Les directives : indiquent à la pages les


informations globales (par exemple les instruction
d’importations)
– Les déclarations : destinées à la déclaration
de méthodes et de variables à l’échelle d’une
page
– Les scriplets : code Java intégré dans la page
– Les expressions : sous forme de chaine, en vue
de leur insertion dans la sortie de la page
JSP : les directives

<%@……%>
Les directives de jsp 1.2:
• Page : informations relatives à la page
• Include : fichiers à inclure littéralement
• Taglib : URI d’une bibliothèque de balises utilisée dans la page
<%@ pagela
page [extends="package.class"] [import="{package.class|
[language="java"]
package.*}, ..."] [session="true|false"]
[buffer="none|8kb|sizekb"] [autoflush="true|false"]
[contentType="mimeType [charset=characterSet]" |
"text/html;charset=ISO-8859-17"]
[iserrorPage="true|false"]
%>
JSP : les directives de
page

• Définir les "import" nécessaires au code Java de la JSP


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

• Définir le type MIME du contenu retourné par la JSP


<%@ page contentType="text/html"%>

• Fournir l'URL de la JSP à charger en cas d'erreur


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

• Définir si la JSP est une page invoquée en cas d'erreur


<%@ page isErrorPage="true" %>

• Déclarer si la JSP peut être exécutée par plusieurs clients à


la fois
<%@ page isThreadSafe="false" %>
JSP : les directives de
page

ErrorDiv.jsp

Exp_errorPage.jsp
JSP : les directives
d’inclusion

Les directives d’inclusion:


<%@ include ……%>

– Permettent d’inclure le contenu d’un autre fichier


dans la page JSP courante

– Inclusion effectuée avant la compilation de la jsp


JSP : les directive
d’inclusion
<%@ include file="AutreFichier"%>

JSP courante JSP courante


compilation
AutreFichier JSP
compilée

AutreFichier
JSP : les directives
d’inclusion

ficheInfo.jspf

Exp_include.jsp
JSP : les balises
personnalisées

Les balises
personnalisées:
<%@ taglib ……%>

– Permettent d’indiquer une bibliothèque de balises


: adresse et préfixe, pouvant être utilisées dans
la page

<%@ taglib prefix="pref" uri="taglib.tld" %>


JSP : les déclarations

Les déclarations:
<%! ……%>
– Permettent de déclarer des méthodes et des
variables d’instance connus dans toute la page
JSP
JSP : les scriplets

Les
scriplets:
<%……%>
– Permettent d’insérer des blocs de code java (qui
seront placés dans _jspService(…))
JSP : les expressions

Les expressions:
<%=……%>
– Permettent d’évaluer une expression et renvoyer
sa valeur (string)
– Correspond à out.println(…);
JSP : les
commentaires

Les commentaires:
<%--……--%>
– Permettent d’insérer des commentaires (qui
ont l’avantage de ne pas être visibles pour
l’utilisateur)
JSP : éléments de script-objets
implicites

• request : requête courante (HttpServletRequest)


• response : réponse courante (HttpServletResponse)
• out : flot de sortie permet l’écriture sur la réponse
• session : session courante (HttpSession)
• application : espace de données partagé entre
toutes les JSP (ServletContext)
• page : l'instance de servlet associée à la JSP
courante (this)
prédéfinies
 Rq1: Problème
– Les variables prédéfines (request, response, out, session, etc.)
sont locales à la méthode _jspService.
Ainsi, elles ne sont pas disponibles pour les méthodes définies par
des déclarations JSP et les méthodes des classes externes.
– Que peut-on faire ?
 Solution : les passer en paramètres. Ex :

<%!
private void someMethod(HttpSession s) {
doSomethingWith(s);
}
%>
<% someMethod(session); %>
 Rq 2 : println de JSPWriter lance une IOException
– Utiliser “throws IOException” pour les méthodes qui utilisent
println
JSP : les éléments
d’action

– permettent de faire des traitements au moment où


la page est demandée par le client
• utiliser des Java Beans
• inclure dynamiquement un fichier
• rediriger vers une autre page

– Constitués de balises pouvant être intégrées


dans une page jsp utilisant la syntaxe XML
<jsp: ……/>
JSP : les éléments
d’action

– Actions jsp standards:

• jsp:include et jsp:param
• jsp:forward
• jsp:useBean
• jsp:setProperty et
jsp:getProperty
JSP :
include/param

jsp:include et jsp:param

– jsp:include : identique à la directive <%@ include …


sauf que l’inclusion est faite au moment de la
requête
– Donc après compilation…

– jsp:param : permet de passer des informations


à la ressource à inclure
JSP : include/param

jsp:include et jsp:param

L’attribut flush doit être toujours à la valeur true.


JSP : forward

jsp:forward

– Permet de passer le contrôle de la requête à une


autre ressource
– jsp:param permet ici aussi de passer des informations
à la ressource de redirection
JSP : useBean

jsp:useBean

– Permet de séparer la partie traitement de la


partie présentation
– Permet d’instancier un composant JavaBean
(classe java) qui pourra être appelé dans la page
JSP
JSP : useBean-Java
Bean

Java Bean
– Permet de coder la logique métier de l'application WEB
– L'état d'un Bean est décrit par des attributs appelés propriétés
Java Bean
– classe Java respectant un ensemble de directives
• Un constructeur public sans argument

• Des propriétés « prop » accessibles au travers de getteurs et setteurs:


getProp (lecture) et setProp (écriture) portant le nom de la propriété

type getNomDeLaPropriété() void setNomDeLaPropriété(type)


JSP : useBean-Java
Bean
package ensat.tp;

Java Bean:
Exemple

- Utilise le constructeur
par défaut ne
possédant aucun
paramètre
JSP : useBean

jsp:useBean

Nom de l’instance package.class du


bean Champ d'existence
de l'objet Bean:
•request
•page
•session
•application
JSP : get/setproperty

jsp:setProperty et jsp:getProperty

– Permet de récupérer ou de modifier les valeurs


d’une instance de JavaBean

• Récupération :

Équivalent
à:
JSP :
get/setproperty
jsp:setProperty et jsp:getProperty

• Modification :
- Attribuer automatiquement aux attributs les valeurs récupérés de la
requête

- Attribuer directement une valeur de paramètre à un attribut

- Attribuer directement une valeur à un attribut


JSP : get/setproperty
Combinaison Servlet et
JSP

Transmission de requête vers une jsp ou inclusion de


la jsp dans la servlet : Utilisation de
RequestDispatcher

RequestDispatcher MyJspDispat =
getServletContext().getRequestDispatcher(“/folder/page.js
p”);

•MyJspDispat.include(req,res) : la ressource est insérée dans la


servlet active.
•MyJspDispat.forward(req,res) : le flux est complètement redirigé vers
la nouvelle ressource (l’appelant ne peut plus effectuer de sortie au
client, cette tâche est transmise à la nouvelle ressource uniquement)
Intégration
des servlets et des JSP:
Application du design pattern
Model-View-Controller (MVC)
Exemple: Compter les étudiants d’une filière
MVC : étape 1
Le client récupère un formulaire (index.jsp)
pour passer une requête avec paramètres
(1, 2 puis 3).

Controle
ur

index.j
sp
Formulaire : index.jsp
MVC : étape 2
1. Le client envoie son formulaire (GET/POST avec
paramètres)
2. Le conteneur transmet au servlet correspondant (le
controller) GST
R
Controleu
r
Controller : SelectPromo.java

import javax.servlet.http.HttpServletResponse;
import ensat.cours.logiquemetier.Promo;
public class SelectPromo extends HttpServlet {
public void doGet(HttpServletRequest re,
HttpServletResponse pe)
throws IOException, ServletException{
...
String filiere = re.getParameter("Filiere");
...
}
}
MVC : étape 3
3. La servlet controleur interroge le model
4. Le model retourne au controleur le résultat
correspondant
GST
R

getPromo("GST
R")
MVC : étape 4
5. Le controleur utilise les données du model
pour sa réponse
6. Le controleur transmet sa réponse à la view
GSTR
(JSP)

getPromo("GS
TR")
Controleur : SelectPromo.java

String param = request.getParameter( »filiere");


//Promo retourn la liste correpondante au controleur
Promo ob = new Promo();
List<String> result = ob.getPromo(param);
//construit la requête puis l'envoie à la vue
request.setAttribute("promo", result);
request.getRequestDispatcher("reponse.jsp").forward(request,reponse
);
MVC : étape 5
7. La JSP (view) traite la réponse transmise par
le controleur
8. La vue résultante est reçue par le client
GSTR

getPromo("GST
R" )
View: resultat.jsp
<body>
<%
List<String> l = (List<String>) request.getAttribute( "promo");
System.out.println(l==null);
Iterator i = l.iterator();
while(i.hasNext()){
out.println("<br>" + i.next());
}
%>
</body>

Vous aimerez peut-être aussi