Marc Le BihanStruts 1.x1 Marc Le Bihan. Struts 1.x2 Plan I)Développement web par Servlets et JSP. II)Prise en charge de Struts. III)Principe de fonctionnement.

Slides:



Advertisements
Présentations similaires
- Formation STRUTS 1 1.
Advertisements

La programmation orientée objet avec Java L3-MIAGE Plan
Serveur d’applications JEE
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
Le struts validator – framework de validation
Le mécanisme des exceptions
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
Programmation Web Les JSP.
(Classes prédéfinies – API Java)
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
C.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance

Design Pattern MVC En PHP5.
Environnement Premier projet.
JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Servlet JAVA.
JSP 2 Crash Course Michel Buffa UNSA
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Forum JEE: framework STRUTS 1 et iBATIS
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Développement Rapide dApplications Web avec.NET « Mon premier site »
Projet JAVA EE Approfondi
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Le formulaire Les chaînes de requêtes. Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
JSTL JSP Standard Tag Library
Servlets.
JSP (Java Server Pages)
Servlets. 2 H. Fauconnier M2-Internet Contenu dynamique Perl/cgi indépendant de la plateforme Extensions du serveur exemple ASP M2-Internet 3 H. Fauconnier.
COURS DE PROGRAMMATION ORIENTEE OBJET :
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Michel Coletta - Journées PATTERNS Avril Grenoble1 STRUTS Introduction Technologies Java Architecture Développement Enseigner quoi ?
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Initiation au web dynamique - TP
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Utilisation avancée.
Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle
JavaScript Nécessaire Web.
© 1 Taglibs Applications Struts Taglibs. © 2 Applications Struts Les Tags Libraries Struts Bean : Accès aux JavaBean, aux ressources Html : Gestion des.
Chapitre 2 Développement Web avec les technologies JSP/Servlets
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
 Formulaires HTML : traiter les entrées utilisateur
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III
Héritage Conception par Objet et programmation Java
Développer des applications WEB avec Struts
M2 – MIAGE/SID Servlet et session M2 – MIAGE/SID
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Les Java Server Pages Dans ce chapitre, nous allons :
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
MVC et applications Web
Transcription de la présentation:

Marc Le BihanStruts 1.x1 Marc Le Bihan

Struts 1.x2 Plan I)Développement web par Servlets et JSP. II)Prise en charge de Struts. III)Principe de fonctionnement du formulaire. IV)La soumission au contrôleur.

Marc Le BihanStruts 1.x3 Construction de pages web par servlets et JSP

Marc Le BihanStruts 1.x4 La solution la plus simple pour mettre en place un site web dynamique est de construire une servlet. public class MaServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String szNom = request.getParameter("nom"); PrintWriter out = response.getWriter(); out.printf(" Bonjour %s ", szNom); out.close(); } web simpliste: la servlet (1/3)

Marc Le BihanStruts 1.x5 Mais: -Elle mélange le code de présentation (HTML) à celui de contrôle et/ou d’action. -L’émission d’HTML est assez disgracieux out.println( "…" ); -La transition d’une servlet à une autre se fait par un objet RequestDispatcher assez lourd à manipuler. web simpliste: la servlet (2/3)

Marc Le BihanStruts 1.x6 -Les champs de saisie ne sont que ceux accessibles en HTML, et ils ne peuvent pas s’auto-contrôler. -La création d’une page complexe (avec panneaux d’entête, pied, corps, etc.) est laborieuse. -Le javascript est « rude » à intégrer. web simpliste: la servlet (3/3)

Marc Le BihanStruts 1.x7 Les JSP offrent un moyen de détacher la partie présentation de la partie validation/action. "> Bienvenue Ca ne va pas Web évolué: les JSP (1/2)

Marc Le BihanStruts 1.x8 Web évolué: les JSP (2/2) Mais: -Les transitions entre pages restent délicates. -Malgré la présence de tags (dont JSTL), les scriplets Java ( ) restent nombreux et embarrassants. -Mise en page. -Capacité de validation. Les champs restent de ce que l’HTML propose.

Marc Le BihanStruts 1.x9 Pour faciliter: -La validation de pages web. -Leur agencement. -La transmission de données et la navigation de page en page. Un framework, Struts, si l’on en respecte les règles, se propose de: -Nommer les pages par des étiquettes que l’on désignera pour les atteindre. -Transmettre les données entre pages d’une manière bien délimitée. -Proposer des aides à la validation et à la mise en page. Un framework proposé

Marc Le BihanStruts 1.x10 Les variables et leur portée (1/2) Dans une page jsp, six types de variables peuvent intervenir. La variable locale: La variable membre de servlet: <jsp:useBean id="maVariable" scope="…" class="p1.p2.MaClasse"> |type="p1.p2.MaClasse" La variable de portée page, scope page, => pageContext.getAttribute( " maVariable " ); La variable de portée requête, scope request, => request.getAttribute("maVariable");

Marc Le BihanStruts 1.x11 La variable de portée session, scope session => request.getSession().getAttribute("maVariable"); La variable de portée application, scope application => pageContext.getServletContext().getAttribute("maVariable"); Seules les variables définies par ou leurs instructions java équivalentes sont accessibles par et, ainsi que par la désignation ${maVariable} dans une page JSP. Les deux autres ne le sont que par Les variables et leur portée (2/2)

Marc Le BihanStruts 1.x12 Affiche sur la page HTML le contenu de: pageContext.getAttribute("maVariable").getDuree() request.getAttribute("maVariable").getDuree() request.getSession().getAttribute("maVariable").getDuree() pageContext.getServletContext().getAttribute("maVariable").getDuree() (Le premier getAttribute() qui lui aura retourné une valeur) S’emploie sur une page JSP ainsi: Débuté plus tôt. Débuté ${maVariable.duree} plus tôt

Marc Le BihanStruts 1.x13 Un fichier WEB-INF/web.xml basique. Authentification /authentification/login.jsp Authentification /Login Login Déclaration servlets et jsp: web.xml

Marc Le BihanStruts 1.x14 Prise en charge de Struts

Marc Le BihanStruts 1.x15 Déclaration de Struts (1/3): binaires Une distribution de Struts est placée dans WEB-INF/lib avec quelques compléments commons de Tomcat.

Marc Le BihanStruts 1.x16 Reprend les mots-clés HTML, en facilitant parfois leur écriture. Agir directement sur Struts et manipuler des messages. Tests et conditions. Mise en page. Déclaration de Struts (2/3): JSP

Marc Le BihanStruts 1.x17 action org.apache.struts.action.ActionServlet config /WEB-INF/ struts-config.xml 1 action *.do Déclaration de Struts (3/3): web.xml

Marc Le BihanStruts 1.x18 Toutes les données utiles d’une page jsp qui seront affichées, contrôlées ou transportées à une autre page sont rassemblées dans un formulaire. Il représente le contenu d’une page JSP. C’est un Bean: il a un constructeur public sans arguments, des getters et des setters. class MonForm extends ActionForm { private String m_szNom; private int m_nAge; public String getNom() {...} public int getAge() {...} public void setNom(String szNom) {...} public void setAge(int nAge) {...} } Principe de fonctionnement (1/4)

Marc Le BihanStruts 1.x19 Dans la page JSP, ce formulaire sera déclaré par: <jsp:useBean id="f" class="MonForm" scope="page|request|session|application"> pour que le code présent dans la page HTML puisse accéder à son contenu. Bonjour ${f.nom} Principe de fonctionnement (2/4)

Marc Le BihanStruts 1.x20 Dans struts-config.xml, ce formulaire est aussi déclaré. Cette relation permettra à Struts de provoquer le chargement des valeurs dans le formulaire à l'arrivée dans la page, (page|request|session|attribute).getAttribute("f").getXXX() dans les contrôles portés par la page JSP. Principe de fonctionnement (3/4)

Marc Le BihanStruts 1.x21 Principe de fonctionnement (4/4) ainsi, les champs seront alimentés à partir du formulaire f. contiendra la valeur de f.getNom() résolu en String Présentera l'entrée qui correspond à la valeur de f.getAge(), qui renvoie un int. Réciproquement, lors de la soumission d'une page JSP, les valeurs des contrôles seront replacées par f.setXXX() dans le formulaire, et lui replacé en page, requête, session ou application.

Marc Le BihanStruts 1.x22 Une première validation de contenu peut être réalisée en implémentant une méthode dans le formulaire. public ActionErrors validate(ActionMapping mappings, httpServletRequest req) { ActionErrors errors = new ActionErrors(); if (m_nAge == 1) errors.add("age", new ActionError("jouetInapproprie")); return(errors); } Première validation de contenu (1/3)

Marc Le BihanStruts 1.x23 La mention jouetInapproprie fait référence à une entrée dans un fichier de propriétés où se trouve le message que l'on veut afficher. Ce fichier est mentionné dans le struts-config.xml Et dans jouets.properties jouetInapproprie=Ce jouet ne convient pas pour cet âge. Première validation de contenu (2/3)

Marc Le BihanStruts 1.x24 Enfin, dans la page JSP on précise l'emplacement où l'on souhaite que le message d'erreur soit affiché par cette instruction: Les messages d'erreurs créés par new ActionError() peuvent prendre des arguments. jouetInapproprie=Ce jouet ne convient pas pour les {0}. errors.add(new ActionMessage("jouetInapproprie", "moins de dix ans")); S'il n'y a aucune erreur détectée, renvoyer une collection ActionsErrors() vide par la méthode validate, et alors le formulaire sera validé. Première validation de contenu (3/3)

Marc Le BihanStruts 1.x25 Le formulaire validé est soumis à un contrôleur. public MonAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { … } Ce contrôleur peut réaliser d'autres validations et décider de mener la navigation Internet à une nouvelle page (forward). Soumission au contrôleur (1/3)

Marc Le BihanStruts 1.x26 Soumission au contrôleur (2/3) Ce contrôleur a été déclaré à Struts toujours par le biais du fichier struts- config.xml Des destinations communes à tous peuvent aussi être déclarées dans ce fichier.

Marc Le BihanStruts 1.x27 Soumission au contrôleur (3/3) Dans la fonction de traitement du contrôleur on réalise donc d'autres validations, et l'on redirige le navigateur. public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { MonForm f = (MonForm)form; ActionsErrors errors = new ActionsErrors(); // Quelques contrôles supplémentaires if (f.getNom().length() <= 1) errors.add(new ActionError("nom", "nomTropCourt")); if (!errors.empty()) { saveErrors(request, errors); // Il faut mettre errors dans son contexte. return(null); // Signifie: nous resterons sur la page où nous sommes. } return(mapping.findForward("adresse")); // Nouvelle destination. }