Vous êtes sur la page 1sur 18

07/04/2012

Java EE dveloppement dapplications web

EL Moukhtar ZEMMOURI ENSAM - Mekns

Les composants web Java EE JSP Java Server Pages

07/04/2012

Plan
Introduction Principe de fonctionnement des JSP Types de balises JSP lments de base du scripting JSP Technique de gestion des erreurs Les objets implicites JSP Gestion des cookies et sessions
3

JSP Introduction
La plupart des applications Web produisent des pages HTML dynamiquement en modifiant uniquement les champs de donnes et pas la structure de base de la page.

Les JSP constituent une technologie approprie pour ce type de contenu


Au contraire des servlets qui modifient toute la structure de la page.

07/04/2012

JSP Introduction
Les Servlets sont des classes Java (code 100% Java) excutes ct serveur Les JSP sont plutt proches du code HTML Une page JSP (fichier texte .jsp) ressemble beaucoup une page html dans laquelle on a ajout du code Java encapsul dans des balises <% %>

JSP Introduction
Une page JSP contient un modle de document statique (html) et des balises spcifiques (jsp) pour inclure du texte ou excuter une partie de la logique applicative. Le contenu statique est servi comme du HTML normal. Ainsi les JSP permettent de sparer clairement les deux types de code:
Traitement de la requte Gnration du flux HTML

07/04/2012

JSP Introduction
Les JSP rutilisent des fonctionnalits de la classe Servlet telles que:
Lobjet request de la classe HttpServletRequest Lobjet response de la classe HttpServletResponse

En fait, le fichier JSP est traduit en servlet qui est compile, puis instancie lors de son invocation via une URL

Principe de fonctionnement

07/04/2012

Les balises JSP


Une page JSP contient 3 types de balises :
Les directives : instructions qui contrlent le comportement du compilateur de pages JSP, et qui sont donc values avant la compilation les lments de scripts (scriptlets) : blocs dinstructions Java inclus dans la page JSP entre des dlimiteurs <% et %> des balises personnalises (custom tags ou custom actions): elles sont dfinies par le programmeur et gnrent du contenu dynamique lorsque la page est demande.

Premier exemple JSP (hello.jsp)


<html> <head><title>Un exemple de page JSP</title></head> <body> <!-- dfinit les informations globales a la page --> <%@page language="java" %> <!-- Scriplet (code java) --> <% out.println("Bonjour tout le monde"); %> </body> </html>

10

07/04/2012

Un autre exemple simple

11

Types dlments dans une JSP


On distingue 5 types dlments dans une page JSP:

Nom lment
Directives Dclarations Scriptlets Expressions

Tag
<%@%> <%!%> <%%> <%=%>

Traduction Servlet
Pour lensemble de la page En dehors de service() Dans service() Dans service() Non traduits
12

Page include Mthodes et variables de la servlet code code

Commentaire <%----%>

07/04/2012

Les scriptlets <%%>


Sont des blocs de code JAVA intgrs au sein dune page HTML
Tout code JAVA valide Lobjet out pour produire de la sortie HTML, objets request et response

Se transforme dans la mthode _jspService() de la servlet


les variables sont locales la mthode les blocs de code s'insrent dans la servlet
13

Les scriptlets : exemple


<%

%>

String[] noms = {"ali", "hassan"}; for(int i = 0; i < noms.length; i++){ out.println(noms[i]); }

14

07/04/2012

Les expression : <%=%>


Pour valuer une expression ou un objet Java et renvoyer sa valeur :
retourne une version String de l'expression raccourci pour <% out.println(); %>

Se transforme en out.println() dans la mthode _jspService() de la servlet

15

Les expression : exemple


<%

%>

String[] noms = {"ali", "hassan"}; for(int i = 0; i < noms.length; i++){ %> Le nom <%= i %> ime nom est : <%= noms[i] %> <% }

16

07/04/2012

Les dclarations : <%!%>


Pour dclarer des mthodes et des variables dinstance, connues de toute la page jsp (mthodes de la servlet gnre)
Elles peuvent tre places puis utilises nimporte o dans la page

les mthodes ne sont excutes que si elles sont appeles explicitement

Se transforme en dclarations de champs et mthodes au niveau de la servlet


17

Les dclarations : exemple


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

%>

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

18

07/04/2012

Les commentaires : <%- -- -%>


Permettent dinsrer des commentaires dans la page jsp. On peut videmment utiliser les balises HTML <!----> Lavantage des balises jsp est que les commentaires ne seront pas visibles des utilisateurs

19

Les directives : <%@%>


Ce sont des messages envoys au container JSP et qui vont indiquer au container la faon dont il doit transcrire une JSP en servlet <%@ directive attribut1="valeur" attribut2="valeur"... %> 3 types de directives possibles :
page : informations relatives la page include : fichiers inclure littralement Taglib : inclusion des balises personnalises
20

10

07/04/2012

La 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
Info, extends, buffer, autoFlush, isThreadSafe.

21

La directive <%@include %>


Ces directives permettent dinclure le contenu dun fichier dans la page JSP
Syntaxe : <%@include file=UrlRelative%>

Ce type dinclusion est ralis avant la compilation de la page JSP en servlet

22

11

07/04/2012

Gestion des erreurs


Une exception Java peut tre dclenche et gre par la JSP On peut ainsi spcifier une page d'erreur spare pour la JSP :
placer une directive de page pour errorPage au dbut du fichier <%@page errorPage="err.jsp" %> permet denlever le code d'erreur de la JSP un objet Exception est pass la page d'erreur
23

La page derreur jsp


Elle est identifie par une directive de page en dbut de fichier : <@page isErrorPage="true" %> Exemple:
<%@page isErrorPage="true" %> <html><body> Information d'exception : <strong> <%= exception %> </strong> <pre> <% java.io.PrintWriter monWriter =new java.io.PrintWriter(out); exception.printStackTrace(monWriter); %> </pre></body></html>

24

12

07/04/2012

Les objets implicites JSP


Dans une JSP on a accs une liste dobjets implicites permettant dinteragir avec lenvironnement de la servlet dexcution:
request : le HttpServletRequest permet daccder aux paramtres POST, GET et lentte de la requte (cookies, formulaires) response : le HttpServletResponse out : javax.servlet.jsp.JspWriter est un flux de sortie permettant denvoyer la rponse au client (idem response.getWriter()) session : le HttpSession exception : le java.lang.Throwable permettant dattraper les exceptions config : javax.servlet.ServletConfig pageContext : javax.srvlet.jsp.PageContext accs aux attributs de la page application : javax.servlet.ServletContext page : le this dune instance de la page
25

Gestion des cookies et sessions


Cookies et Sessions fonctionnent de la mme faon que dans l'API Servlet Cookie :
<% Cookie c = new Cookie("Sport", "Foot"); response.addCookie(c); %>

Sessions :
toutes les pages JSP disposent automatiquement d'un objet session <% String val = (String)session.getValue("Sport"); %>
26

13

07/04/2012

Actions dans une JSP


Les actions permettent de faire des actions au moment o la page est demande par un client :
inclure dynamiquement un fichier utiliser des beans rediriger vers une autre page

etc...

On distingue les actions suivants:


<jsp:include /> <jsp:forward /> <jsp:useBean />
27

Action : <jsp:include />


<jsp:include page="url" /> Pour inclure des lments standards comme des en-ttes et des pieds de page On peut inclure n'importe quoi qui s'intgrera correctement dans le flot de la page inclusion au moment o la page est servie, pas au moment o elle est traduite en servlet.

28

14

07/04/2012

Action : <jsp:forward />


<jsp:forward page="/unAutreURI" /> Cette balise est utilise pour passer le contrle de la requte une autre ressource dynamique ou statique Afin de passer des informations la ressource inclure on utilise la balise param
<jsp:param name=redir value = valeur />

29

Interaction JSP, Servlets et JavaBeans


Les JSP doivent servir la conception de l'IHM en HTML dans le Navigateur La logique de traitement (logique applicative) doit venir de composants auxquels accde la JSP Avantages de l'utilisation de composants :
lisibilit accrue de la JSP dissociation de la prsentation et des traitements Rutilisation des composants
30

15

07/04/2012

Les JavaBeans : cest quoi?


C'est une classe Java publique qui :
possde un constructeur public sans argument Aucuns de ses attributs ne doit tre public Chaque attribut (property) doit avoir un getter et un setter
public PropertyType getPropertyName() public void setPropertyName(PropertyType val)

Pour les attributs boolans, on doit remplacer getX par isX


31

Utiliser un Bean dans une JSP


On utilise la balise <jsp:useBean />
<jsp:useBean id="nom de l'instance du Bean" class="nom qualifi de la classe du Bean" scope="request | session | application | page" />
L'attribut "scope" (porte) :
request : le Bean est valide pour la requte, il est dtruit la fin page : (dfaut), idem request sauf que le Bean ne peut pas tre transmis session : il est stock dans la session de l'utilisateur et il dure autant que la session application : le Bean est valide pour l'application courante. Il est cre une fois et est partag par tous les clients de l'application

32

16

07/04/2012

Dfinir les proprits du Bean


On utilise la balise <jsp:setProperty />
<jsp:useBean id="monObjet" class="maClasse" scope="request" /> <jsp:setProperty name="monObjet" property="Sport" value="Foot" /> <jsp:setProperty name="monObjet" property="email" value="addr_email" />

33

Lire les proprits du Bean


On utilise la balise <jsp:getProperty ...>
<jsp:useBean id="monObjet" class="maClasse" scope="request" /> <jsp:getProperty name="monObjet" property="Sport" /> <jsp:getProperty name="monObjet" property="email" />

On peut aussi utiliser linstance du bean dans des balises scriplets et faire appel ses mthodes:
<%= monObjet.getNomProp() %>
34

17

07/04/2012

Exemple simple dun Bean


La page JSP :
<html> ... <jsp:useBean id="mybean" class="monPackage.SimpleBean"/> <jsp:setProperty name="mybean" property="message" value="Hello !!" /> <h1>Le message est : <i> <jsp:getProperty name="mybean" property="message"/> </i></h1> </html>
35

Exemple simple dun Bean


Le code source Java du Bean : package monPackage; public class SimpleBean { private String message = "no message"; public SimpleBean() { } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } N.B : le bean doit obligatoirement appartenir un package
36

18

Vous aimerez peut-être aussi