La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

JSP : Java Server Page Jean-Jacques LE COZ. Plan Technologie Syntaxe Template Directives Déclarations Objets Implicites Expressions Scriptlets Actions.

Présentations similaires


Présentation au sujet: "JSP : Java Server Page Jean-Jacques LE COZ. Plan Technologie Syntaxe Template Directives Déclarations Objets Implicites Expressions Scriptlets Actions."— Transcription de la présentation:

1 JSP : Java Server Page Jean-Jacques LE COZ

2 Plan Technologie Syntaxe Template Directives Déclarations Objets Implicites Expressions Scriptlets Actions

3 Technologie

4 JSP technologie Création dynamique de contenus Côté serveur La technologie combine Java Servlet HTML XML JavaBeans

5 J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail JAF RMI-IIOP

6 Du point de vue HTML Extension de HTML Code Java embarqué. Le code Java génère du contenu dynamique. Le contenu est intégré dans du HTML/XML.

7 Du point de vue Java Une autre façon d'écrire des servlets Séparation du contenu de la présentation. L'environnement d'exécution compile le code de la page JSP dynamiquement.

8 Contenus statiques HTML HyperText Markup Language SVG Scalable Vector Graphics WML Wireless Markup Language XML Extensible Markup Language

9 Accéder aux pages statiques Navigateur Uniform Resource Locator (URL) Serveur Web index.html HTTP request HTTP response (contenu de index.html) 1 2 3

10 Contenus dynamiques Balises typiques JSP Directives, déclarations, expressions, scripts java <%@, <%!, <%=, <% Commentaires Balises XML JSP Gestion des JavaBean <jsp:useBean, <jsp:setProperty,...

11 Contenus dynamiques Balises JTL Standard (JSTL) Pseudo langage avec structures de contrôle <c:forEach, <c:when, <c:if,... Personnalisé (JCTL) Référence à des librairies <f:uneFonction,.... Langage EL (Expression Language) Accès aux attributs des objets (${ objet.attribut } )

12 Accéder aux pages dynamiques Navigateur nom : dupont valider Serveur Web index.html login.jsp exécution de login.jsp output.html HTTP response (contenu de output.html) HTTP request (''dupont'', login.jsp) 1 2 3 5 4 6

13 Langage EL et EL unifié

14 Langage EL Simplification des expressions JSP Permet Accès aux objets implicites Accès aux classes Java Facilite la gestion des collections Syntaxe ${ expressionEL } Mécanisme d'évaluation immédiat Quand la page est transformée en flux HTML Read-only

15 Langage EL version JSP2.0 Unified Expression Language Ajouté à la spécificationJavaServer Pages Standard Tag Library (JSTL) Pour rendre le langage EL compatible avec celui de JSF Pour permettre en plus du mode immédiat le mode diférré Read-Write

16 Unified Expression Language Possibilités Évaluation diférrée des expressions Durant le cycle de vie Supporte les expressions qui peuvent Modifier des valeurs Invoquer des méthodes Utilisation des balises JSTL pour les itérations avec les expressions diférrées

17 Évaluation diférrée (1) Exemple avec une expression JSF: Lors du chargement de la page Évaluation immédiate Lors de la soummission de la saisie Évaluation diférrée durant les phases JSF

18 Évaluation diférrée (2) Phases d 'évaluation de l'exemple apply request value La valeur saisie est récupérée de la requête process validation La valeur saisie est validée update model La valeur saisie met à jour le modèle, ici le nom de l'étudiant

19 Types d'expression (1) Expression de valeur Left expression Lecture-écriture Syntaxe : #{expression diférrée} Right expression Lecture Syntaxe : ${expression immédiate}

20 Types d'expression (2) Expression de méthode Permet d'invoquer une méthode Syntaxe : #{nomObjet.nomMéthode} Exemple avec JSF <prefix:inputText id="id" value="#{etudiant.id}" validator="#{student.validerId}"/> Le TLD qui définit la balise inputText spécifie la signature de la méthode La méthode validerId est invoquée durant la phase process validation du cycle de vie

21 Mécanisme extensible Concept de ELResolver Permet de déterminer si les expressions sont résolues par JSP ou JSF Classe générique ELResolver Un ensemble de ELResolver est fourni Mécanisme d'extension Il est possible d'écrire son propre Resolver Écrire le Resolver Enregistrer le Resolver auprès de l'application Utiliser les expressions

22 Une simple page JSP BonjourLeMonde.jsp Bonjour Le Monde JSP Exemple Bonjour Le Monde.

23 Une page JSP dynamique BonjourLeMondeBIS.jsp Bonjour Le Monde JSP Exemple Bonjour Le Monde. La date est :. Note : c'est la date du serveur qui s'affiche ici, pas celle du client.

24 Une autre syntaxe BonjourLeMondeTER.jsp Bonjour Le Monde JSP Exemple Bonjour Le Monde. La date est : new java.util.Date() La syntaxe XML est plus claire mais ne change rien au code produit lors de la compilation et rien au résultat.

25 Les pages JSP sont des servlets Techniquement une page JSP est compilée en une servlet : La page JSP est traduite en code source Java d'une servlet. Le code source de la servlet est ensuite compilée. Réalisé une seule fois lors de la première invocation.

26 JSP : cycle de vie navigateur JSP container JSP pages JSP page contenu statique HTTP request HTTP response (Tomcat) Traduite en une servlet et compilée servlet exécution de la servlet output

27 Déploiement Préférable de déployer sous une forme typique de fichier JAR. Fichiers WAR (Web App Repository). A partir de la version 2.2 des spécifications. Contiennent les règles de déploiement : Correspondance entre URIs (Uniform Resource Identifiers) et les ressources. Permet de déployer une application avec un seul fichier binaire sans les sources.

28 Rappels sur les archives WAR Étape 1: $>mkdir application_web $>mkdir application_web/src $>mkdir -p application_web/WEB-INF/classes Étape 2: $>mv *.html application_web/ Étape 3: $>mv web.xml application_web/WEB-INF/ Étape 4: $>mv *.java application_web/src/ $>mv *.jsp application_web/ Étape 5: $>mv *.class application_web/WEB-INF/classes/ Étape 6: $>cd application_web $>jar -cvfM applicationWeb.war

29 Interface JSP Interface JspPage Spécialise la classe Servlet. Contrat entre la page JSP et le serveur. Implémentation du protocole HttpJspPage. Méthode _jspService.

30 JSP syntaxe

31 Éléments (1) Contenu Template Tout ce qui, dans la page, n'est pas du JSP. Directives Les instructions pour préciser comment construire la page.

32 Éléments (2) Éléments de script Déclarations, expressions et scriptlets. Actions Fonctionnalités offertes à partir de balises spéciales XML. Le code de ces fonctionnalités est masqué.

33 Résumé

34 Template

35 Contenu « Template » Template content Tout ce qui n'est pas du JSP Template text HTML Non transformé Passé tel quel au flux de sortie

36 Exemple de template Bonjour Le Monde Bonjour Le Monde. La date est.

37 Commentaires Trois façons d'introduire un commentaire Commentaire HTML Commentaire JSP Commentaire dans un script

38 Commentaire HTML --> Bonjour Le Monde Exemple Bonjour Le Monde.

39 Commentaire JSP Bonjour Le MondeExemple Bonjour Le Monde.

40 Commentaire de script /* date est une nouvelle variable, initialisée lors de son instantiation. Elle peut aussi être utilisée de la façon suivante : out.println(''instanciée à ''+ date); // affiche la date après le texte */ Date date = new Date(); Bonjour Le Monde Exemple Bonjour Le Monde. Cette page a été chargée en mémoire à. La date est

41 Règles de protection

42 Exemple de page JSP Bonjour Le Monde Escape Sequences Bonjour Le Monde. La date est. Le temps est calculé par l'expression JSP <%=new Date()%>. Les protections JSP ne fonctionnent pas dans le code HTML. Pourquoi ? Parce que HTML possède ses propres règles. La règle HTML la plus importante est que '<' est codé ainsi "&lt;", '>' est codé comme cela "&gt;", et '&' est codé ainsi "&amp;".

43 Règles de protection HTML Liste officielle des caractères d'échappement HTML : http://www.w3.org/TR/html401/sgml/entities.html

44 Directives

45 Directives JSP Informations suplémentaires pour le serveur : Imports de paquetage, Include de fichiers, Accès aux librairies de « custom tag » Syntaxe

46 Résumé des directives

47 Exemple de directive : page ou Exemple : Bonjour Le Monde JSP Exemple Bonjour Le Monde. La date est.

48 Attributs de la directive : page

49 Directive : include Introduit le contenu d'un fichier dans la page JSP. Lors de la translation ou compilation. Comme un #include en c/c++. Différent de l'action include. Opère au moment de la requête. Syntaxe

50 Exemple de directive : include Bonjour Le Monde Bonjour Le Monde.

51 Exemple de construction

52 Équivalences entre écritures Il n'y a pas toujours égalité entre écritures Exemple La directive include Mécanisme de mise en cache de la ressource Statique Attribut flush obligatoire en jsp1.1 pas en jsp1.2 Dynamique

53 Directive : taglib Possibilité de créer ses propres balises XML et de les utiliser dans une page JSP. Chaque taglib fait référence à une librairie c'est à dire à une implémentation Java. Permet de découpler la présentation de la logique applicative contenue dans les taglib.

54 Exemple d'utilisation de taglib Bonjour Le Monde Bonjour Le Monde. La date est.

55 Mécanisme des taglib JSPweb.xmltags.tld Tag Handler (classe java)...

56 Déclarations

57 Déclaration JSP Permet de déclarer des données et des fonctions. Utilisées dans la page JSP. Syntaxe déclarations java

58 Exemple de déclaration jsp:directive.page import="java.util.Date"/> private static String loadTime = new Date().toString(); private static String getLoadTime() { return loadTime; } private static String getCurrentTime() { return new Date().toString(); } Bonjour Le Monde Bonjour Le Monde. Cette page a été chargée en mémoire à. La date est

59 Deux déclarations particulières Méthodes optionnelles Méthode: public void jspInit() Méthode: public void jspDestroy() Méthode jspInit() Appelée une seule fois lors du chargement de la page JSP. Méthode jspDestroy() Appelée une seule fois lors du déchargement.

60 Exemple avec jspInit() et jspDestroy() private static DateFormat formateur; private static String loadTime; private static String getLoadTime() { return loadTime; } private static String getCurrentTime() { return toGMTString(new Date()); } private static String toGMTString(Date date) { return formateur.format(date); } public void jspInit() { formateur = new SimpleDateFormat("d MMM yyyy HH:mm:ss 'GMT'", Locale.US); formateur.setTimeZone(TimeZone.getTimeZone("GMT")); loadTime = toGMTString(new Date()); } public void jspDestroy() { formateur = null; } Bonjour Le Monde Bonjour Le Monde. Cette page a été chargée en mémoire à. La date est

61 Objets implicites

62 Il y a un certain nombre d'objets prédéfinis par l'architecture JSP. Ils permettent l'accès à l'environnement d'exécution. Ils font partie de l'API servlet Les expressions et scriplets y ont accès.

63 Tableau des objets implicites

64 Les objets implicites (1) L'objet « out » JspWriter émule java.io.PrintWriter. JspWriter supporte java.io.BufferedWriter. Exception par java.io.IOException. L'objet « request » Permet de récupérer des détails sur la requête et le client. Méthode request.getParameter().

65 Les objets implicites (2) L'objet «response» Permet l'accès au flux de sortie. Il permet de positionner les entêtes (header) Cookies, content type, cache control, refresh, redirection,... L'objet «session» Permet de gérer une session avec le client.

66 Les objets implicites (3) L'objet «pageContext» Permet l'accès à l'environnement JSP et aux beans. Permet de déterminer l'acquisition de l'objet out. Fournit l'interface pour “include” et “forward”. L'objet «config» Permet l'accès au ServletContext.

67 Les objets implicites (4) L'objet «page» Représente la page courante exécutant la requête. Les méthodes de l'interface sont : void jspInit();// allows user action when initialized void jspDestroy();// allows user action when destroyed public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; Note : la méthode _jspService() est générée alors que les deux autres méthodes peuvent être déclarées.

68 Les objets implicites (5) L'objet « application » Instance de ServletContext. Permet d'obtenir le RequestDispatcher. L'objet «exception» Présent uniquement dans une page d'erreur.

69 Expressions

70 Les expressions Sont des instructions java dont le résultat est une valeur. Évaluées lors de l'exécution. Converties en String. Écrites dans le flux de sortie (HTML, XML). Syntaxe instruction java

71 Scriptlets

72 Les scriptlets Sont des instructions java. Implémentation de la logique applicative Contrôles algorithmiques Alternatives, itérations. Syntaxe instruction java

73 Exemple de page JSP avec scriptlets String userAgent = (String) request.getHeader("user-agent"); JSP Scriptlet Exemple if (userAgent.indexOf("MSIE") != -1) { Vous utilisez Internet Microsoft Explorer. } else { Vous n'utilisez pas Internet Microsoft Explorer. Vous utilisez }

74 Défaut des scriptlets Couplage fort entre le code java et le code HTML. Non respect du patron MVC Séparation de la logique applicative de la logique de présentation. Remplacer les « scriptlets » par des « custom tag ». Car beaucoup de concepteurs graphique web ne sont pas des programmeurs.

75 Actions

76 Les actions Plus haut niveau de fonctionnalité que : Déclarations, expressions et scriptlets. Indépendantes de tout langage script. Syntaxe Que la syntaxe XML : <jsp:

77 Catégories d'action Trois catégories d'actions standards Pour utiliser les composants JavaBean. Pour contrôler le forwarding/including. Pour préparer HTML pour les plug-in java. Extensible par les « taglib »

78 Page JSP et JavaBeans Intégration des JavaBeans et de HTML.

79 JavaBean Une classe java Peut implémenter Serializable. Encapsule un état. Propose une interface avec : Des méthodes d'accès get et set. Méthodes Type getDonnéeMembre(). Méthodes void setDonnéeMembre().

80 <jsp:useBean Si le bean n'est pas trouvé alors il est instancié. L'attribut scope indique la portée du bean. Portées : page, request, session, application. Syntaxe corps

81 Portée du bean

82 Spécifications Spécification: class='' '' Classe du bean. Spécification: class='' '' et type='' '' Type et classe du bean. Spécification: type='''' et beanName='' '' Le type à utiliser dans la page. Nom d'un bean existant. Spécification: type='''' Le type à utiliser dans la page.

83 <jsp:setProperty Valorise les données membres du bean. Syntaxe Exemple :...

84 Expressions de setProperty (1) Expression : property=''*'' Tous les membres données du bean sont valorisés par les ''request parameter''. Expression : property=''nom'' Valorise uniquement le membre donnée.

85 Expressions de setProperty (2) Expression : property=''nom'' param=''nom'' Valorise le membre donnée par la valeur issue du paramètre. Expression : property=''nom'' value=''valeur'' Valorise le membre donnée par la valeur. La valeur peut être une expression JSP.

86 <jsp:getProperty Récupération des valeurs des données membres du bean. Syntaxe <jsp:getProperty name=''nom'' property=''nom'' La valeur est convertie en String. Même comportement que pour une expression. (

87 Exemple de JSP avec bean (1) // Classe locale de bean static public class BeanLocal { private String valeur; public String getValeur() { return valeur;} public void setValeur(String s) { valeur = s; } }

88 Exemple de JSP avec bean (2) Bonjour Le Monde Hello Entrer un nom: <INPUT TYPE="text" SIZE="32" NAME="valeur" VALUE=" ">

89 Les autres actions Action jsp:include Insertion de la ressource dans le contenu de la page en include. Action jsp:forward Insertion de la ressource dans le contenu de la page en forward. Action jsp:param Passage d'un paramètre à la ressource.

90 <jsp:include Insertion d'une autre ressource dans le flux de sortie. Statique : HTML Dynamique : page JSP, servlet, script CGI Syntaxe L'option flush est optionnelle

91 <jsp:forward Transfert de la request vers une autre ressource. Le contenu de la ressource appelée se substitue à celui de l'appelant. Syntaxe

92 <jsp:param Fournit des paramètres à la ressource qui est incluse (include) ou appelée (forward). Syntaxe

93 Exemple de page JSP head.jsp <%=(request.getParameter("html-title") != null) ? request.getParameter("html-title") : "UNTITLED"%>

94 <jsp:plugin Permet la mise à jour de la JVM supportée par le navigateur du client. Syntaxe

95 Langage EL

96 Bibliographie Livres Professional JSP Éditeur : Wrox Press - Auteur : Wrox Author Team JSP Professionnel Éditeur : Eyrolles - Auteurs : K. Avedal, D. Ayers Java Servlet and JSP Cookbook Éditeur : O'Reilly – Auteur Bruce W. Perry Sites Web http://java.sun.com/products/jsp http://jakarta.apache.org


Télécharger ppt "JSP : Java Server Page Jean-Jacques LE COZ. Plan Technologie Syntaxe Template Directives Déclarations Objets Implicites Expressions Scriptlets Actions."

Présentations similaires


Annonces Google