Académique Documents
Professionnel Documents
Culture Documents
Introduction
Concepts fondamentaux
Dlgation et inclusion
Partage de donnes
Exemple
Cycle de vie de la servlet gnre
Licence pro cours n3
client
(navigateur)
rponse
serveur
web
compilation du
script JSP
JVM
servlet
<HTML> <BODY>
<H1>Affichage des prix HT et TTC</H1>
<% String param = request.getParameter("PHT");
float prixHT = Float.parseFloat(param);
float prixTTC= prixHT*(1+0.196F);
out.print("prix HT =" + prixHT + "<BR>" );
out.print("prix TTC =" + prixTTC + "<BR>" );
%>
</BODY> </HTML>
fichier HTML
envoy cot client
rsultat = HTML
gnr via l'objet
prdfini out
du code Java
<HTML> <BODY>
<H1> Affichage des prix HT et TTC </H1>
prixHT = 42,50<BR>
prixTTC = 50,83<BR>
</BODY> </HTML>
JSP
compilation
requte
client
objet
request
SERVLET
mthode de
servlet
objet
response
rponse
au client
Balises de commentaires
2 manires de placer des commentaires dans une
page JSP
<!-- mon commentaire -->
dans ce cas les commentaires sont transmis la
rponse. Ils sont donc visibles lorsqu'on visualise le
code source de la page HTML.
ou
<%-- mon commentaire --%>
Le serveur JSP ne les prend pas en compte. Leur
intrt est uniquement de commenter le code JSP
Licence pro cours n3
4 types de balises
Les balises de directives spcifient les paramtres applicables la
page
<%@ ... %>
Les balises permettant de dfinir des variables globales la page
<%! ... %>
Les balises de scriptlets permettant d'inclure du code java
<% ... %>
Les balises permettant d'valuer une expression et l'affichage de sa
valeur dans la page
<%= ... %>
Licence pro cours n3
Balises de scriptlets
Une scriptlet une suite d'instructions Java contenues dans la balise
<%
%>
et excutes ds qu'un client invoque la page
Les variables dclares dans une scriptlet sont locales une
requte.
Contrairement aux variables dclares dans la balise <%!
qui persistent d'une requte l'autre
Exemple :
<% float[] pttc = {23.4,78.9,32.0};
for (int i=0;i<pttc.length;i++){
out.println("<h2>Prix TTC</h2>");
out.println(pttc[i]);
}
Licence pro cours n3
%>
%>
10
Balises de dclarations
Les variables et mthodes qui deviendront membres de
la servlet gnre par le compilateur JSP sont
dclares par la balise :
<%!
dclarations
%>
Exemples :
<%! private int nbLettres(String nom){
return nom.length();
}
int nb = 0;
%>
Mthode d'instance
- attache l'objet correspondant
la JSP
variable d'instance
- initialise l'instanciation de la JSP
- persiste entre 2 invocations tant que la JSP ne
Licence pro cours n3
change pas
11
Exemple
Attention !!
<%! int cpt = 0; %>
12
Balises d'expression
Une balise d'expression contient une expression Java
<%=
%>
Exemple 1 :
<input name="Nom" value= "<%= nom %>" type="text">
A l'excution, cette expression est value, sa valeur est envoye la
page HTML de rponse. Concrtement, l'utilisateur saisit un nom qui
sera un paramtre de la requte. La valeur sera null si aucune
valeur n'est fournie
Exemple 2 :
<%Date date = new java.util.Date();
out.println( "date du jour : " + date );
la valeur retourne est
%>
une String
est quivalent
date du jour : <%= new java.util.Date()%>
Licence pro cours n3
13
Balises de directives
3 sortes de balises qui spcifient des directives de gnration de page
au compilateur :
14
La directive page
Attributs qui s'appliqueront la page
15
transmission
d'information la page
d'erreur
Licence pro cours n3
16
17
erreur.jsp
18
19
<%@include
file="/chemin/relatif/auContexte"%>
<%@include
file="dansLe/repertoire/deLaPage"%>
20
21
corps.jsp
<%! String nom; %>
<% nom="Meyer"; %>
piedpage.html
entete.html
22
La directive taglib
l'API 1.1 de Java Server Pages permet aux dveloppeurs de crer
une bibliothque de balises qui peuvent tre mlanges aux
balises jsp standards ainsi qu'aux balises html.
Le moteur jsp traite ces balises comme des balises standards pour
crer du code java compil ensuite en servlets.
<%@taglib uri="taglib/maBalise.tld"
prefix="unPrefixe"%>
23
24
Exemple
Le tag : <tt:simple />
Serait implanter par le gestionnaire :
public SimpleTag extends TagSupport {
public int doStartTag() throws JspException {
try {
pageContext.getOut().print("Hello.");
} catch (Exception ex) {
throw new JspTagException("SimpleTag: " +
ex.getMessage());
}
return SKIP_BODY; // ce tag n'a pas de corps
}
public int doEndTag() {
return EVAL_PAGE;// si le reste de la page
// doit tre valu
Licence pro cours n3
25
}
}
26
out et request:
variables implicites
27
28
29
30
Compilation de la servlet
question_jsp.java devient question_jsp.class
A ce niveau, les erreurs de syntaxe Java sont dtectes
Destruction de la servlet
- la mthode jspDestroy() enregistre les donnes, libre les ressources
utilises par la servlet puis ferme les connexions aux BD
- le programmeur peut surcharger jspDestroy() et _jspInit()
Licence pro cours n3
32
33
Java Beans
Dfinition
Persistance
Proprits
beans et JSP
Exemple
34
35
Persistance
Exemple :
- composant logiciel charg de surveiller la temprature d'une piscine
- la temprature min de dclenchement du chauffage est fixe 25
- si l'application s'arrte et reprend plus tard, il est souhaitable que ce
seuil soit mmoris
Licence pro cours n3
36
Dfinition
Un bean correspond une tche bien dfinie (logique
mtier) comme la gestion d'une piscine, l'inventaire
d'un magasin, le cot d'entretien d'une turbine, etc...
Un bean est une classe Java laquelle on associe
des proprits
Chaque proprit a une ou plusieurs mthodes
d'accs
Le codage des mthodes suit certaines conventions
de nommage
Licence pro cours n3
37
38
Autres proprits
Proprits possdant des valeurs multiple :
public TypeProprit[] getNomProprit();
public TypeProprit getNomProprit(int index);
public void setNomProprit(TypeProprit[] valeur);
public void setNomProprit
(int index,TypeProprit[] valeur);
39
40
Beans et JSP
Un bean est inclus dans une page JSP par la balise :
<jsp:useBean>
Aprs excution, un bean rend son rsultat la page
JSP ou la servlet
L'utilisation de beans vite l'emploi de la mthode
getRequestParameter(...)
La valeur du paramtre d'une requte peut tre
utilise directement pour renseigner la proprit d'un
bean
Un serveur peut grer la porte d'un bean en le liant
soit une page, une requte, une session ou une
application
Licence pro cours n3
41
42
43
Exemple 1 (1/3)
La page JSP qui suit affiche le texte : Bonjour suivi de la
valeur du paramtre nom de la requte.
La classe HelloBean est stocke dans le rpertoire entites.
La proprit nom du bean HelloBean est alimente par le
paramtre de la requte pass dans son en-tte si celui-ci est
renseign
Sinon c'est sa valeur par dfaut qui est utilise
L'excution de la page JSP provoque l'affichage du texte
bonjour suivi du contenu de la proprit nom du bean
HelloBean
Intrt :
pas de code Java dans la page JSP
modularit dans la construction de l'application
44
Exemple 1 (2/3)
package entites;
import java.io.Serializable;
public class HelloBean implements Serializable{
private String nom = " tous";
private String prenom = " ";
public void setNom( String nom ){
this.nom=nom;
}
public String getNom(){
return nom;
}
public void setPrenom( String prenom ){
this.prenom=prenom;
}
public String getPrenom(){
return prenom;
}
Licence pro cours n3
}
45
Exemple 1 (3/3)
<%-- hello.jsp --%>
<jsp:useBean id="hello" class="entites.HelloBean">
<jsp:setProperty name="hello" property="prenom"
value="Albert" />
</jsp:useBean>
valeur donner
la proprit
<HTML>
<HEAD><TITLE>Bonjour</TITLE></HEAD>
<BODY>
rfrence du bean
<H2>
Bonjour <jsp:getProperty name="hello" property="nom" />
<br>
<jsp:getProperty name="hello" property="prenom" />
</H2>
</BODY>
nom de la
</HTML>
proprit
Licence pro cours n3
46
47
Exemple 2
un prnom est saisi
travers un formulaire
page affiche
en rponse
48
Le bean HelloBean
package entites;
import java.io.Serializable;
public class HelloBean implements Serializable{
private String nom;
private String prenom;
public void setNom( String nom ){
this.nom = nom;
}
public String getNom(){ return nom; }
public void setPrenom( String prenom ){
this.prenom = prenom;
}
public String getPrenom(){ return prenom; }
}
Licence pro cours n3
49
hello.jsp
initialisation
<jsp:useBean id="hello" class="entites.HelloBean">
<jsp:setProperty name="hello" property="prenom" value=" "/>
<jsp:setProperty name="hello" property="nom" value=" tous!"/>
</jsp:useBean>
<jsp:setProperty name="hello" property="prenom" />
<HTML>
<HEAD><TITLE>Bonjour</TITLE></HEAD>
<BODY>
<h2>Tapez votre prnom</h2>
<form action="hello.jsp" method="post"><hr>
<table><tr>
<td>Prnom</td>
<td><input name="prenom" value="" type="text" size="15">
<td><input type="submit" value="Envoyer"></td>
</tr></table></form><hr>
<b>Bonjour</b>
<jsp:getProperty name="hello" property="nom" /><br>
<jsp:getProperty name="hello" property="prenom" />
Licence pro cours n3
50
</BODY></HTML>
Fonctionnement (1/2)
Initialisation
aprs le premier appel
hello.jsp, nom et
prenom sont initialiss
L'objet hello est cr et initialis avec les valeurs par dfaut comprises entre
les balises
<jsp:useBean id="hello" ......... </jsp:useBean>
Licence pro cours n3
51
Fonctionnement (2/2)
Aprs validation du formulaire, la nouvelle valeur de la proprit prenom
est transmise l'objet hello par la balise jsp :
<jsp:setProperty name="hello" property="prenom" />
52