Faqjavaee (1)

378 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
378
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Faqjavaee (1)

  1. 1. La FAQ Java EE Date de publication : 17 mai 2003 Dernière mise à jour : 22 décembre 2009Cette faq a été réalisée à partir des questions fréquemment posées sur lesforums de www.developpez.com et de lexpérience personnelle des auteurs.Nous tenons à souligner que cette faq ne garantit en aucun cas que lesinformations quelle propose sont correctes. Les auteurs font leur maximum,mais lerreur est humaine. Cette faq ne prétend pas non plus être complète.Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenantrédacteur, lisez ceci.Sur ce, nous vous souhaitons une bonne lecture.Léquipe Java
  2. 2. Ont contribué à cette FAQ : Léquipe Java - Stessy - adiGuba - bahamouth - christopheJ - lunatix - syj - Righetto Dominique - draken - SnorkyBZH - Didier - vedaer - duj - request -SEMPERE Benjamin - Jaxofun - willy78 - Sniper37 - X- plode : Mike François - paquerette - ceddup - BaptisteWicht - Jack Huser - fabszn - v1nc3kr0 - link256 - zag -
  3. 3. La FAQ Java EE1. Informations générales (5) ..................................................................................................................................... 42. Définitions (14) ....................................................................................................................................................... 63. Java EE (3) .......................................................................................................................................................... 12 3.1. Généralités (3) ............................................................................................................................................. 134. Servlets (23) ......................................................................................................................................................... 14 4.1. Généralités (20) ........................................................................................................................................... 15 4.2. Session (3) ...................................................................................................................................................305. JSP (28) ............................................................................................................................................................... 32 5.1. Généralités (8) ............................................................................................................................................. 33 5.2. JSTL (Java Standard Tag Library) (2) ......................................................................................................... 38 5.2.1. Librairie de base (1) ............................................................................................................................ 39 5.3. JSP Taglibs (18) .......................................................................................................................................... 40 5.3.1. Taglibs 1.1 (11) .................................................................................................................................... 41 5.3.2. Taglibs 1.2 (6) ......................................................................................................................................506. Frameworks Web (2) ............................................................................................................................................557. Conteneurs Web et Serveurs dApplication (8) ....................................................................................................56 7.1. Glassfish (0) .................................................................................................................................................57 7.2. JBoss (0) ......................................................................................................................................................58 7.3. Weblogic (0) .................................................................................................................................................59 7.4. JOnAS (0) .................................................................................................................................................... 60 7.5. Websphere (0) ............................................................................................................................................. 61 7.6. Conteneurs Web (8) .................................................................................................................................... 62 7.6.1. Tomcat (8) ............................................................................................................................................63 -3-Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  4. 4. La FAQ Java EE Sommaire > Informations générales Comment bien utiliser cette faq ?Auteurs : Léquipe Java , Le but : Cette faq a été conçue pour être la plus simple possible dutilisation. Elle tente dapporter des réponses simples et complètes aux questions auxquelles sont confrontés tous les débutants (et les autres). Lorganisation : Les questions sont organisées par thème, les thèmes pouvant eux-même contenir des sous-thèmes. Lorsquune question porte sur plusieurs thèmes, celle-ci est insérée dans chacun des thèmes rendant la recherche plus facile. Les réponses : Les réponses contiennent des explications et des codes sources. Certaines sont complétées de fichier à télécharger contenant un programme de démonstration. Ces programmes sont volontairement très simples afin quil soit aisé de localiser le code intéressant. Les réponses peuvent également être complétées de liens vers dautres réponses, vers la documentation en ligne de Sun ou vers un autre site en rapport. Nouveautés et mises à jour : Lors de lajout ou de la modification dune question/réponse, un indicateur est placé à coté du titre de la question. Cet indicateur reste visible pour une durée de 15 jours afin de vous permettre de voir rapidement les modifications apportées. Jespère que cette faq pourra répondre à vos questions. Nhésitez pas à nous faire part de tous commentaires/remarques/critiques.lien : Comment participer à cette faq? Comment participer à cette faq ?Auteurs : Léquipe Java , Cette faq est ouverte à toute collaboration. Pour éviter la multiplication des versions, il serait préférable que toutes collaborations soient transmises aux administrateurs de la faq. Plusieurs compétences sont actuellement recherchées pour améliorer cette faq : Rédacteur : Bien évidemment, toute nouvelle question/réponse est la bienvenue. Web designer : Toute personne capable de faire une meilleure mise en page, une feuille de style ou de belles images... Correcteur : Malgré nos efforts, des fautes dorthographe ou de grammaire peuvent subsister. Merci de contacter les administrateurs si vous en débusquez une... Idem pour les liens erronés.lien : Quels sont les droits de reproduction de cette faq ? Quels sont les droits de reproduction de cette FAQ ?Auteurs : Léquipe Java , Les codes sources présentés sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Pour le reste, ce document constitue une oeuvre intellectuelle protégée par les droits dauteurs. -4-Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  5. 5. La FAQ Java EE Copyright © 2009 Developpez LLC : Tous droits réservés Developpez LLC. Aucune reproduction ne peut en être faite sans lautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà 3 ans de prison et jusquà 300 000 E de dommages et intérêts. Cette page est déposée à la SACD. Où trouver dautres sources dinformation ?Auteurs : Léquipe Java , • Les cours et didacticiels Java Web • Les forums Java de Developpez.com • La FAQ Struts • La FAQ Général Java • La FAQ JDBC • La Javadoc : toutes les informations utiles sur les classes, leurs méthodes ... à toujours avoir sous la main. • Les didacticiels de Sun • La FAQ de JGuru, beaucoup plus complète que celle-ci ... RemerciementsAuteurs : Léquipe Java , Un grand merci à tous ceux qui ont pris de leur temps pour la réalisation de cette FAQ. Cest à dire : • Aux rédacteurs qui ont rédigé les questions de cette FAQ. • Aux correcteurs qui ont contribué à supprimmer un maximum de fautes de français sur cette FAQ. • Aux visiteurs qui ont visité cette page et qui, par leurs remarques, ont contribué à lamélioration de cette page. -5-Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  6. 6. La FAQ Java EE Sommaire > Définitions Quest ce que Java EE?Auteurs : Stessy , La plateforme Java entreprise (Java EE) est un ensemble de spécifications coordonnées et pratiques qui permettent ensemble des solutions pour le développement, le déploiement, et de la gestion des applications multitiers centralisées sur un serveur. Construit sur la plateforme de Java 2 édition standard (Java SE), la plateforme Java EE ajoute les possibilités nécessaires pour fournir une plateforme complète, stable, sécurisée, et rapide de Java au niveau entreprise. La plateforme entreprise fournit un ensemble de services permettant aux composants de dialoguer entre eux: • HTTP et HTTPS • Java Transaction API (JTA) • Remote Method Invocation/Internet Inter-ORB Protocol (RMI/IIOP) • Java Interface Definition Language (Java IDL) • Java DataBase Connectivity (JDBC) • Java Message Service (JMS) • Java Naming and Directory Interface (JNDI) • API JavaMail et JAF (JavaBeans Activation Framework) • Java API for XML Processing (JAXP) • Java EE Connector Architecture • Gestionnaires de ressources • Entreprise Java Beans (EJB) • Java Server Pages (JSP) • Servlet • Java API for XML Web Services (JAX-WS, anciennement JAX-RPC) • SOAP with Attachments API for Java (SAAJ) • Java API for XML Registries (JAXR) Si vous souhaitez en savoir plus sur Java EE, suivez ces liens: • Java EE Home • Java EE 5 Tutorial Que sont les EJBAuteurs : Stessy , Un composant Entreprise JavaBeans (EJB) est une classe ayant des champs et des méthodes pour mettre en application des modules de la logique métier (Business logic). Vous pouvez penser à un entreprise bean comme à un module pouvant être employé seul ou avec dautres entreprise bean pour exécuter la logique métier sur le serveur Java EE. Il existe actuellement trois types dentreprise bean : • les bean session (Session Bean) • les bean entité (Entity Bean) • les bean contrôlés par message (Message Driven Bean) Les entreprise bean interagissent le plus souvent avec des bases de données. Si vous souhaitez en savoir plus sur les EJB, suivez ces liens : -6-Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  7. 7. La FAQ Java EE • EJB Home • EJB (J2EE 1.4 tutorial) • EJB Spécifications Que sont les Servlet?Auteurs : Stessy , Techonologie Java utilisée pour effectuer des traitements coté serveur en réponse aux requêtes provenant en général de poste clients distants. Bien que les servlets puissent répondre à nimporte quel type de requête, elles sont généralement employées pour répondre à des requêtes de type HTTP et qui permettent de retourner dynamiquement des pages html. Si vous souhaitez en savoir plus sur les Servlets, suivez ces liens: • Servlets Home • Servlets (Java EE 5 Tutorial) • Servlets implémentations et spécifications Que sont les JSPAuteurs : Stessy , Les JavaServerPages (JSP) vous permet dinsérer des petits bouts de code Java (scriptlets) directement dans du code html. Une page JSP est un document qui contient deux types de texte: • des données statiques (qui peuvent être exprimées en nimporte quel format texte tel que le HTML, le WML, et le XML) • des éléments de JSP, qui déterminent comment la page construit le contenu dynamique. Pour plus dinformations sur les JSP, vous pouvez suivre ces liens : • JSP home • JSP (Java EE 5 Tutorial) • JSP Spécifications et implémentation Que sont les connecteurs JCA?Auteurs : willy78 , Les connecteurs JCA sont des modules qui se déploient sur les serveurs dapplication. Ils permettent de connecter un serveur JavaEE à un système propriétaire ("legacy system"), et de normaliser les accès et interactions avec ce systeme. Lapi JCA défini un contrat entre le serveur dapplication et le systeme, via des interfaces comme le fait jdbc. JCA est une généralisation de JDBC. JCA 1.0 permet denvoyer des messages vers le système propriétaire uniquement. -7-Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  8. 8. La FAQ Java EE JCA 1.5 permet, en plus, de recevoir des messages qui seront traités par un "Message Listener", généralement un Message Driven Bean Quest ce que JAXP?Auteurs : vedaer , JAXP (Java API for XML Processing) est lAPI "standard" (appartenant au JDK) pour la manipulation du format XML. Cette API met à la disposition du développeur trois ensembles de fonctionnalités : la modélisation, le parsing et la transformation. Elle est composée de quatre packages principaux. • javax.xml.parsers : Ce package contient un ensemble dinterfaces devant être implémentées par les différents parseurs (SAX ou DOM). Ce package fournit aussi un ensemble de factory permettant laccès aux parseurs. • org.w3c.dom : Ce package contient lensemble des classes et interfaces nécessaires pour travailler avec DOM (modélisation). • org.xml.sax : Ce package contient lensemble des classes et interfaces nécessaires pour travailler avec SAX (parsing). • javax.xml.transform : Ce package contient lensemble des classes et interfaces nécessaires pour travailler avec XSLT (transformation). Attention, JAXP nest pas limitée à SAX, DOM, XSLT et ces quatre packages. Elle offre bien plus de fonctionnalités. Pour savoir ce que sont exactement SAX, DOM, XSLT et en savoir plus sur lutilisation de JAXP, regardez la partie XML de la FAQ Java . Il est aussi important de noter que, même si au départ JAXP fut créée comme une API Java EE, elle est désormais intégrée au J2SDK standard. Pour plus dinformations sur XML, vous pouvez visiter la rubrique XML de developpez.com : http:// xml.developpez.com/ . Quest ce que JAX-RPC?Auteurs : vedaer , JAX-RPC (Java API for XML-based Remote Procedure Call) est une API permettant de créer des services et clients Web basés XML et RPC . RPC (Remote Procedure Calls), ou appels de procédures à distance, est un système permettant à des clients dexécuter des procédures sur des systèmes distants. Ces appels de procédures et les réponses retournées se font grâce au protocole HTTP et à SOAP (messages XML). Attention ! Aujourd?hui remplacé par JAX-WS. Quest ce que JAX-WS?Auteurs : X-plode : Mike François , JAX-WS (Java API for XML Web Services) est la nouvelle appellation de JAX-RPC. JAX-WS est une technologie pour des réaliser des services web et clients en utilisant le language XML. JAX-WS permet décrire en orienté message tout autant que des services web orienté RPC. Pourquoi ce changement de nom ? JAX-RPC ne convient plus à lensemble des concepts couverts. Cet acronyme donne limpression quil sagit uniquement de technologies synchrones, relatives à lappel de procédure à distance et non aux services web. -8-Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  9. 9. La FAQ Java EE De plus lintégration de JAXB 2.0, pose de nombreux problèmes de compatibilité avec JAX-RPC 1.1. Cest ainsi loccasion pour Sun de repenser, mettre à jour, améliorer et surtout rationaliser cette brique logicielle en utilisant les dernières nouveautés du langage lui-même, ainsi que les technologies développées en parallèle dans dautres groupes de travail. Pour plus dinformations sur JAX-WS ( anciennement JAX-RPC ), vous pouvez suivre ces liens : • Introduction de JAX-WS • JAX-WS (Java EE 5 Tutorial) • XML-RPC spécification Quest ce que JDBC?Auteurs : vedaer , JDBC est une API (Application Programming Interface) java disponible depuis la version 1.1 du JDK. Pour note, JDBC est un nom déposé et non un acronyme, même si en général on lui donne la définition suivante : Java DataBase Connectivity . Cette API est constituée dun ensemble dinterfaces et de classes qui permettent laccès, à partir de programmes java, à des données tabulaires (i.e. triées sous forme de table ou de tableur). Par données tabulaires, on entends généralement des bases de données contenues dans des SGBD relationnels . Mais, JDBC nest pas restreinte à ce type de source de données. On peux aussi accéder à des sources de données sous forme de fichiers (fichiers XML par exemple). Quest ce que JAAS?Auteurs : duj , Java Authentication and Authorisation Service. Il sagit dun package fournissant des services dauthentification (login) et dautorisation (verification de permissions pour lexecution de méthodes). JAAS fait partie de la distribution de base du SDK depuis la version 1.4 . http://java.sun.com/products/jaas/ JAAS est hautement configurable, et permet aux développeurs décrire leurs propres modules. Une libraire fournissant quelques implémentation, dont une permettant une interaction avec Windows NT et Windows 2000 pour lauthentification: http://free.tagish.net/jaas/index.jsp Quest ce que JAXB?Auteurs : vedaer , JAXB (Java Architecture for XML Binding) offre les outils et API nécessaires pour "lier" des objets java à des documents XML . JAXB utilise des schémas ( W3C XML Schema ) pour faire ce lien. Une fois ce lien créé (grâce à un compilateur qui va générer les packages correspondant à un schéma donné), vous pouvez facilement sérialiser/desérialiser les objet java sous un format XML. Pour plus dinformations sur JAXB, vous pouvez suivre ces liens : • JAXB home • JAXB (Java Web Services Tutorial) -9-Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  10. 10. La FAQ Java EE Pour le moment, JAXB permet juste de partir dun Schéma XML pour générer les classes correspondantes (interfaces à implémenter). JAXB 2.0 devrait palier à cette limitation en permettant de créer des schémas à partir de classes Java déjà définies. Pour plus dinformations, regardez la JSR 222 : http://www.jcp.org/ en/jsr/detail?id=222 Quest ce que SAAJ ?Auteurs : vedaer , SAAJ (SOAP with Attachments API for Java) est une API Java permettant lenvoi et la réception de messages XML sur le réseau. Ces messages obéissent à la spécification SOAP (Simple Object Access Protocol) 1.1. SAAJ est souvent utilisée par des API de plus haut niveau comme JAXR et JAX-RPC. Mais, elle peut tout à fait être utilisée de manière indépendante. Pour plus dinformations, vous pouvez suivre ces liens : • SAAJ home • SAAJ (Java EE 5 Tutorial) • SAAJ documentation Vous pouvez trouver la spécification de SOAP à cette adresse : http://www.w3.org/TR/soap/ . Quest ce que JAXR?Auteurs : vedaer , JAXR (Java API for XML Registries) est une API intégrée à Java EE qui permet laccès à différents types de registres XML . Ces registres XML sont une infrastucture permettant la construction, le déploiement et la découverte de Web services . JAXR permet linteraction avec plusieurs standards, dont UDDI (Universal Description, Discovery, and Integration) et ebXML Registry and Repository standard. Pour connaître les versions supportées de ces standards et les différentes implémentations fournisseur disponibles pour JAXR, suivez les liens ci- dessous. • Java API for XML Registries (JAXR) • JAXR (Chap. 10 du Java EE Tutorial) • XML Downloads & Specifications • Java Technology & Web Services Pour note, JAXR est intégré au JWSDP (Java Web Services Developer Pack), mais vous pouvez aussi le téléchager séparément (voir liens). Que sont les Frameworks Web ?Auteurs : X-plode : Mike François , Un framework Web permet de pouvoir abstraire les problèmes rencontrés au quotidien lors du developpement dune application Web. Tout autant, il permet de pouvoir avoir un design réutilisable pour un développement donné. Le résultat est un meilleur code, plus lisible et ainsi plus facilement maintenable. - 10 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  11. 11. La FAQ Java EE Les Frameworks Web peuvent se distinguent en deux types : • Orienté Requête • Orienté Composant - 11 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  12. 12. La FAQ Java EE Sommaire > Java EE - 12 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  13. 13. La FAQ Java EE Sommaire > Java EE > Généralités Comment faire pour ne pas afficher larborescence de lapplication lorque lutilisateur entre simplement le contexte de lapplication dans lURL?Auteurs : Stessy , Pour que lutilisateur ne puisse pas voir larborescence de lapplication lorquil indique uniquement le contexte de lapplication dans lURL, il suffit simplement dajouter un élément dans le fichier web.xml qui sil existe, sera utilisé par le conteneur comme page par défaut. <welcome-file-list> <welcome-file>welcome.jsp</welcome-file> </welcome-file-list> Quelles sont les différentes portées existantes ?Auteurs : Stessy , Les objets créés que ce soit dans les JSP ou les Servlets ont une certaine portée, cest à dire une certaine durée de vie. Les différentes portées existantes sont: • page : les objets ne sont accessibles que dans la page où ils sont définis • request : les objest sont accessibles pendant toute la durée de la requête • session : les objets sont accessibles pendant toute la durée de la session • application : les objest sont accessibles pendant toute la durée de vie de lapplication et dans lapplication complète Quelles sont les differences entre un serveur web et un serveur dapplication?Auteurs : adiGuba , Un serveur dapplication a pour objectif de facilité la création dapplication serveur sans se soucier de laspect réseau (toute la couche réseau est laissée au serveur dapplication). Un serveur web peut gérer plusieurs sites indépendemment, il peut utiliser plusieurs langages/technologies différents (ASP, PHP, JavaEE), gère les transactions sécurisés... La confusion vient du fait que la plupart du temps les applications JavaEE sont des applications Web, pour la simple raison que cela permet de ne pas distribuer dapplication cliente (un navigateur suffit). - 13 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  14. 14. La FAQ Java EE Sommaire > Servlets - 14 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  15. 15. La FAQ Java EE Sommaire > Servlets > Généralités Pourquoi ny a-t-il pas de constructeur dans une servlet?Auteurs : Stessy , Une servlet est un peu comme un applet par le fait quelle possède une méthode init() qui agit en tant que constructeur. Puisque lenvironnement de servlet prend soin dinstancier la servlet, un constructeur explicite nest pas nécessaire. Nimporte quel code dinitialisation que vous devez utiliser devrait être placé dans la méthode init() puisque cette méthode est appelée lorsque le servlet est chargée par le conteneur de servlet. Quelle est la différence entre les méthodes doGet() et doPost()?Auteurs : Stessy , doGet() est appelée à la suite dune requête de type HTTP GET . Cela se passe généralement lorsquun utilisateur clique sur un lien ou lorsque celui-ci entre une URL dans la barre dadresse du navigateur. La méthode doPost() est appelée en réponse dune requête HTTP POST . Les 2 méthodes sont appelées à partir de limplémentation par défaut de la méthode service() se trouvant dans la classe de base HttpServlet Fondamentalement le navigateur demande toujours des pages par lintermédiaire de GET et peut envoyer des données sous les 2 formes GET et POST . Les 2 seules différences résident dans le fait que : • GET est restreint au niveau de la taille des paramètres envoyés au serveur. Cela veut dire quil est, la plupart du temps, préférable denvoyer des données avec la méthode POST . • En envoyant des données par lintermédiaire de GET évoque également une question concernant la sécurité puisquelles sont ajoutées à la suite de lURL. Pour cette raison il est plus prudent dutiliser la méthode POST pour envoyer des données au serveur. Comment gérer les caractères spéciaux dans une servlet ?Auteurs : X-plode : Mike François , link256 , Les caractères spéciaux sont souvent une cause de problème lors de lutilisation des servlets. Même si nous déclarons (lUTF-8 par exemple) dans nos pages servlets et jsps, on peut voir apparaître les caractères spéciaux non gérer. Pour ce faire, il suffit de faire une vérification comme suit : String encoding = request.getCharacterEncoding(); if (encoding == null || !encoding.equals("UTF-8")) { try { request.setCharacterEncoding("UTF-8"); } catch (UnsupportedEncodingException e) { System.err.println("HttpMultipartRequest - : " + e); } } Une autre façon de faire est de configurer lencodage au niveau du fichier web.xml au moyen dun Filter : <filter> <filter-name>Character Encoding</filter-name> <filter-class>chemin.de.ton.package.CharsetFilter</filter-class> - 15 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  16. 16. La FAQ Java EE </filter> <filter-mapping> <filter-name>Character Encoding</filter-name> <servlet-name>action</servlet-name> </filter-mapping> Puis dimplémenter un filtre UTF-8 : /** * Filtre sur les requetes pour les encoder en UTF-8 **/ public class CharsetFilter implements Filter{ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); chain.doFilter(request,response); } @Override public void init(FilterConfig arg0) throws ServletException {} @Override public void destroy() {} } Comment connaitre la version de lAPI servlet utilisée par un moteur de servlet?Auteurs : Stessy , Linterface ServletContext inclut les méthodes getMajorVersion() et getMinorVersion() pour vous indiquer quelle version de lAPI Servlet est utilisée. Un petit exemple : //Si le moteur de servlet implémente la spec 2.4 de lAPI servlet //majorVersion est égal à 2 int majorVersion = getServletContext().getMajorVersion(); //minorVersion est égal à 4 int minorVersion = getServletContext().getMinorVersion(); Comment accéder à un JavaBean depuis une servlet?Auteurs : Stessy , Pour pouvoir partager des variables entre vos pages JSP et vos servlets, vous devez savoir comment créer et accéder à ces variables depuis vos servlets. Les différents exemples qui vont suivre dépendent de la portée, ou si vous préferez, la durée de vie de vos objets. Pour en savoir plus sur les différentes portées existantes, reportez vous à la section suivante : Quelles sont les différentes portées existantes? • page : Dans cet exemple, le Bean est instancié comme une variable locale est nest donc pas partageable entre différentes servlets. - 16 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  17. 17. La FAQ Java EE com.developpez.beans.MyBean myBean = new com.developpez.beans.MyBean(); • request : Dans cet exemple, le Bean instancié sera accessible pendant toute la durée de la requête com.developpez.beans.MyBean myBean = (com.developpez.beans.MyBean) request.getAttribute("myBean"); if (myBean == null) { myBean = new com.developpez.beans.MyBean(); request.setAttribute("myBean", myBean); } • session : Dans cet exemple, lorsque le Bean est instancié il est placé dans la session actuelle. HttpSession session = request.getSession(true); com.developpez.beans.MyBean myBean = (com.developpez.beans.MyBean) session.getAttribute("myBean"); if (myBean == null) { myBean = new com.developpez.beans.MyBean(); session.setAttribute("myBean", myBean); } • application : Dans ce dernier exemple, lorsque le Bean est instancié il est placé dans le contexte de la servlet. com.developpez.beans.MyBean myBean = (com.developpez.beans.MyBean) getServletContext().getAttribute("myBean"); if (myBean == null) { myBean = new com.developpez.beans.MyBean(); getServletContext().setAttribute("counter", counter); } Quel est lobjet ServletConfig et quelle est son utilitéAuteurs : Stessy , Lobjet ServletConfig est une interface. Cette interface contient les 4 méthodes suivantes • getInitParameter(java.lang.String name) : Cette méthode retourne un String contenant le paramètre dinitialisation de la servlet correspondant au paramètre name • getInitParameterNames() : Cette méthode retourne un objet Enumération contenant les paramètres dinitialisation de la servlet • getServletContext() : Cette méthode retourne une référence de linterface ServletContext Cest la méthode la plus valable car elle permet de partager linformation à travers lapplication - 17 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  18. 18. La FAQ Java EE • getServletName() : Cette méthode retourne un String contenant le nom de linstance de la servlet Comment modifier le Time Out par défaut de session?Auteurs : bahamouth , Dans le fichier web.xml situé dans le répertoire WEB-INF de lapplication, il suffit dajouter les lignes suivantes: <session-config> <session-timeout>60</session-timeout> </session-config> Comment modifier le Time Out par de session par programmation?Auteurs : Jaxofun , Il suffit daccèder à la session voulue et de la modifier comme ceci : request.getSession().setMaxInactiveInterval(int); Comment connaître le navigateur utilisé par un utilisateurAuteurs : Didier , Cette information peut être retrouvée dans le header de la requête: String browser = request.getHeader("user-agent"); Comment placer et récupérer un paramétre dinitialisation dune servlet?Auteurs : Righetto Dominique , Placer la définition <init-param> dans la description de votre servlet dans le fichier web.xml comme ceci <servlet> <servlet-name>maServlet</servlet-name> <display-name>Ma Servlet</display-name> <description>Ce que fait ma servlet</description> <servlet-class>com.servlet.MaServlet</servlet-class> <init-param> <param-name>MON_PARAM</param-name> <param-value>Bonjour</param-value> </init-param> </servlet> Puis dans le code de votre servlet, utilisez ceci pour récupérer la valeur de MON_PARAM getInitParameter("MON_PARAM"); - 18 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  19. 19. La FAQ Java EE Si vous désirez mettre plus de paramétres, il suffit dajouter des déclarations <init-param> comme ceci <servlet> <servlet-name>maServlet</servlet-name> <display-name>Ma Servlet</display-name> <description>Ma Servlet</description> <servlet-class>com.servlet.MaServlet</servlet-class> <init-param> <param-name>MON_PARAM</param-name> <param-value>Bonjour</param-value> </init-param> <init-param> <param-name>MON_PARAM_2</param-name> <param-value>Bonjour</param-value> </init-param> </servlet> Si vous désirez mettre des paramètres de manière globale afin de pouvoir les récupérer dans toutes les servlets, il suffit dajouter <context-param> comme ceci <webapp> ... <context-param> <param-name>Author</param-name> <param-value>X-plode</param-value> </context-param> </webapp> Puis dans le code de votre servlet, il faut récupérer le contexte de la servlet et appeler la méthode getInitParameter comme la manière précédente pour récupérer la valeur de Author getServletContext().getInitParameter("MON_PARAM"); Comment uploader un fichier depuis une applet vers une servlet?Auteurs : SnorkyBZH , Coté applet : URL urlservlet = new URL("http://localhost:8080/imed/ImageMapServlet"); HttpURLConnection connExtension = (HttpURLConnection)urlservlet.openConnection(); FileInputStream in = new FileInputStream(image); in.read(tableauImage); in.close(); HttpURLConnection connImage = (HttpURLConnection)urlservlet.openConnection(); connImage.setDoInput(true); connImage.setDoOutput(true); connImage.setUseCaches(false); connImage.setRequestProperty("Content-Type","application/octet-stream"); DataOutputStream out = new DataOutputStream(connImage.getOutputStream()); out.write(tableauImage, 0, tableauImage.length); out.flush(); out.close(); - 19 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  20. 20. La FAQ Java EE Coté servlet // Récupération du flux entrant java.io.DataInputStream dis = new java.io.DataInputStream(request.getInputStream()); dis.readFully(temp); dis.close(); // Ecriture du fichier image sur le serveur File cibleServeur = new File("/repertoire/nomfichier"); FileOutputStream fos = new FileOutputStream(cibleServeur); fos.write(temp); fos.close(); Comment télécharger un fichier depuis une servlet?Auteurs : Stessy , Voici un exemple de code permettant de télécharger un fichier depuis le serveur vers le poste client response.setContentType("application/download"); response.setHeader("Content-Disposition", "attachment;filename="" + filename + """); ServletOutputStream out = response.getOutputStream(); File file = null; BufferedInputStream from = null; try { //dans mon cas le filepath et le path complet après création // dun temp file file = new File(filepath); response.setContentLength((int) file.length()); int bufferSize = 64 * 1024; long time = System.currentTimeMillis(); try { from = new BufferedInputStream(new FileInputStream(file), bufferSize * 2); byte[] bufferFile = new byte[bufferSize]; for (int i = 0; ; i++) { int len = from.read(bufferFile); if (len < 0) break; out.write(bufferFile, 0, len); } out.flush(); } finally { try { from.close(); } catch (Exception e) { } try { out.close(); } catch (Exception e) {} } time = (System.currentTimeMillis() - time) / 1000; // seconds download double kb = (file.length() * 1.0 / 1024); if (file != null) file.delete(); } catch (Exception e) { return; } finally { try { file.delete(); } catch (Exception ex) {} - 20 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  21. 21. La FAQ Java EE } Comment faire pour gérer des actions à effectuer lors de la création ou suppression de session ?Auteurs : Righetto Dominique , En implémentant linterface HttpSessionListener comme ceci package com.dvp.faq.javaee; import javax.servlet.http.HttpSessionListener; import javax.servlet.http.HttpSessionEvent; public class MyHttpSessionListener implements HttpSessionListener { /** Cette méthode est appelée lors de la création de session */ public void sessionCreated(HttpSessionEvent hse){ System.out.println("Une session vient dêtre créée"); } /** Cette méthode est appelée lors de la destruction de session*/ public void sessionDestroyed(HttpSessionEvent hse) { System.out.println("Une session vient dêtre détruite"); } } Ensuite, il suffit de référencer le listener dans le fichier web.xml (sous la balise racine) <web-app> <listener> <listener-class> com.dvp.faq.javaee.MyHttpSessionListener </listener-class </listener> </web-app> Comment faire pour gérer des actions à effectuer lors du démarrage ou de larrêt de lapplication ?Auteurs : Righetto Dominique , En implémentant linterface ServletContextListener comme ceci package com.dvp.faq.javaee; import javax.servlet.ServletContextListener; import javax.servlet.ServletContextEvent; public class MyHttpServletContextListener implements ServletContextListener { /** Cette méthode appelée lors du démarrage de lapplication*/ public void contextInitialized(ServletContextEvent sce) { - 21 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  22. 22. La FAQ Java EE System.out.println("Lapplication vient de démarrer"); } /** Cette méthode appelée lors de larret de lapplication*/ public void contextDestroyed(ServletContextEvent sce) { System.out.println("Lapplication vient de sarreter"); } } Ensuite, il suffit de référencer le listener dans le fichier web.xml (sous la balise racine) <web-app> <listener> <listener-class> com.dvp.faq.javaee.MyHttpServletContextListener </listener-class> </listener> </web-app> Comment récupérer le nom associé au contexte dune application Web?Auteurs : SEMPERE Benjamin , A laide de linterface HttpServletRequest String contextPath = request.getContextPath(); Comment faire apparaître un fichier (PDF, XLS, CSV, ...) dans mon navigateur ?Auteurs : ceddup , Baptiste Wicht , De base, le navigateur va tenter dafficher la page directement selon le flux de données quil reçoit. Dans le cas dun fichier PDF par exemple, les données ne sont pas du tout affichables en létat par le navigateur. Cest pourquoi, il faut indiquer au navigateur le type de fichier quon lui envoie. Pour cela, il faut modifier le content-type de la réponse : response.setContentType("application/pdf"); Dans ce cas-là, le navigateur comprendra que le fichier retourné est un fichier PDF et agira en conséquence. Il est également possible de modifier le nom du fichier en ajoutant une entête à la réponse : response.setHeader("Content-disposition", "filename=monNomDeFichier"); Comment accéder à une ressource dans larborescence dune application web depuis une servlet ?Auteurs : fabszn , Pour accéder à une ressource depuis une servlet, il faut passer par linterface ServletContext. Plus exactement la methode : getRealPath(String relativePath). - 22 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  23. 23. La FAQ Java EE Cette methode recherche depuis la racine de lapplication web le fichier passé en paramètre sous forme dun chemin relatif. Voici un exemple dimplementation : La ressource à laquelle on veut accéder : le fichier de propriété test.properties clef1=hello World Emplacement du fichier dans lapplication web : ROOT_WEB_APP ___files ______test.properties ___WEB-INF Voila le code la servlet : public class TestServlet extends HttpServlet { private static final String KEY = "clef1"; private static final String RELATIVE_PATH_FILE= "files/test.properties"; protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { super.doGet(arg0, arg1); } protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { InputStream in = null; ServletContext context = getServletContext(); System.out.println("Affichage du chemin absolue du fichier via la methode getRealPath(String"); System.out.println(context.getRealPath(RELATIVE_PATH_FILE)); String path = context.getRealPath("files/test.properties"); if(path!=null){ in = new FileInputStream(path); } Properties prop = new Properties(); prop.load(in); String result = prop.getProperty(KEY); arg1.setContentType("text/html"); Writer writer = arg1.getWriter(); writer.write("Résultat : "+result); writer.flush(); } } Remarque : Le chemin relatif déterminé par la variable RELATIVE_PATH_FILE doit être relatif à la racine de lapplication web Le résultat à laffichage sera : Résultat : hello World - 23 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  24. 24. La FAQ Java EE La méthode getResourcePaths() permet de lister tous les fichiers contenu dans lapplication web. Comment donner un type MIME standard compréhensible par tous les navigateurs ?Auteurs : Jack Huser , Certains types MIME (Content-Type) ne sont pas reconnus par tous les navigateurs, il est possible de passer par un type MIME Standard que tout navigateur comprend : response.setContentType ("application/octet-stream"); response.setHeader ("Content-Disposition", "attachment; filename=nom_du_fichier"); Le navigateur va donc lancer le téléchargement du fichier. Comment obtenir une instance de PageContext dans une Servlet ?Auteurs : adiGuba , Il faut utiliser la classe JspFactory et sa méthode getPageContext() pour créer une nouvelle instance de PageContext. Mais attention car tout les PageContext créés de la sorte doivent être libérés par la méthode releasePageContext() : Voici la structure à utiliser pour utiliser PageContext : JspFactory jspFactoty = JspFactory.getDefaultFactory(); PageContext pageContext = jspFactoty.getPageContext( this, // La Servlet request, // Le request courant response, // La réponse courante null, // La page de redirection derreur (null si aucune) true, // Utilise la session PageContext.NO_BUFFER, // Pas de buffer false ); // pas dautoflush try { // Utilisation du PageContext } finally { // Libération du PageContext jspFactoty.releasePageContext(pageContext); } Quest ce que le pattern Transfer Object?Auteurs : request , Le pattern transfer Object précédemment appelé Value Object est une classe implémentant linterface Serializable. Ce pattern est essentiellement utilisé pour échanger des données entre une application cliente et des EJB de type Entity ( EntityBean ). Pourquoi me direz-vous? Tout simplement parce que, comme vous le savez, les EntityBean comme tous les EJB sont des objets distants, ce qui induit, pour chaque accès à celui-ci, un aller-retour à travers le réseau, avec en plus démarrage/validation de transactions. - 24 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  25. 25. La FAQ Java EE Par exemple, pour lire un objet Personne avec 5 attributs, il vous faudra 6 allers-retours pour récupérer vos informations (1 findByPrimaryKey + 5 lectures dattribut). Cest pour cette raison que les Transfer Object sont là. les EntityBean ne sont là que pour être utilisé sur le serveur EJB (dans les EJB 2.0, ils sont maintenant "local", ils ne peuvent pas être accessible de lexterieur). Lidée est de fournir un service avec des EJB stateless qui vont vous fournir les service qui vous intéressent (Lecture/création/modification/ suppression ... dun objet). Cet EJB utilise des Entity en interne pour faire les opérations, et créer des classes de transport (avec uniquement les attributs + get/set), cette classe doit implémenter Serializable pour pouvoir passer sur RMI/IIOP. Cest cette classe que lon appelle Transfer Object Lavantage de ce modèle, cest avoir une programmation distante (N tiers) avec le transit de veritables objets que vous allez pouvoir manipuler puis renvoyer au serveur pour modification... . Voici un petit exemple qui venir étayer la partie théorique. Entity BeanLinterface Local package com.societe.monserveur; import javax.ejb.EJBLocalObject; /** * Classe daccès à une entité. * Laccès est local, cette classe nest pas accessible depuis lexterieur. */ public interface PersonneEJBCMP extends EJBLocalObject { public java.lang.Integer getCodePersonne(); public java.lang.String getNom(); public void setNom(java.lang.String nom); } Linterface Home package com.societe.monserveur; import javax.ejb.CreateException; import javax.ejb.EJBLocalHome; import javax.ejb.FinderException; /** * Home (Factory) de l Entité CMP */ public interface PersonneEJBCMPHome extends EJBLocalHome { public PersonneEJBCMP create(java.lang.Integer codePersonne) throws CreateException; public PersonneEJBCMP create(java.lang.Integer codePersonne, java.lang.String nom) throws CreateException; public PersonneEJBCMP findByPrimaryKey(java.lang.Integer codePersonne) throws FinderException; } Le Bean package com.societe.monserveur; import javax.ejb.CreateException; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import javax.ejb.RemoveException; - 25 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  26. 26. La FAQ Java EE /** * Implémentation de lentité CMP */ public abstract class PersonneEJBCMPBean implements EntityBean { EntityContext entityContext; public abstract java.lang.Integer getCodePersonne(); public abstract void setCodePersonne(java.lang.Integer codePersonne); public abstract java.lang.String getNom(); public abstract void setNom(java.lang.String nom); public java.lang.Integer ejbCreate(java.lang.Integer codePersonne) throws CreateException { setCodePersonne(codePersonne); return null; } public java.lang.Integer ejbCreate(java.lang.Integer codePersonne, java.lang.String nom) throws CreateException { setCodePersonne(codePersonne); setNom(nom); return null; } public void ejbPostCreate(java.lang.Integer codePersonne) throws CreateException { } public void ejbPostCreate(java.lang.Integer codePersonne, java.lang.String nom, java.lang.String prenom, java.lang.Integer age, java.lang.Integer codeEntreprise) throws CreateException { } public void ejbLoad() { } public void ejbStore() { } public void ejbRemove() throws RemoveException { } public void ejbActivate() { } public void ejbPassivate() { } public void setEntityContext(EntityContext entityContext) { this.entityContext = entityContext; } public void unsetEntityContext() { this.entityContext = null; } } Le SessionBean Linterface Home package com.societe.monserveur; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface PersonneEJBFacadeHome extends EJBHome { public PersonneEJBFacade create() throws RemoteException, CreateException; } Linterface Remote - 26 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  27. 27. La FAQ Java EE package com.societe.monserveur; import java.rmi.RemoteException; import javax.ejb.EJBObject; public interface PersonneEJBFacade extends EJBObject { public void insert(Personne obj) throws RemoteException; public void update(Personne obj) throws RemoteException; public void delete(Personne obj) throws RemoteException; public Personne findObject(Integer codePersonne) throws RemoteException; } Le Bean package com.societe.monserveur; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; public class PersonneEJBFacadeBean implements SessionBean { private SessionContext sessionContext; public void ejbCreate() { } public void ejbRemove() { } public void ejbActivate() { } public void ejbPassivate() { } public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } public void insert(Personne obj) { try { getCMPHome().create(obj.getCodePersonne(), obj.getNom()); } catch (Exception ex) { throw new EJBException(ex); } } public void update(Personne obj) { try { PersonneEJBCMP personneEJBCMP = getCMPHome().findByPrimaryKey(obj.getCodePersonne()); personneEJBCMP.setNom(obj.getNom()); } catch (Exception ex) { throw new EJBException(ex); } } public void delete(Personne obj) { try { getCMPHome().remove(obj.getCodePersonne()); } catch (Exception ex) { throw new EJBException(ex); } - 27 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  28. 28. La FAQ Java EE } public Personne findObject(Integer codePersonne) { try { PersonneEJBCMP personneEJBCMP = getCMPHome().findByPrimaryKey( codePersonne); Personne obj = new Personne(personneEJBCMP.getCodePersonne(), personneEJBCMP.getNom()); return obj; } catch (Exception ex) { throw new EJBException(ex); } } public static PersonneEJBCMPHome getCMPHome() throws NamingException { Context ctx = new InitialContext(); PersonneEJBCMPHome personneEJBCMPHome = (PersonneEJBCMPHome) ctx.lookup("com/societe/monserveur/PersonneEJBCMP"); return personneEJBCMPHome; } } Le Transfer Object package com.societe.monserveur; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; /** * Value Object Personne */ public class Personne implements java.io.Serializable { private Integer codePersonne; private String nom; /** Constructeur sans argument */ public Personne() { super(); } /** * Constructeur avec arguments */ public Personne(Integer codePersonne, String nom) { this.codePersonne = codePersonne; this.nom = nom; } /** * Rechercher un objet à partir de son identifiant * @return Lobjet trouvé */ public static Personne findObject(Integer codePersonne) throws Exception { return getFacade().findObject(codePersonne); } /** Insertion de lobjet dans la base */ public void insert() throws Exception { getFacade().insert(this); } /** Modification de lobjet dans la base */ public void update() throws Exception { getFacade().update(this); } - 28 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  29. 29. La FAQ Java EE /** Suppression de lobjet dans la base */ public void delete() throws Exception { getFacade().delete(this); } /** * Geter / Seter */ public Integer getCodePersonne() { return codePersonne; } public void setCodePersonne(Integer codePersonne) throws Exception { this.codePersonne = codePersonne; } public String getNom() { return nom; } public void setNom(String nom) throws Exception { this.nom = nom; } /** * Récupération de lEJB facade * @return la facade */ private static PersonneEJBFacade getFacade() throws Exception { Context ctx = new InitialContext(); Object ref = ctx.lookup("com/societe/monserveur/PersonneEJBFacade"); PersonneEJBFacadeHome personneEJBFacadeHome = (PersonneEJBFacadeHome) PortableRemoteObject.narrow(ref, PersonneEJBFacadeHome.class); return personneEJBFacadeHome.create(); } } Et enfin le Client package com.societe.monclient; import com.societe.monserveur.Personne; public class Test { public static void main(String[] args) throws Exception { //Création de toto Personne toto = new Personne(new Integer(1), "Toto"); toto.insert(); //Modification de toto toto.setNom("Titi"); toto.update(); //Suppression de toto toto.delete(); //Récupération dune autre personne Personne autre = Personne.findObject(new Integer(99)); } } Lavantage avec cette solution (EJB + VO) cest que laccès et les régles de gestion sont centralisés sur un seul serveur. Si une autre application (back office) ou un autre serveur web, veut accèder à la même information, il pourra réutiliser tout cela. - 29 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  30. 30. La FAQ Java EE Sommaire > Servlets > Session Quelle est lutilité des sessionsAuteurs : Stessy , La plupart des applications web utilisent le protocole HTTP. Malheureusement ce protocole est ce que lon appelle un protocole sans état, cest à dire que le serveur web ne maintient pas les informations à propos du client entre deux requêtes. De ce fait le serveur ne sait pas déterminer si une requête ou une réponse provient du même client. Cest pour cela que les applications web utilisent le concept de session. Une session représente lensemble des intéractions pouvant intervenir entre un client et le serveur Comment créer un objet sessionAuteurs : Stessy , Il existe deux méthodes permettant de créer des sessions : HttpSession getSession() et HttpSession getSession(boolean) Voici un petit exemple permettant de comprendre la différence entre ces 2 méthodes // Si la session existe, ces 2 méthodes renvoient la // session existante, sinon ces 2 méthodes créent une // nouvelle session HttpSession session = request.getSession(); HttpSession session = request.getSession(true) // Si la session existe, cette méthode renvoie la session existante, sinon la méthode retourne la valeur null HttpSession session = request.getSession(false); Comment les session sont-elles gérées ?Auteurs : Stessy , Il existe 3 moyens de gérer les sessions : • à laide de cookies • à laide re la réécriture dURL • à laide des sessions SSL en HTTPS Cookies A chaque session créée, le serveur envoie un identificateur (sous la forme dun cookie) correspondant au client. Ensuite le client renverra ce cookie au serveur lors de sa prochaine requête permettant ainsi au serveur didentifier le client. Voici un petit exemple permettant dajouter un cookie dans lentête de la réponse. - 30 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  31. 31. La FAQ Java EE javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie("user","abc123456"); response.addCookie(cookie); Mais il arrive assez souvent que le client refuse de recevoir des cookies. Dans ce cas il vous reste une 2è solution qui consiste en la réécriture dURL Réécriture dURL Par cette technique le serveur ajoute ldentificateur de session à la fin de chaque URL des pages envoyées par celui-ci. Mais malheureusement cette technique a un coût car le serveur doit effectuer une opération supplémentaire. Celui-ci doit personnifier lurl en y incluant lidentifiant de session. 2 méthodes existent pour individualiser les URL: encodeURL(String) et encodeRedirectURL(String) Ces méthodes réécrivent lURL uniquement si le client naccepte pas les cookies. Dans lautre cas les URL resteront inchangées. La 2è méthode est utilisée lorsque la servlet utilise la méthode sendRedirect(String) Exemple : response.sendRedirect(response.encodeRedirectURL("maServlet"); Les Sessions SSL en HTTPS Il nous suffit de récupérer la session courante. A cela près, quune session SSL est déterminé par les variables détat suivantes: • Session ID (ldentifiant de session) : une séquence arbitraire de 32 octets choisie par le serveur pour identifier une session • Peer certificate (le certificat du pair) : cest un certificat X 509 du correspondant (soit pour un serveur ou un client). • Compression method : lalgorithme de compression utilisé, NULL pour linstant (ce champ reste vide) • Cipher spec (la suite de chiffrement) : définit les algorithmes de chiffrement et de hachage • MasterSecret : cest un clé de 48 octets partagée entre le client et le serveur. • Is resumable (le drapeau) : cest un flag qui indique si il est possible douvrir de nouvelles connexions sur la session en question. - 31 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  32. 32. La FAQ Java EE Sommaire > JSP - 32 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  33. 33. La FAQ Java EE Sommaire > JSP > Généralités Comment utiliser les EL (Expression Language) dans une page JSP ?Auteurs : adiGuba , Cela dépend de la version de J2EE que vous utilisez : Avec J2EE 1.4, les EL sont directement intégré dans le moteur JSP 2.0. Toutefois lapplication doit obligatoirement être déclaré comme une application Servlet 2.4 au minimum : <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web- app_2_4.xsd" version="2.4"> Si ce nest pas le cas les EL seront désactivées afin de ne pas compromettre le fonctionnement dapplication J2EE postérieur. Il est toujours possible de désactiver les EL sur une page particulière en utilisant la directive page : <%@ page isELIgnored="false" %> Il est également possible dutiliser les EL avec une version antérieur de J2EE, mais dans ce cas ce nest pas le moteur JSP qui traitera les EL mais une librairie de tag compatible. Ainsi on peut utiliser la JSTL 1.0 ou Struts-EL qui intègre une gestion des EL. Attention toutefois, ces librairies ne sont pas concus pour être utilisées dans une application J2EE 1.4. Dans ce cas il faut utiliser une version sans EL afin de les laisser au moteur JSP 2.0 (respectivement JSTL 1.1 et Struts). Comment récupérer le code HTML généré par une page JSP ?Auteurs : zag , Il faut commencer par récupérer un RequestDispatcher qui va servir de wrapper pour la ressource (le fichier JSP en loccurence). Pour récupérer ce dispatcher, il faut passer le contexte de la servlet : RequestDispatcher rd = servletContext.getRequestDispatcher(jsp); Ensuite, il faut configurer la requête. Pour cela, cest simple, il faut simplement passer les attributs nécessaires à la page avec la méthode setAttributes. Après cela, il faut configurer lobjet response. Ici, on est obligé de créer notre propre classe de réponse pour pouvoir écrire dans un String : public class FictiveHttpServletResponse extends HttpServletResponseWrapper { private StringWriter replacementWriter; public FictiveHttpServletResponse(HttpServletResponse response) { super(response); replacementWriter = new StringWriter(); } public PrintWriter getWriter() throws IOException { return new PrintWriter(replacementWriter); - 33 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  34. 34. La FAQ Java EE } public String toString() { return replacementWriter.toString(); } } Ensuite, on peut récupérer le contenu de la page : HttpServletResponse newResponse = new FictiveHttpServletResponse((HttpServletResponse) response); rd.forward(request, newResponse); String monMessage = newResponse.toString(); Avec ça, la variable monMessage contiendra le contenu HTML généré par la page JSP. Comment mettre un header et un footer a chaque jsp ?Auteurs : lunatix , (si on est en jsp 2.0 (tomcat 5.0 par exemple)) dans web.xml <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <include-prelude>/includes/header.jsp</include-prelude> <include-coda>/includes/footer.jsp</include-coda> </jsp-property-group> </jsp-config> Comment afficher tous les paramêtres dune requete ?Auteurs : syj , Enumeration en = request.getParameterNames(); while (en.hasMoreElements()) { String pName = (String) en.nextElement(); log.debug(pName + "=" + request.getParameter(pName)); // System.out.println(pName + "=" + request.getParameter(pName)); } Comment afficher tous les attributs du scope request ?Auteurs : syj , java.util.Enumeration en= request.getAttributeNames(); while (en.hasMoreElements()) { String name = (String) en.nextElement(); if(request.getAttribute(name) == null) { log.debug(name + "=NULL"); } else { log.debug(name + "=" + request.getAttribute(name).toString()); - 34 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  35. 35. La FAQ Java EE } } Créer sa propre page derreur ?Auteurs : syj , Voici la page derreur que lon utilise. Elle nest utile quen phase de développement. Mais elle permet de determiner rapidement les problèmes qui peuvent surgir. <%@ page language="java" isErrorPage="true" %> <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>Page derreur</title> </head> <body bgcolor="#FFFFFF"> <div>Une erreur sest produite !</div> <h1>Attribut de requete</h1> <div class="requestAttributs"> <% java.util.Enumeration en = request.getAttributeNames(); while (en.hasMoreElements()) { String name = (String) en.nextElement(); if(request.getAttribute(name) == null) { %> <div> <%=name%>=null </div> <% } else { %> <div> <%=name%>=<%=request.getAttribute(name).toString()%> </div> <% } } %> </div> <div class="requestParameters"> <% en=request.getParameterNames(); while (en.hasMoreElements()) { String name = (String) en.nextElement(); if(request.getParameter(name) == null) { %> <div> <%=name%>=null </div> <% } else { %> <div> <%=name%>=<%=request.getParameter(name).toString()%> </div> <% } } %> </div> - 35 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  36. 36. La FAQ Java EE <h1>Exception</h1> <div> <% Throwable th = pageContext.getException(); if(th != null) { printRecursiveException(out,th); } %> </div> <%! public void printRecursiveException(JspWriter out, Throwable th) throws java.io.IOException { out.println("<div>" + th.getClass().getName() + ":" + th.getMessage() + "</div>"); StackTraceElement ste; for(int x=0;x < th.getStackTrace().length;x++) { out.println("<div>" + th.getStackTrace()[x].toString() + "</div>"); } Throwable parent = th.getCause(); if(parent != null) { out.println("<div class="parentCause">"); printRecursiveException(out,parent); out.println("</div>"); } } %> </body> </html> Comment appliquer ma page derreur à toutes mes pages JSP ?Auteurs : syj , <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.jsp</location> </error-page> Note: Linsertion doit se faire entre session-config et ressource-ref mais je ne suis pas sur que çà soit le session-config et ressource-ref qui entoure directement cette balise. Que sont les objets implicites?Auteurs : Stessy , Des objets sont dit implicites car il ne nous est pas nécessaire de les déclarer ou de les initialiser Les objest le plus souvent utilisés sont: • request : lorsquun navigateur envoie une requête vers le serveur, il est possible que celui-ci envoie un certain nombre de paramètres. Il existe deux sortes de paramètres: • Les paramètres se trouvant dans lURL comme par exemple http://www.monsite.com/path/de/ ma/page?param1=valeur1&param2=valeur2 • Les paramètres de formulaire: ces dernier sont transmis dans le corps de la requête • response : cet objet contient la réponse envoyée au client. La portée de cette instance est la page • out : peut être employé dans les scriptlets pour écrire des données dans la page qui sera envoyée au client. La portée de cette instance est la page - 36 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  37. 37. La FAQ Java EE • session : cet objet contient, comme son nom lindique, tous les objets relatif à la session - 37 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.
  38. 38. La FAQ Java EE Sommaire > JSP > JSTL (Java Standard Tag Library) Quels sont les objectifs de la JSTL?Auteurs : adiGuba , Le but de la JSTL est de simplifier le travail des auteurs de page JSP, cest à dire la personne responsable de la couche présentation dune application web Java EE. En effet, un web designer peut avoir des problèmes pour la conception de pages JSP du fait quil est confronté à un langage de script complexe quil ne maîtrise pas forcément. La JSTL permet de développez des pages JSP en utilisant des balises XML, donc avec une syntaxe proche des langages utilisés par les web designers, et leurs permet donc de concevoir des pages dynamiques complexes sans connaissances du langage Java. Sun à donc proposer une spécification pour une librairie de tags standard : la Java Standard Tag Library (JSTL). Cest à dire quil spécifie les bases de cette librairie, mais quil laisse limplémentation libre (de la même manière que pour les serveur Java EE qui son des implémentations de la spécification Java EE). - 38 -Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentationconstitue une œuvre intellectuelle protégée par les droits dauteur. Copyright ® 2003 - 2009 Developpez LLC. Tous droits réservés DeveloppezLLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de lensemble de son contenu : textes, documents et images sanslautorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusquà trois ans de prison et jusquà 300 000 € de dommages etintérêts. Cette page est déposée à la SACD.

×