Sunteți pe pagina 1din 28

Programmation Java - Web

Gnration dynamique de contenu Web Gnration dynamique de contenu Web

Les JSP Java Les JSP Java

Web dynamique
Principe gnral
Serveur Web Page HTML <html> <body> <h1>Annuaire</h1> Tanguy 1436 Picouet 1234 .... .... </body> </html>

HTTP

Internet

Donnes

Base de donnes

Client : navigateur Web

n La page HTML nexiste priori pas compos Elle est compose dynamiquement par un script (ou un programme) donn d Les donnes qui composent la page proviennent dune base donn de donnes
Les JSP Java 1

Architecture dune application Web


Une architecture Web interactive est divise en plusieurs couches w Chacune dentre-elles remplit une fonction prcise dentrepr Gnralement trois couches (3-tiers) ou plus (n-tiers) w Couche prsentation de linformation lutilisateur pr l
Modules de mise en page (prpar mani Interfaces utilisateur (prpares de manire statique ou dynamique) visualis ct visualises, ct client, dans un navigateur l Ensemble de programmes de traitement de linformation (logique mtier ou business logic) excuts ct serveur excut ct Rception et traitement des informations obtenues du client Acc donn Accs la (aux) base(s) de donnes Servlets/JSP Techniques : PHP, ASP, Servlets/JSP dacc l Logique daccs, maintenance et stockage de linformation
Les JSP Java 2

w Couche application

w Couche base de donnes donn

Architecture 3-tiers : principes

Structure gnrale dune architecture 3-tiers


1er niveau 2me niveau donnes 3me niveau

SGBD CLIENT
requtes

SERVEUR D'APPLICATIONS
donnes

Moniteurs transactionnels

Les JSP Java

Architecture 3-tiers : serveur Web

wLe client na que des fonctions daffichage et ne fait Le n d que des requtes vers le serveur aucun traitement effectu ny est effectu wUne extension du serveur est ncessaire pour pouvoir Une n ex acc excuter les scripts ou programmes qui accdent au inf niveau infrieur
Les JSP Java 4

Droulement
1er niveau 2me niveau 3me niveau

CLIENT LEGER : NAVIGATEUR


rseau

EXTENSION (PHP, ASP, Servlets, ...)

rseau

SERVEUR WEB

Serveur de bases de donnes

w Une application Web :


1. 2. 3. 4.

donn Recueille les donnes utilisateur Envoie une (des) requte(s) au serveur Web Ex Excute le programme serveur requis donn Assemble les donnes et les envoie vers le navigateur

Les JSP Java

Servlets et JSP
Problmes des servlets : la production de HTML est laborieuse (appels out.println())

Les Java Server Pages (JSP) : wInclusion de code Java dans du HTML Inclusion wLa page HTML + JSP est compile dans une servlet compil La temporaire wIntgration avec les composants JavaBeans Int Int

On retrouve une approche semblable PHP avec la puissance des API Java
Les JSP Java 6

LAPI Servlet/jSP
Spcification actuelle : 2.4 wDfinie (Cf. J2EE) : D

ex l Infrastructure d excution de lapplication Web : ensemble n ex des fichiers ncessaires son excution LAPI servlet en elle-mme : la faon de les programmer ellefa
javax.servlet

Les servlets sont des classes qui implmentent : wjavax.servlet.* : javax.servlet.* javax.servlet
g Package gnrique

GenericServlet +service() javax.servlet.http HttpServlet +doGet() +doPost()

wjavax.servlet.http.* : javax.servlet.http.* javax.servlet.http

Package spcifique pour les sp servlets HTTP


Les JSP Java

Structure dune application Web Java (servlets et/ou JSP)


Structure commune tous les conteneurs de servlets/JSP wContient lensemble des fichiers ncessaires la n Contient l ex l bonne excution de lapplication

Fichier WAR : Java Web ARchive wArchive JAR avec une structure dfinie dans la d Archive sp spcification servlets/JSP

Les JSP Java

Structure dune application Web Java (servlets et/ou JSP)


Racine :
MonAppliWeb.war +-- index.html +-- formulaire.html | +-- WEB-INF +-- web.xml +-- classes | | | | +-- lib +-- lib1.jar +-- lib2.jar +-- classes12.zip Les JSP Java +-- servlet1.class +-- servlet2.class +-- servlet3.class

w Ressources statiques : document HTML, images, etc. w Rpertoire WEB-INF : WEBFichier web.xml : descripteur de l dploiement de lapplication Web Rpertoire classes : les classes n ex Java ncessaires lexcution l de lapplication Rpertoire lib : les librairies n additionnelles ncessaires (ajout (ajoutes automatiquement au l CLASSPATH de lapplication)

Application Web accessible lURL : http://serveur_web/MonAppliWeb/ http://serveur_web/MonAppliWeb/


9

Descripteur de dploiement dune application Web


Fichier web.xml situ au sein du rpertoire WEBINF wUtilise une Utilise syntaxe XML But principal wLister lensemble Lister l des servlets/JSP l de lapplication Web et leur assigner une URL
<?xml version="1.0" encoding="UTF-8"?> <web-app> <!-- Liste des servlets accessibles --> <servlet> <servlet-name> visualisationannuaire </servlet-name> <servletclass> VisualisationAnnuaireServlet </servlet-class> </servlet> ... <!-- URLs associes aux servlets --> <servlet-mapping> <servlet-name> visualisationannuaire </servlet-name> <url-pattern> /visualisationannuaire </url-pattern> </servlet-mapping> ... </web-app>

Les JSP Java

10

JSP
JSP wCode Java embarqu dans une page HTML Code embarqu encadr encadr par les balises <% et %> wSources JSP : extension .jsp Sources wLes sources sont stocks sur le serveur comme les Les stock documents HTML. Ils sont accessibles via une URL. wLe chargement de lURL provoque lexcution de la Le l lex JSP sur le serveur code

Les JSP Java

11

JSP : exemple
FactoriellesJSP.jsp
<html> <head> <title>FactoriellesJSP</title> </head> <body> <h1>Table des factorielles</h1> <% int fact = 1; for(int i=1;i<=7;i++) { fact = fact * i; out.println(i + "! = " + fact + "<br>"); } %> </body> </html>
Les JSP Java 12

Mcanismes
Mcanismes wPlusieurs zones <% . . . %> peuvent cohabiter dans Plusieurs une mme JSP wLors du premier chargement (ou aprs une Lors apr d modification) dune JSP, le moteur de JSP :

Rassemble tous les fragments <% . . . %> dans une classe (une servlet) La compile Linstantie

wLors des appels suivants, la servlet instantie est Lors instanti invoqu invoque d d premi => dlai dattente lors de la premire invocation
Les JSP Java 13

Servlet gnre
public class FactoriellesJSP$jsp extends HttpJspBase { ... public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { ... // HTML // begin [file="/FactoriellesJSP.jsp";from=(0,0);to=(7,4)] out.write("<html>\r\n <head>\r\n <title>FactoriellesJSP</title>\r\n </head>\r\n <body>\r\n <h1>Table des factorielles</h1>\r\n"); // end // begin [file="/FactoriellesJSP.jsp";from=(7,6);to=(14,4)] int fact = 1; for(int i=1;i<=7;i++) { fact = fact * i; out.println(i + "! = " + fact + "<br>"); } // end ... } ... } Les JSP Java 14

Balises JSP dans les pages HTML


Trois types : wDes lments de script : du code Java Des
Scriptlets : Dclarations : Expressions :

java <% code java %> clarations <%! dclarations %> expressions <%= expressions %>

wDes directives : contrle de la structure Des wDes actions : importation de composants existants Des

Les JSP Java

15

lments de script : scriptlets


<% %>
<% int fact = 1; for(int i=1;i<=7;i++) { fact = fact * i; out.println(i + "! = " + fact + "<br>"); } %>

Bloc de code Java wPlac dans la mthode _jspService() de la servlet Plac m _jspService() Plac gnre wLe bloc a accs : acc Le
Aux variables et beans dclars (cf. plus loin) dclar Aux objets implicites (cf. plus loin)
Les JSP Java

16

lments de script : dclarations


<%! %>
<%! private int quelqueChose = 12; private String autreChose = "autre chose"; ... private java.util.Date getDate() { return new java.util.Date(); } ... %>

Dclarations de mthodes et de variables qui peuvent tre utilises dans toute la page JSP

Les JSP Java

17

lments de script : expressions


<%= %>
<% private int quelqueChose = 12; private String autreChose = "autre chose"; ... private java.util.Date getDate() { return new java.util.Date(); } ... %> ... <p>Le quelque chose vaut : <%= quelqueChose %></p> <p>Nous sommes le <%= getDate() %></p>

Intgration de valeurs dans le code HTML w Valeurs values, converties en String et affiches valu affich w Accs aux objets implicites (cf. plus loin) Acc

Les JSP Java

18

Les directives
La directive <%@ page ... %> donne des informations sur la JSP (non obligatoire, valeurs par defaut) w <%@ page import="..."%> (ex. <%@ page import="java.io.*"%>)
n les "import" ncessaires au code Java de la JSP

w <%@ page errorPage="..."%> errorPage="..."%> errorPage="err.jsp"%>) (ex. <%@ page errorPage="err.jsp"%>)

fournit l'URL de la JSP a charger en cas d'erreur

w <%@ page contentType="..."%> contentType="..."%> contentType="text/html"%>) ="text (ex. <%@ page contentType="text/html"%>)

le type MIME du contenu retourne par la JSP excut true la JSP peut tre excute par plusieurs clients a la fois (valeur d par dfaut) invoqu true la JSP est une page invoque en cas d'erreur
Les JSP Java 19

w <%@ page isThreadSafe="..." %> true ou false isThreadSafe="..." w <%@ page isErrorPage="..." %> true ou false isErrorPage="..."

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 ...

<jsp:include page="relative URL" flush="true" />


o o Inclusion au moment o la page est servie, pas au moment o elle est traduite en servlet.

<jsp:usebean id="name" class="package.class" />


Permet d'instancier un bean depuis une page JSP. conna m Ncessite de connatre le mcanisme des beans... Associ jsp:getProperty.../> jsp:setProperty.../> Associ <jsp:getProperty.../> et <jsp:setProperty.../>

<jsp:forward page="/uneAutreURL" />


Redirige vers une autre URL

Les JSP Java

20

Les objets implicites


Objets pr-dclars utilisable dans le code Java des JSP : wout out wrequest request wresponse response wpage page wexception exception wsession session wapplication application g flux de sortie pour gnrer le code HTML dclench requte qui a dclench la JSP rponse la requte instance de servlet associe la JSP associ g d exception gnre en cas derreur suivi de session pour un mme client donn partag espace de donnes partag entre toutes les JSP
Les JSP Java 21

Rcupration des donnes dun formulaire


Mthode String getParameter(String) de l'objet prdfini request wretourne le texte saisi retourne wou null si le nom de ou param paramtre n'existe pas
<html> <head> <title>NomPrnom</title> </head> <body> <form action="NomPrenomJSP.jsp"> Nom : <input type="text" name="nom"><br> Prnom : <input type="text" name="prenom"><br> <input type="submit" value="envoi"> </form> </body> </html> Les JSP Java 22

Rcupration des donnes dun formulaire

<html> <head> <title>NomPrnom : rsultat</title> </head> <body> <h1>Rsultat</h1> Bonjour, <%= request.getParameter("prenom") %> <%= request.getParameter("nom") %>. </body> </html>

Les JSP Java

23

Gestion des erreurs


Erreur de syntaxe w Dans les directives JSP (ex. : oubli d'une directive %>) w Dans le code Java Erreur d'excution du code Java (ex. : NullPointerException) w Dans tous les cas, lerreur est rcupre dans le navigateur client l rcup Deux possibilits w Conserver la page par dfaut fournie par le moteur dexcution d dex des JSP (Tomcat,) w En concevoir une adapte aux besoins particuliers de l'application adapt
utilisation des directives
<%@ page errorPage="..." %> et errorPage="..." <%@ page isErrorPage="..." %> isErrorPage="..."

Les JSP Java

24

Gestion des erreurs


Page derreur par dfaut
<html> <head> <title>Hasard..</title> </head> <body> <h1>Hasard : problme si le 0 sort...</h1> <% int hasard = (int)(Math.random() * 5); %> <h1>Nombre tir : <%= 12/hasard %> </body> </html>

Les JSP Java

25

Gestion des erreurs


Page derreur redfinie
<%@ page errorPage="ErrHasardJSP.jsp" %> <html> <head> <title>Hasard..</title> </head> <body> <h1>Hasard : problme si le 0 sort...</h1> <% int hasard = (int)(Math.random() * 5); %> <h1>Nombre tir : <%= 12/hasard %> </body> </html>

<html> <head> <title>Erreur hasard..</title> </head> <body> <%@ page isErrorPage="true" %> <h1>Pas de chance... le 0 est sorti !!!</h1> Erreur : <%= exception.getMessage() %> </body> </html>

Les JSP Java

26

JSP et utilisation de bean


calculette.html Saisie des paramtres FactorielleJSP.jsp Rcupration des paramtres FactorielleJSPBean calculs

affichage

But : avoir le moins de code Java possible dans une page JSP (HTML) w Sous-traiter le code un Java bean Sousw Balise XML : <jsp:useBean> jsp:useBean> Syntaxe gnrale : w <jsp:useBean

"nomInstanceJavaBean nomInstanceJavaBean" id = "nomInstanceJavaBean" "nomClasseDuBean nomClasseDuBean" class = "nomClasseDuBean" scope="request request|session|application|page"/> scope="request|session|application|page"/> w Le bean est alors utilisable par nomInstanceJavaBean
Les JSP Java 27

S-ar putea să vă placă și