out correspond au writer sur le flux de sortie en écriture Début du code Fin du code Le fichier hello.jsp">

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

Programmation Web Les JSP. HTTP HelloWorld HelloWorld avec une servlet HTTP import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public.

Présentations similaires


Présentation au sujet: "Programmation Web Les JSP. HTTP HelloWorld HelloWorld avec une servlet HTTP import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public."— Transcription de la présentation:

1 Programmation Web Les JSP

2 HTTP HelloWorld HelloWorld avec une servlet HTTP import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloHttpServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); PrintWriter out = response.getWriter(); out.println("HTTP Hello World!"); } public String getServletInfo() { return "HTTP Hello World Servlet"; } Lobjet réponse permet dobtenir le flux de sortie en écriture

3 HelloWorld JSP Entrelacer le code HTML et le code Java <% out.println("Hello World"); %> out correspond au writer sur le flux de sortie en écriture Début du code Fin du code Le fichier hello.jsp

4 Fichier de configuration Le fichier web.xml correspondant Appli de Demo Ceci est une série de servlets de démo Rien, lassociation *.jsp définir une JSP est automatique

5 Traduction des JSP Une JSP est traduite en Servlet lors du premier appel à la JSP Page JSPServlet.javaServlet.class jasperjavac Hérite de javax.servlet.jsp.HttpJspPage et implémente la méthode _jspService().

6 Traduction de HelloWorld public class hello_jsp extends HttpJspBase { public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { … try { _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html;charset=ISO "); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); out.write(" \r\n "); out.println("Hello World"); out.write("\r\n "); out.write(" "); } catch (Throwable t) { pageContext.handlePageException(t); } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); } } }

7 Hello World JSP (2) Répertoires sur le serveur Les fichiers JSP sont au même endroit que les fichiers HTML

8 Éléments des pages JSP Tag de Directive Tag de Commentaire Tag de Déclaration Tag de Scriptlet Tag dExpression

9 Directives JSP ou Elles permettent de changer la façon de traduire les pages JSP Ils existent différents types : directive de page (sur la JSP) directive dinclude directive de taglib Version XML

10 Directive de page page language=scriptingLanguage extends=className import=importList session=true|false buffer=none|sizekb autoFlush=true|false isThreadSafe=true|false info=info_text errorPage=error_url isErrorPage=true|false contentType=ctinfo pageEncoding=peinfo isELIgnored=true|false> par ex: Java La JSP étend la classe Liste de import Java Utilise une session taille du buffer réponse Flush la réponseNest pas synchronizé Redirige les erreurs Est appelé en cas derreur Langage de script (JSP 2.0) Directive de page

11 Commentaire Les balises spécifie des commentaires non traduits <% out.println("Hello World"); %>

12 JSP Déclaration ou Permet de déclarer : Des variables dinstance de JSP ( dinstance de servlet) Des méthodes

13 JSP Scriplet ou Permet dinclure du code dans la JSP <% for(int i=0;i<5;i++) { %> Hello World <% } %>

14 JSP Expression ou Permet laffichage de valeur dune expression Headers <% for (Enumeration e= request.getHeaderNames(); e.hasMoreElements();) { String name= (String) e.nextElement(); %> <% } %>

15 Affichage des Headers Afficher les headers de la requête Headers <% for (Enumeration e= request.getHeaderNames(); e.hasMoreElements();) { String name= (String) e.nextElement(); %> <% } %>

16 Cycle de vie dune JSP Le cycle de vie d'une JSP : 1.la méthode jspInit() est appelée après le chargement ; 2.une méthode _jspService() est appelée à chaque requête dans une nouvelle thread. 3.la méthode jspDestroy() est appelée pour le déchargement.

17 Un compteur de visite Cycle de vie et directive dun compteur de page page import="java.util.prefs.*" contentType="text/html" isThreadSafe="false"%> <%! private Preferences pref; public void jspInit() { pref=Preferences.userNodeForPackage(getClass()); } public void jspDestroy() { try { pref.sync(); } catch(BackingStoreException e) { getServletContext().log("can't save prefs",e); } pref=null; } %> pas obligatoire car les préférences sont synchronizés <% int counter=pref.getInt("counter", 0); %> Page accédée : <% pref.putInt("counter", counter); %> Directive de page Expression Scriptlet

18 Include & Forward mêmes restrictions que pour les servlets Forward : Include :

19 Deux types dagrégations effectuer lors de la traduction, relatif au fichier, le contenu est traduit. effectuer lors de lexécution de la requête, relatif à la page courante.

20 Include & Forward (2) permet dajouter des paramètres à un include ou un forward

21 JSP et Objet Le tag jsp:useBean permet de déclarer (et dallouer) des objet java dans les JSP Le tag jsp:getProperty permet dobtenir la valeur dune propriété suivant la norme java beans Le tag jsp:setProperty permet de changer la valeur dune propriété dun objet

22 JSP et Objet (2) Utilisation dun objet dans une JSP

Nom : package fr.umlv.jsp.demo; public class MyBean { public String getName() { return name; } public void setName(String name) { this.name= name; } private String name; } Récupère le paramètre username

23 JSP et Objet (3) Le paramètre est stocké dans lobjet paramètre username Formulaire méthode GET

24 Bean et scope Page : objet visible pour un page JSP Request : objet visible pour une page et passe les include et forward Session : objet ayant la durée de vie de la session Application : objet ayant la durée de vie le la web-app

25 Scope Exemple Déclaration et récupération des valeurs Before After

26 Scope Exemple (2) Déclaration et modification de variables myBean1 : myBean2 : myBean3 : myBean4 :

27 Scope Exemple (3) Valeurs des variables suivants le scope page ne passe pas les include Session/application reste après reload Reload

28 Objet implicitement déclaré request (request)requête courante response (page)réponse courante pageContext (page) session (session)session courante application (application) out (page)écrivain sur la réponse config (page)config de la JSP page (page) équivalent à this. exception (page)exception dans les pages derreurs

29 La classe PageContext Permet de manipuler une variable quelque soit le scope : Object getAttribute(String name,int scope) void setAttribute(String name, Object o, int scope) void removeAttribute(String name,int scope) Scopes possibles : PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, APPLICATION_SCOPE Recherche dans les scopes : Object getAttribute(String name) void setAttribute(String name, Object o) void removeAttribute(String name)

30 Initialiser une JSP

31 Récupération des erreurs Plusieurs types derreurs : - erreurs de traduction(pas récupérable) - erreurs dexécution (récupérable) Une page déclare posséder une page derreur Déclaration être une page derreur

32 Récupération des erreurs (2) page isErrorPage="true" import="java.io.*" contentType="text/plain" %> <% exception.printStackTrace( new PrintWriter(out)); %> <% // oops Object o=null; o.toString(); %> est une page derreur Redirige les erreurs vers la page error.jsp

33 Traduction Helloworld (2) public class hello_jsp extends HttpJspBase { public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { … try { _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html;charset=ISO "); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); out.write(" \r\n "); out.println("Hello World"); out.write("\r\n "); out.write(" "); } catch (Throwable t) { pageContext.handlePageException(t); } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); } } }

34 Interaction JSP/Servlet Application web gérant un panier dachat

35 Interaction JSP/Servlet (2) Architecture de lapplication BasketActionServlet /add /remove basket-product.jspbasket-list.jsp Basket HTTP POST Forward article="manteau" JSP Servlet HTTP POST article="voiture" session Article add/remove new getProductList

36 Interaction JSP/Servlet (3) Les classes Article et Basket public class Article { public Article(String name) { this.name=name; } public String getName() { return name; } public int getPrice() { int price=0; for(int i=0;i

37 Interaction JSP/Servlet (4) JSP : basket-product.jsp Ajouter un Article au Panier <% String[] products=Article.getProductList(); for (int i=0;i "> Visualiser le panier

38 Interaction JSP/Servlet (5) Contenu du Panier <% for (Iterator it=basket.iterator();it.hasNext();) { Article article= (Article) it.next(); %> "> <% total+=article.getPrice(); } %> Total Liste des produits JSP : basket-list.jsp

39 Interaction JSP/Servlet (6) La servlet BasketActionServlet public class BasketActionServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session=request.getSession(); Basket basket=(Basket)session.getAttribute("basket"); if (basket==null) { basket=new Basket(); session.setAttribute("basket",basket); } Article article=new Article(request.getParameter("article")); String uri=request.getRequestURI(); if (uri.endsWith("add")) basket.add(article); else basket.remove(article); getServletContext().getRequestDispatcher("/basket/basket-list.jsp"). forward(request,response); }


Télécharger ppt "Programmation Web Les JSP. HTTP HelloWorld HelloWorld avec une servlet HTTP import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public."

Présentations similaires


Annonces Google