JSP Java S4
JSP Java S4
JSP Java S4
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
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
w Couche application
SGBD CLIENT
requtes
SERVEUR D'APPLICATIONS
donnes
Moniteurs transactionnels
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
rseau
SERVEUR WEB
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
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
Fichier WAR : Java Web ARchive wArchive JAR avec une structure dfinie dans la d Archive sp spcification servlets/JSP
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)
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
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
java <% code java %> clarations <%! dclarations %> expressions <%= expressions %>
wDes directives : contrle de la structure Des wDes actions : importation de composants existants Des
15
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
Dclarations de mthodes et de variables qui peuvent tre utilises dans toute la page JSP
17
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
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 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 ...
20
<html> <head> <title>NomPrnom : rsultat</title> </head> <body> <h1>Rsultat</h1> Bonjour, <%= request.getParameter("prenom") %> <%= request.getParameter("nom") %>. </body> </html>
23
24
25
<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>
26
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