faqjavaee

  • Upload
    terre

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

  • La FAQ Java EE

    Date de publication : 17 mai 2003

    Dernire mise jour : 26 avril 2013

    Cette faq a t ralise partir des questions frquemment poses sur lesforums de www.developpez.com et de l'exprience personnelle des auteurs.Nous tenons souligner que cette faq ne garantit en aucun cas que lesinformations qu'elle propose sont correctes. Les auteurs font leur maximum,mais l'erreur est humaine. Cette faq ne prtend pas non plus tre complte.Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenantrdacteur, lisez ceci.Sur ce, nous vous souhaitons une bonne lecture.L'quipe Java

  • 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 Franois - paquerette - ceddup - BaptisteWicht - Jack Huser - fabszn - v1nc3kr0 - link256 - zag

  • La FAQ Java EE

    - 3 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    1. Informations gnrales (5) ..................................................................................................................................... 42. Dfinitions (14) ....................................................................................................................................................... 63. Java EE (3) .......................................................................................................................................................... 12

    3.1. Gnralits (3) ............................................................................................................................................. 134. Servlets (23) ......................................................................................................................................................... 14

    4.1. Gnralits (20) ........................................................................................................................................... 154.2. Session (3) ...................................................................................................................................................31

    5. JSP (28) ............................................................................................................................................................... 335.1. Gnralits (8) ............................................................................................................................................. 345.2. JSTL (Java Standard Tag Library) (2) .........................................................................................................38

    5.2.1. Librairie de base (1) ............................................................................................................................ 395.3. JSP Taglibs (18) .......................................................................................................................................... 40

    5.3.1. Taglibs 1.1 (11) ....................................................................................................................................415.3.2. Taglibs 1.2 (6) ......................................................................................................................................50

    6. Frameworks Web (2) ............................................................................................................................................557. Conteneurs Web et Serveurs d'Application (8) ....................................................................................................56

    7.1. Tomcat (8) .................................................................................................................................................... 57

  • La FAQ Java EE

    - 4 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > Informations gnralesComment bien utiliser cette faq ?

    Auteur : L'quipe JavaLe but : Cette faq a t conue pour tre la plus simple possible d'utilisation. Elle tente d'apporter desrponses simples et compltes aux questions auxquelles sont confronts tous les dbutants (et les autres).

    L'organisation : Les questions sont organises par thme, les thmes pouvant eux-mme contenir dessous-thmes. Lorsqu'une question porte sur plusieurs thmes, celle-ci est insre dans chacun des thmesrendant la recherche plus facile.

    Les rponses : Les rponses contiennent des explications et des codes sources. Certaines sont compltesde fichier tlcharger contenant un programme de dmonstration. Ces programmes sont volontairementtrs simples afin qu'il soit ais de localiser le code intressant. Les rponses peuvent galement trecompltes de liens vers d'autres rponses, vers la documentation en ligne de Sun ou vers un autre siteen rapport.

    Nouveauts et mises jour : Lors de l'ajout ou de la modification d'une question/rponse, un indicateurest plac cot du titre de la question. Cet indicateur reste visible pour une dure de 15 jours afin de vouspermettre de voir rapidement les modifications apportes.

    J'espre que cette faq pourra rpondre vos questions. N'hsitez pas nous faire part de touscommentaires/remarques/critiques.

    lien : Comment participer cette faq ?

    Comment participer cette faq ?Auteur : L'quipe JavaCette faq est ouverte toute collaboration. Pour viter la multiplication des versions, il serait prfrableque toutes collaborations soient transmises aux administrateurs de la faq.Plusieurs comptences sont actuellement recherches pour amliorer cette faq :

    Rdacteur : Bien videmment, toute nouvelle question/rponse est la bienvenue.

    Web designer : Toute personne capable de faire une meilleure mise en page, une feuille de style ou debelles images...

    Correcteur : Malgr nos efforts, des fautes d'orthographe ou de grammaire peuvent subsister. Merci decontacter les administrateurs si vous en dbusquez une... Idem pour les liens errons.

    lien : Quels sont les droits de reproduction de cette faq ?

    Quels sont les droits de reproduction de cette FAQ ?Auteur : L'quipe JavaLes codes sources prsents sur cette page sont libres de droits et vous pouvez les utiliser votreconvenance. Pour le reste, ce document constitue une oeuvre intellectuelle protge par les droitsd'auteurs.

  • La FAQ Java EE

    - 5 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Copyright 2009 Developpez LLC : Tous droits rservs Developpez LLC. Aucune reproduction ne peuten tre faite sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3ans de prison et jusqu' 300 000 E de dommages et intrts. Cette page est dpose la SACD.

    O trouver d'autres sources d'information ?Auteur : L'quipe Java Les cours et didacticiels Java Web Les forums Java de Developpez.com La FAQ Struts La FAQ Gnral Java La FAQ JDBC La Javadoc : toutes les informations utiles sur les classes, leurs mthodes ... toujours avoir

    sous la main. Les didacticiels de Sun La FAQ de JGuru, beaucoup plus complte que celle-ci ...

    RemerciementsAuteur : L'quipe JavaUn grand merci tous ceux qui ont pris de leur temps pour la ralisation de cette FAQ. C'est dire :

    Aux rdacteurs qui ont rdig les questions de cette FAQ. Aux correcteurs qui ont contribu supprimmer un maximum de fautes de franais sur cette FAQ. Aux visiteurs qui ont visit cette page et qui, par leurs remarques, ont contribu l'amlioration de

    cette page.

  • La FAQ Java EE

    - 6 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > DfinitionsQu'est ce que Java EE ?

    Auteur : StessyLa plateforme Java entreprise (Java EE) est un ensemble de spcifications coordonnes et pratiques quipermettent ensemble des solutions pour le dveloppement, le dploiement, et de la gestion des applicationsmultitiers centralises sur un serveur. Construit sur la plateforme de Java 2 dition standard (Java SE),la plateforme Java EE ajoute les possibilits ncessaires pour fournir une plateforme complte, stable,scurise, et rapide de Java au niveau entreprise.La plateforme entreprise fournit un ensemble de services permettant aux composants de dialoguer entreeux:

    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 EJB ?Auteur : StessyUn composant Entreprise JavaBeans (EJB) est une classe ayant des champs et des mthodes pour mettreen application des modules de la logique mtier (Business logic). Vous pouvez penser un entreprise beancomme un module pouvant tre employ seul ou avec d'autres entreprise bean pour excuter la logiquemtier sur le serveur Java EE.Il existe actuellement trois types d'entreprise bean :

    les bean session (Session Bean) les bean entit (Entity Bean) les bean contrls par message (Message Driven Bean)

    Les entreprise bean interagissent le plus souvent avec des bases de donnes.

  • La FAQ Java EE

    - 7 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Si vous souhaitez en savoir plus sur les EJB, suivez ces liens :

    EJB Home EJB (J2EE 1.4 tutorial) EJB Spcifications

    Que sont les Servlet ?Auteur : StessyTechonologie Java utilise pour effectuer des traitements cot serveur en rponse aux requtes provenanten gnral de poste clients distants.Bien que les servlets puissent rpondre n'importe quel type de requte, elles sont gnralementemployes pour rpondre des requtes de type HTTP et qui permettent de retourner dynamiquement despages html.

    Si vous souhaitez en savoir plus sur les Servlets, suivez ces liens:

    Servlets Home Servlets (Java EE 5 Tutorial) Servlets implmentations et spcifications

    Que sont les JSP ?Auteur : StessyLes JavaServerPages (JSP) vous permet d'insrer des petits bouts de code Java (scriptlets) directementdans du code html. Une page JSP est un document qui contient deux types de texte:

    des donnes statiques (qui peuvent tre exprimes en n'importe quel format texte tel que le HTML,le WML, et le XML)

    des lments de JSP, qui dterminent comment la page construit le contenu dynamique.

    Pour plus d'informations sur les JSP, vous pouvez suivre ces liens :

    JSP home JSP (Java EE 5 Tutorial) JSP Spcifications et implmentation

    Que sont les connecteurs JCA ?Auteur : willy78Les connecteurs JCA sont des modules qui se dploient sur les serveurs d'application.

    Ils permettent de connecter un serveur JavaEE un systme propritaire ("legacy system"), et denormaliser les accs et interactions avec ce systeme.L'api JCA dfini un contrat entre le serveur d'application et le systeme, via des interfaces comme le fait jdbc.JCA est une gnralisation de JDBC.

  • La FAQ Java EE

    - 8 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    JCA 1.0 permet d'envoyer des messages vers le systme propritaire uniquement.JCA 1.5 permet, en plus, de recevoir des messages qui seront traits par un "Message Listener",gnralement un Message Driven Bean

    Qu'est ce que JAXP ?Auteur : vedaerJAXP (Java API for XML Processing) est l'API "standard" (appartenant au JDK) pour la manipulationdu format XML. Cette API met la disposition du dveloppeur trois ensembles de fonctionnalits : lamodlisation, le parsing et la transformation. Elle est compose de quatre packages principaux.

    javax.xml.parsers : Ce package contient un ensemble d'interfaces devant tre implmentes parles diffrents parseurs (SAX ou DOM). Ce package fournit aussi un ensemble de factory permettantl'accs aux parseurs.

    org.w3c.dom : Ce package contient l'ensemble des classes et interfaces ncessaires pour travailleravec DOM (modlisation).

    org.xml.sax : Ce package contient l'ensemble des classes et interfaces ncessaires pour travailleravec SAX (parsing).

    javax.xml.transform : Ce package contient l'ensemble des classes et interfaces ncessaires pourtravailler avec XSLT (transformation).

    Attention, JAXP n'est pas limite SAX, DOM, XSLT et ces quatre packages. Elle offre bien plus defonctionnalits. Pour savoir ce que sont exactement SAX, DOM, XSLT et en savoir plus sur l'utilisation deJAXP, regardez la partie XML de la FAQ Java.

    Il est aussi important de noter que, mme si au dpart JAXP fut cre comme une API Java EE, elle estdsormais intgre au J2SDK standard.

    Pour plus d'informations sur XML, vous pouvez visiter la rubrique XML de developpez.com : http://xml.developpez.com/.

    Qu'est ce que JAX-RPC ?Auteur : vedaerJAX-RPC (Java API for XML-based Remote Procedure Call) est une API permettant de crer des serviceset clients Web bass XML et RPC.

    RPC (Remote Procedure Calls), ou appels de procdures distance, est un systme permettant desclients d'excuter des procdures sur des systmes distants. Ces appels de procdures et les rponsesretournes se font grce au protocole HTTP et SOAP (messages XML).

    Attention ! Aujourd'hui remplac par JAX-WS.

    Qu'est ce que JAX-WS ?Auteur : X-plode : Mike FranoisJAX-WS (Java API for XML Web Services) est la nouvelle appellation de JAX-RPC.

  • La FAQ Java EE

    - 9 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    JAX-WS est une technologie pour des raliser 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 l'ensemble des concepts couverts.Cet acronyme donne l'impression qu'il s'agit uniquement de technologies synchrones, relatives l'appelde procdure distance et non aux services web.De plus l'intgration de JAXB 2.0, pose de nombreux problmes de compatibilit avec JAX-RPC 1.1.C'est ainsi l'occasion pour Sun de repenser, mettre jour, amliorer et surtout rationaliser cettebrique logicielle en utilisant les dernires nouveauts du langage lui-mme, ainsi que les technologiesdveloppes en parallle dans d'autres groupes de travail.

    Pour plus d'informations sur JAX-WS ( anciennement JAX-RPC ), vous pouvez suivre ces liens :

    Introduction de JAX-WS JAX-WS (Java EE 5 Tutorial) XML-RPC spcification

    Qu'est ce que JDBC ?Auteur : vedaerJDBC est une API (Application Programming Interface) java disponible depuis la version 1.1 du JDK. Pournote, JDBC est un nom dpos et non un acronyme, mme si en gnral on lui donne la dfinition suivante :Java DataBase Connectivity.

    Cette API est constitue d'un ensemble d'interfaces et de classes qui permettent l'accs, partir deprogrammes java, des donnes tabulaires (i.e. tries sous forme de table ou de tableur). Par donnestabulaires, on entends gnralement des bases de donnes contenues dans des SGBD relationnels. Mais,JDBC n'est pas restreinte ce type de source de donnes. On peux aussi accder des sources de donnessous forme de fichiers (fichiers XML par exemple).

    Qu'est ce que JAAS ?Auteur : dujJava Authentication and Authorisation Service.

    Il s'agit d'un package fournissant des services d'authentification (login) et d'autorisation (verification depermissions pour l'execution de mthodes).

    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 dveloppeurs d'crire leurs propres modules.

  • La FAQ Java EE

    - 10 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Une libraire fournissant quelques implmentation, dont une permettant une interaction avec Windows NTet Windows 2000 pour l'authentification : http://free.tagish.net/jaas/index.jsp

    Qu'est ce que JAXB ?Auteur : vedaerJAXB (Java Architecture for XML Binding) offre les outils et API ncessaires pour "lier" des objets java des documents XML. JAXB utilise des schmas (W3C XML Schema) pour faire ce lien. Une fois ce liencr (grce un compilateur qui va gnrer les packages correspondant un schma donn), vous pouvezfacilement srialiser/desrialiser les objet java sous un format XML. Pour plus d'informations sur JAXB,vous pouvez suivre ces liens :

    JAXB home JAXB (Java Web Services Tutorial)

    Pour le moment, JAXB permet juste de partir d'un Schma XML pour gnrer les classes correspondantes(interfaces implmenter). JAXB 2.0 devrait palier cette limitation en permettant de crer des schmas partir de classes Java dj dfinies. Pour plus d'informations, regardez la JSR 222 : http://www.jcp.org/en/jsr/detail?id=222

    Qu'est ce que SAAJ ?Auteur : vedaerSAAJ (SOAP with Attachments API for Java) est une API Java permettant l'envoi et la rception de messagesXML sur le rseau. Ces messages obissent la spcification SOAP (Simple Object Access Protocol) 1.1.

    SAAJ est souvent utilise par des API de plus haut niveau comme JAXR et JAX-RPC. Mais, elle peut tout fait tre utilise de manire indpendante. Pour plus d'informations, vous pouvez suivre ces liens :

    SAAJ home SAAJ (Java EE 5 Tutorial) SAAJ documentation

    Vous pouvez trouver la spcification de SOAP cette adresse : http://www.w3.org/TR/soap/ .

    Qu'est ce que JAXR ?Auteur : vedaerJAXR (Java API for XML Registries) est une API intgre Java EE qui permet l'accs diffrents typesde registres XML. Ces registres XML sont une infrastucture permettant la construction, le dploiement etla dcouverte de Web services.

    JAXR permet l'interaction avec plusieurs standards, dont UDDI (Universal Description, Discovery, andIntegration) et ebXML Registry and Repository standard. Pour connatre les versions supportes de cesstandards et les diffrentes implmentations fournisseur disponibles pour JAXR, suivez les liens ci-dessous.

  • La FAQ Java EE

    - 11 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Java API for XML Registries (JAXR) JAXR (Chap. 10 du Java EE Tutorial) XML Downloads & Specifications Java Technology & Web Services

    Pour note, JAXR est intgr au JWSDP (Java Web Services Developer Pack), mais vous pouvez aussi letlchager sparment (voir liens).

    Que sont les Frameworks Web ?Auteur : X-plode : Mike FranoisUn framework Web permet de pouvoir abstraire les problmes rencontrs au quotidien lors dudeveloppement d'une application Web. Tout autant, il permet de pouvoir avoir un design rutilisable pourun dveloppement donn.Le rsultat est un meilleur code, plus lisible et ainsi plus facilement maintenable.

    Les Frameworks Web peuvent se distinguent en deux types :

    Orient Requte Orient Composant

  • La FAQ Java EE

    - 12 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > Java EE

  • La FAQ Java EE

    - 13 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > Java EE > GnralitsComment faire pour ne pas afficher l'arborescence de l'application lorque

    l'utilisateur entre simplement le contexte de l'application dans l'URL ?Auteur : StessyPour que l'utilisateur ne puisse pas voir l'arborescence de l'application lorqu'il indique uniquement lecontexte de l'application dans l'URL, il suffit simplement d'ajouter un lment dans le fichier web.xml quis'il existe, sera utilis par le conteneur comme page par dfaut.

    welcome.jsp

    Quelles sont les diffrentes portes existantes ?Auteur : StessyLes objets crs que ce soit dans les JSP ou les Servlets ont une certaine porte, c'est--dire une certainedure de vie.Les diffrentes portes existantes sont:

    page : les objets ne sont accessibles que dans la page o ils sont dfinis request : les objest sont accessibles pendant toute la dure de la requte session : les objets sont accessibles pendant toute la dure de la session application : les objest sont accessibles pendant toute la dure de vie de l'application et dans

    l'application complte

    Quelles sont les differences entre un serveur web et un serveur d'application ?Auteur : adiGubaUn serveur d'application a pour objectif de facilit la cration d'application serveur sans se soucier del'aspect rseau (toute la couche rseau est laisse au serveur d'application).Un serveur web peut grer plusieurs sites indpendemment, il peut utiliser plusieurs langages/technologiesdiffrents (ASP, PHP, JavaEE), gre les transactions scuriss...

    La confusion vient du fait que la plupart du temps les applications JavaEE sont des applications Web, pourla simple raison que cela permet de ne pas distribuer d'application cliente (un navigateur suffit).

  • La FAQ Java EE

    - 14 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > Servlets

  • La FAQ Java EE

    - 15 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > Servlets > GnralitsPourquoi n'y a-t-il pas de constructeur dans une servlet ?

    Auteur : StessyUne servlet est un peu comme un applet par le fait qu'elle possde une mthode init() qui agit en tantque constructeur. Puisque l'environnement de servlet prend soin d'instancier la servlet, un constructeurexplicite n'est pas ncessaire. N'importe quel code d'initialisation que vous devez utiliser devrait tre placdans la mthode init() puisque cette mthode est appele lorsque le servlet est charge par le conteneurde servlet.

    Quelle est la diffrence entre les mthodes doGet() et doPost() ?Auteur : StessydoGet() est appele la suite d'une requte de type HTTP GET. Cela se passe gnralement lorsqu'unutilisateur clique sur un lien ou lorsque celui-ci entre une URL dans la barre d'adresse du navigateur.

    La mthode doPost() est appele en rponse d'une requte HTTP POST.

    Les 2 mthodes sont appeles partir de l'implmentation par dfaut de la mthode service() se trouvantdans la classe de base HttpServlet

    Fondamentalement le navigateur demande toujours des pages par l'intermdiaire de GET et peut envoyerdes donnes sous les 2 formes GET et POST. Les 2 seules diffrences rsident dans le fait que :

    GET est restreint au niveau de la taille des paramtres envoys au serveur. Cela veut dire qu'il est, laplupart du temps, prfrable d'envoyer des donnes avec la mthode POST.

    En envoyant des donnes par l'intermdiaire de GET voque galement une question concernant lascurit puisqu'elles sont ajoutes la suite de l'URL. Pour cette raison il est plus prudent d'utiliserla mthode POST pour envoyer des donnes au serveur.

    Comment grer les caractres spciaux dans une servlet ?Auteurs : link256 - X-plode : Mike FranoisLes caractres spciaux sont souvent une cause de problme lors de l'utilisation des servlets.Mme si nous dclarons (l'UTF-8 par exemple) dans nos pages servlets et jsps, on peut voir apparatre lescaractres spciaux non grer.Pour ce faire, il suffit de faire une vrification 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 faon de faire est de configurer l'encodage au niveau du fichier web.xml au moyen d'un Filter :

  • La FAQ Java EE

    - 16 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Character Encoding chemin.de.ton.package.CharsetFilter

    Character Encoding action

    Puis d'implmenter 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 l'API servlet utilise par un moteur de servlet ?Auteur : StessyL'interface ServletContext inclut les mthodes getMajorVersion() et getMinorVersion() pour vous indiquerquelle version de l'API Servlet est utilise.

    Un petit exemple :

    //Si le moteur de servlet implmente la spec 2.4 de l'API servlet //majorVersion est gal 2 int majorVersion = getServletContext().getMajorVersion();//minorVersion est gal 4 int minorVersion = getServletContext().getMinorVersion();

    Comment accder un JavaBean depuis une servlet ?Auteur : StessyPour pouvoir partager des variables entre vos pages JSP et vos servlets, vous devez savoir comment creret accder ces variables depuis vos servlets.Les diffrents exemples qui vont suivre dpendent de la porte, ou si vous prferez, la dure de vie devos objets.

    Pour en savoir plus sur les diffrentes portes existantes, reportez vous la section suivante : Quellessont les diffrentes portes existantes ?

  • La FAQ Java EE

    - 17 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    page :

    Dans cet exemple, le Bean est instanci comme une variable locale est n'est donc pas partageable entrediffrentes servlets.

    com.developpez.beans.MyBean myBean = new com.developpez.beans.MyBean();

    request :

    Dans cet exemple, le Bean instanci sera accessible pendant toute la dure de la requte

    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 l'objet ServletConfig et quelle est son utilit ?Auteur : StessyL'objet ServletConfig est une interface. Cette interface contient les 4 mthodes suivantes

    getInitParameter(java.lang.String name) : Cette mthode retourne un String contenant le paramtred'initialisation de la servlet correspondant au paramtre name

    getInitParameterNames() : Cette mthode retourne un objet Enumration contenant les paramtresd'initialisation de la servlet

    getServletContext() : Cette mthode retourne une rfrence de l'interface ServletContextC'est la mthode la plus valable car elle permet de partager l'information travers l'application

  • La FAQ Java EE

    - 18 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    getServletName() : Cette mthode retourne un String contenant le nom de l'instance de la servlet

    Comment modifier le Time Out par dfaut de session ?Auteur : bahamouthDans le fichier web.xml situ dans le rpertoire WEB-INF de l'application, il suffit d'ajouter les lignessuivantes :

    60

    Comment modifier le Time Out par de session par programmation ?Auteur : JaxofunIl suffit d'accder la session voulue et de la modifier comme ceci :

    request.getSession().setMaxInactiveInterval(int);

    Comment connatre le navigateur utilis par un utilisateurAuteur : DidierCette information peut tre retrouve dans le header de la requte:

    String browser = request.getHeader("user-agent");

    Comment placer et rcuprer un paramtre d'initialisation d'une servlet ?Auteur : Righetto DominiquePlacer la dfinition dans la description de votre servlet dans le fichier web.xml comme ceci

    maServlet Ma Servlet Ce que fait ma servlet com.servlet.MaServlet MON_PARAM Bonjour

    Puis dans le code de votre servlet, utilisez ceci pour rcuprer la valeur de MON_PARAM

    getInitParameter("MON_PARAM");

    Si vous dsirez mettre plus de paramtres, il suffit d'ajouter des dclarations comme ceci

  • La FAQ Java EE

    - 19 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    maServlet Ma Servlet Ma Servlet com.servlet.MaServlet MON_PARAM Bonjour MON_PARAM_2 Bonjour

    Si vous dsirez mettre des paramtres de manire globale afin de pouvoir les rcuprer dans toutes lesservlets, il suffit d'ajouter comme ceci

    ... Author X-plode

    Puis dans le code de votre servlet, il faut rcuprer le contexte de la servlet et appeler la mthodegetInitParameter comme la manire prcdente pour rcuprer la valeur de Author

    getServletContext().getInitParameter("MON_PARAM");

    Comment uploader un fichier depuis une applet vers une servlet ?Auteur : SnorkyBZHCot 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();

    Cot servlet

    // Rcupration du flux entrantjava.io.DataInputStream dis = new java.io.DataInputStream(request.getInputStream());dis.readFully(temp); dis.close();

  • La FAQ Java EE

    - 20 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    // Ecriture du fichier image sur le serveur File cibleServeur = new File("/repertoire/nomfichier");FileOutputStream fos = new FileOutputStream(cibleServeur); fos.write(temp);fos.close();

    Comment tlcharger un fichier depuis une servlet ?Auteur : StessyVoici un exemple de code permettant de tlcharger 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 { file = new File(filepath); response.setContentLength((int) file.length()); int bufferSize = 64 * 1024; 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(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (from != null) { try { from.close(); } catch (Exception e) { e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (Exception e) { e.printStackTrace(); } } if (file != null) { try { file.delete(); } catch (Exception e) { e.printStackTrace(); }

  • La FAQ Java EE

    - 21 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    } }

    Comment faire pour grer des actions effectuerlors de la cration ou suppression de session ?

    Auteur : Righetto DominiqueEn implmentant l'interface HttpSessionListener comme ceci

    package com.dvp.faq.javaee;

    import javax.servlet.http.HttpSessionListener;import javax.servlet.http.HttpSessionEvent;

    public class MyHttpSessionListener implements HttpSessionListener {

    /** Cette mthode est appele lors de la cration de session */ public void sessionCreated(HttpSessionEvent hse){ System.out.println("Une session vient d'tre cre"); }

    /** Cette mthode est appele lors de la destruction de session*/ public void sessionDestroyed(HttpSessionEvent hse) { System.out.println("Une session vient d'tre dtruite"); }}

    Ensuite, il suffit de rfrencer le listener dans le fichier web.xml (sous la balise racine)

    com.dvp.faq.javaee.MyHttpSessionListener

  • La FAQ Java EE

    - 22 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    /** Cette mthode appele lors de l'arret de l'application*/ public void contextDestroyed(ServletContextEvent sce) { System.out.println("L'application vient de s'arreter"); }}

    Ensuite, il suffit de rfrencer le listener dans le fichier web.xml (sous la balise racine)

    com.dvp.faq.javaee.MyHttpServletContextListener

    Comment rcuprer le nom associ au contexte d'une application Web ?Auteur : SEMPERE BenjaminA l'aide de l'interface HttpServletRequest

    String contextPath = request.getContextPath();

    Comment faire apparatre un fichier (PDF, XLS, CSV, ...) dans mon navigateur ?Auteurs : ceddup - Baptiste WichtDe base, le navigateur va tenter d'afficher la page directement selon le flux de donnes qu'il reoit. Dansle cas d'un fichier PDF par exemple, les donnes ne sont pas du tout affichables en l'tat par le navigateur.C'est pourquoi, il faut indiquer au navigateur le type de fichier qu'on lui envoie. Pour cela, il faut modifierle content-type de la rponse :

    response.setContentType("application/pdf");

    Dans ce cas-l, le navigateur comprendra que le fichier retourn est un fichier PDF et agira en consquence.

    Il est galement possible de modifier le nom du fichier en ajoutant une entte la rponse :

    response.setHeader("Content-disposition", "filename=monNomDeFichier");

    Comment accder une ressource dans l'arborescenced'une application web depuis une servlet ?

    Auteur : fabsznPour accder une ressource depuis une servlet, il faut passer par l'interface ServletContext. Plusexactement la methode : getRealPath(String relativePath).

    Cette methode recherche depuis la racine de l'application web le fichier pass en paramtre sous formed'un chemin relatif.

  • La FAQ Java EE

    - 23 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Voici un exemple d'implementation :

    La ressource laquelle on veut accder : le fichier de proprit test.properties

    clef1=hello World

    Emplacement du fichier dans l'application 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("Rsultat : " + result); writer.flush(); }}

    Remarque : Le chemin relatif dtermin par la variable RELATIVE_PATH_FILE doit tre relatif la racinede l'application web

    Le rsultat l'affichage sera :

    Rsultat : hello World

  • La FAQ Java EE

    - 24 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    La mthode getResourcePaths() permet de lister tous les fichiers contenu dans l'application web.

    Comment donner un type MIME standard comprhensible par tous les navigateurs ?Auteur : Jack HuserCertains types MIME (Content-Type) ne sont pas reconnus par tous les navigateurs, il est possible de passerpar 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 tlchargement du fichier.

    Comment obtenir une instance de PageContext dans une Servlet ?Auteur : adiGubaIl faut utiliser la classe JspFactory et sa mthode getPageContext() pour crer une nouvelle instance dePageContext. Mais attention car tout les PageContext crs de la sorte doivent tre librs par la mthodereleasePageContext() :

    Voici la structure utiliser pour utiliser PageContext :

    JspFactory jspFactoty = JspFactory.getDefaultFactory(); PageContext pageContext = jspFactoty.getPageContext( this, // La Servlet request, // Le request courant response, // La rponse courante null, // La page de redirection d'erreur (null si aucune) true, // Utilise la session PageContext.NO_BUFFER, // Pas de buffer false ); // pas d'autoflush try { // Utilisation du PageContext } finally { // Libration du PageContext jspFactoty.releasePageContext(pageContext); }

    Qu'est ce que le pattern Transfer Object ?Auteur : requestLe pattern transfer Object prcdemment appel Value Object est une classe implmentant l'interfaceSerializable.Ce pattern est essentiellement utilis pour changer des donnes entre une application cliente et des EJBde type Entity (EntityBean).

    Pourquoi me direz-vous ?

  • La FAQ Java EE

    - 25 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Tout simplement parce que, comme vous le savez, les EntityBean comme tous les EJB sont des objetsdistants, ce qui induit, pour chaque accs celui-ci, un aller-retour travers le rseau, avec en plusdmarrage/validation de transactions.Par exemple, pour lire un objet Personne avec 5 attributs, il vous faudra 6 allers-retours pour rcuprer vosinformations (1 findByPrimaryKey + 5 lectures d'attribut).

    C'est 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 l'exterieur). L'ide est de fournir un service avec desEJB stateless qui vont vous fournir les service qui vous intressent (Lecture/cration/modification/suppression ... d'un objet). Cet EJB utilise des Entity en interne pour faire les oprations, et crer desclasses de transport (avec uniquement les attributs + get/set), cette classe doit implmenter Serializablepour pouvoir passer sur RMI/IIOP. C'est cette classe que l'on appelle Transfer Object

    L'avantage de ce modle, c'est avoir une programmation distante (N tiers) avec le transit de veritablesobjets que vous allez pouvoir manipuler puis renvoyer au serveur pour modification... .

    Voici un petit exemple qui venir tayer la partie thorique.

    Entity Bean :

    L'interface Local

    package com.societe.monserveur;

    import javax.ejb.EJBLocalObject;

    /** * Classe d'accs une entit. * L'accs est local, cette classe n'est pas accessible depuis l'exterieur. */ public interface PersonneEJBCMP extends EJBLocalObject { public java.lang.Integer getCodePersonne();

    public java.lang.String getNom();

    public void setNom(java.lang.String nom); }

    L'interface 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; }

  • La FAQ Java EE

    - 26 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Le Bean

    package com.societe.monserveur;

    import javax.ejb.CreateException;import javax.ejb.EntityBean;import javax.ejb.EntityContext; import javax.ejb.RemoveException;

    /** * Implmentation de l'entit 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

    L'interface Home

  • La FAQ Java EE

    - 27 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    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; }

    L'interface Remote

    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) {

  • La FAQ Java EE

    - 28 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    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); } }

    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 L'objet trouv */

  • La FAQ Java EE

    - 29 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    public static Personne findObject(Integer codePersonne) throws Exception { return getFacade().findObject(codePersonne); }

    /** Insertion de l'objet dans la base */ public void insert() throws Exception { getFacade().insert(this); }

    /** Modification de l'objet dans la base */ public void update() throws Exception { getFacade().update(this); }

    /** Suppression de l'objet dans la base */ public void delete() throws Exception { getFacade().delete(this); }

    /** * Getter / Setter */ 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; }

    /** * Rcupration de l'EJB 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 { //Cration de toto Personne toto = new Personne(new Integer(1), "Toto"); toto.insert();

    //Modification de toto toto.setNom("Titi"); toto.update();

  • La FAQ Java EE

    - 30 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    //Suppression de toto toto.delete();

    //Rcupration d'une autre personne Personne autre = Personne.findObject(new Integer(99)); } }

    L'avantage avec cette solution (EJB + VO) c'est que l'accs et les rgles de gestion sont centraliss surun seul serveur. Si une autre application (back office) ou un autre serveur web, veut accder la mmeinformation, il pourra rutiliser tout cela.

  • La FAQ Java EE

    - 31 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > Servlets > SessionQuelle est l'utilit des sessions ?

    Auteur : StessyLa plupart des applications web utilisent le protocole HTTP. Malheureusement ce protocole est ce que l'onappelle un protocole sans tat, c'est dire que le serveur web ne maintient pas les informations proposdu client entre deux requtes. De ce fait le serveur ne sait pas dterminer si une requte ou une rponseprovient du mme client. C'est pour cela que les applications web utilisent le concept de session. Unesession reprsente l'ensemble des intractions pouvant intervenir entre un client et le serveur

    Comment crer un objet session ?Auteur : StessyIl existe deux mthodes permettant de crer des sessions :

    HttpSession getSession()

    et

    HttpSession getSession(boolean)

    Voici un petit exemple permettant de comprendre la diffrence entre ces 2 mthodes

    // Si la session existe, ces 2 mthodes renvoient la session existante, sinon ces 2 mthodes crent une nouvelle session HttpSession session = request.getSession();HttpSession session = request.getSession(true)

    // Si la session existe, cette mthode renvoie la session existante, sinon la mthode retourne la valeur nullHttpSession session = request.getSession(false);

    Comment les session sont-elles gres ?Auteur : StessyIl existe 3 moyens de grer les sessions :

    l'aide de cookies l'aide re la rcriture d'URL l'aide des sessions SSL en HTTPS

    Cookies

    A chaque session cre, le serveur envoie un identificateur (sous la forme d'un cookie) correspondant auclient. Ensuite le client renverra ce cookie au serveur lors de sa prochaine requte permettant ainsi auserveur d'identifier le client.

    Voici un petit exemple permettant d'ajouter un cookie dans l'entte de la rponse.

    javax.servlet.http.Cookie cookie = newjavax.servlet.http.Cookie("user","abc123456");response.addCookie(cookie);

  • La FAQ Java EE

    - 32 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    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 rcriture d'URL

    Rcriture d'URL

    Par cette technique le serveur ajoute l'dentificateur de session la fin de chaque URL des pages envoyespar celui-ci.Mais malheureusement cette technique a un cot car le serveur doit effectuer une oprationsupplmentaire. Celui-ci doit personnifier l'url en y incluant l'identifiant de session.2 mthodes existent pour individualiser les URL:

    encodeURL(String)

    et

    encodeRedirectURL(String)

    Ces mthodes rcrivent l'URL uniquement si le client n'accepte pas les cookies. Dans l'autre cas les URLresteront inchanges.La 2 mthode est utilise lorsque la servlet utilise la mthode

    sendRedirect(String)

    Exemple :

    response.sendRedirect(response.encodeRedirectURL("maServlet");

    Les Sessions SSL en HTTPS

    Il nous suffit de rcuprer la session courante. A cela prs, qu'une session SSL est dtermin par lesvariables d'tat suivantes:

    Session ID (l'dentifiant de session) :une squence arbitraire de 32 octets choisie par le serveur pour identifier une session

    Peer certificate (le certificat du pair) :c'est un certificat X 509 du correspondant (soit pour un serveur ou un client).

    Compression method :l'algorithme de compression utilis, NULL pour l'instant (ce champ reste vide)

    Cipher spec (la suite de chiffrement) :dfinit les algorithmes de chiffrement et de hachage

    MasterSecret :c'est un cl de 48 octets partage entre le client et le serveur.

    Is resumable (le drapeau) :c'est un flag qui indique si il est possible d'ouvrir de nouvelles connexions sur la session enquestion.

  • La FAQ Java EE

    - 33 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > JSP

  • La FAQ Java EE

    - 34 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > JSP > GnralitsComment utiliser les EL (Expression Language) dans une page JSP ?

    Auteur : adiGubaCela dpend de la version de J2EE que vous utilisez :

    Avec J2EE 1.4, les EL sont directement intgr dans le moteur JSP 2.0. Toutefois l'application doitobligatoirement tre dclar comme une application Servlet 2.4 au minimum :

    Si ce n'est pas le cas les EL seront dsactives afin de ne pas compromettre le fonctionnement d'applicationJ2EE postrieur.

    Il est toujours possible de dsactiver les EL sur une page particulire en utilisant la directive page :

    Il est galement possible d'utiliser les EL avec une version antrieur de J2EE, mais dans ce cas ce n'estpas le moteur JSP qui traitera les EL mais une librairie de tag compatible. Ainsi on peut utiliser la JSTL 1.0ou Struts-EL qui intgre une gestion des EL. Attention toutefois, ces librairies ne sont pas concus pour treutilises dans une application J2EE 1.4. Dans ce cas il faut utiliser une version sans EL afin de les laisserau moteur JSP 2.0 (respectivement JSTL 1.1 et Struts).

    Comment rcuprer le code HTML gnr par une page JSP ?Auteur : zagIl faut commencer par rcuprer un RequestDispatcher qui va servir de wrapper pour la ressource (le fichierJSP en l'occurence). Pour rcuprer ce dispatcher, il faut passer le contexte de la servlet :

    RequestDispatcher rd = servletContext.getRequestDispatcher(jsp);

    Ensuite, il faut configurer la requte. Pour cela, c'est simple, il faut simplement passer les attributsncessaires la page avec la mthode setAttributes.

    Aprs cela, il faut configurer l'objet response. Ici, on est oblig de crer notre propre classe de rponsepour 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);

  • La FAQ Java EE

    - 35 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    } public String toString() { return replacementWriter.toString(); }}

    Ensuite, on peut rcuprer 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 gnr par la page JSP.

    Comment mettre un header et un footer a chaque jsp ?Auteur : lunatix(si on est en jsp 2.0 (tomcat 5.0 par exemple))

    dans web.xml

    *.jsp /includes/header.jsp /includes/footer.jsp

    Comment afficher tous les paramtres d'une requete ?Auteur : 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 ?Auteur : 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()); }

  • La FAQ Java EE

    - 36 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    }

    Crer sa propre page d'erreur ?Auteur : syjVoici la page d'erreur que l'on utilise. Elle n'est utile qu'en phase de dveloppement.Mais elle permet de determiner rapidement les problmes qui peuvent surgir.

    Page d'erreur Une erreur s'est produite ! Attribut de requete =null =

    =null =

    Exception

  • La FAQ Java EE

    - 37 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Comment appliquer ma page d'erreur toutes mes pages JSP ?Auteur : syj

    java.lang.Throwable /error.jsp

    Note: L'insertion doit se faire entre session-config et ressource-ref mais je ne suis pas sur que soit lesession-config et ressource-ref qui entoure directement cette balise.

    Que sont les objets implicites ?Auteur : StessyDes objets sont dit implicites car il ne nous est pas ncessaire de les dclarer ou de les initialiserLes objest le plus souvent utiliss sont:

    request : lorsqu'un navigateur envoie une requte vers le serveur, il est possible que celui-ci envoieun certain nombre de paramtres.Il existe deux sortes de paramtres : Les paramtres se trouvant dans l'URL comme par exemple http://www.monsite.com/path/de/

    ma/page?param1=valeur1&param2=valeur2 Les paramtres de formulaire: ces dernier sont transmis dans le corps de la requte

    response : cet objet contient la rponse envoye au client. La porte de cette instance est la page out : peut tre employ dans les scriptlets pour crire des donnes dans la page qui sera envoye

    au client. La porte de cette instance est la page session : cet objet contient, comme son nom l'indique, tous les objets relatif la session

  • La FAQ Java EE

    - 38 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > JSP > JSTL (Java Standard Tag Library)Quels sont les objectifs de la JSTL ?

    Auteur : adiGubaLe but de la JSTL est de simplifier le travail des auteurs de page JSP, c'est dire la personne responsablede la couche prsentation d'une application web Java EE.En effet, un web designer peut avoir des problmes pour la conception de pages JSP du fait qu'il estconfront un langage de script complexe qu'il ne matrise pas forcment.

    La JSTL permet de dveloppez des pages JSP en utilisant des balises XML, donc avec une syntaxe prochedes langages utiliss par les web designers, et leurs permet donc de concevoir des pages dynamiquescomplexes sans connaissances du langage Java.

    Sun donc proposer une spcification pour une librairie de tags standard : la Java Standard Tag Library(JSTL). C'est dire qu'il spcifie les bases de cette librairie, mais qu'il laisse l'implmentation libre (de lamme manire que pour les serveur Java EE qui son des implmentations de la spcification Java EE).

  • La FAQ Java EE

    - 39 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > JSP > JSTL (Java Standard Tag Library) > Librairie de baseComment afficher une expression ?

    Auteur : adiGubaLe tag permet d'valuer une expression et de l'afficher dans la page JSP

    Le Corps du tag peut tre utilis la place de l'attribut default.

    Inconnu

    Pour de plus amples informations sur les attributs disponibles pour ce tag

  • La FAQ Java EE

    - 40 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > JSP > JSP TaglibsQue sont les JSP Taglibs ?

    Auteur : adiGubaUne JSP Taglib est une collection d'actions prdfini destines tre utilis dans une page JSP sous formede tag (balise XML). Elle se compose d'un descripteur de taglib (Tag Librarie Descriptor) et d'un ensemblede classe Java implmentant l'interface JspTag. Le descripteur de taglib (*.tld) est un document XML quidcrit les associations en les balises et la classe Java.Ces actions sont reprsentes dans le source JSP comme une balise XML. Lors de la compilation de laJSP, ces balises sont remplaces par des appels vers la classe Java correspondante.

    On peut citer comme exemple les balises standards prfixes avec jsp :

    etc...

    L'utilisation de taglib permet de limiter l'utilisation de code Java dans une page JSP, voir de totalementle supprimer.

    Une Taglib est compos de trois lments:

    Le Tag Librarie Descriptor qui effectue le mapping entre les tags et les classes Java. Les classes Java implmentant les diffrents Tag (implmentant l'interface Tag, ou une de ses

    interfaces filles IterationTag et BodyTag. Les classes Java implmentant TagExtraInfo afin d'apporter des informations supplmentaires sur

    les tags (optionnel).

  • La FAQ Java EE

    - 41 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    Sommaire > JSP > JSP Taglibs > Taglibs 1.1Comment utiliser une librairie de tag (taglib) ?

    Auteur : adiGubaUne librairie de tag peut tre distribu sous deux formes :

    Le descripteur de fichier est spar des classes Java... Le descripteur de fichier est inclut dans le Jar avec les classes et possde le nom suivant : "META-

    INF/taglib.tld".

    Afin de pouvoir utiliser cette taglib dans un fichier JSP, il faut la dclarer avec la directive taglib.Respectivement avec le code suivant :

    ou

    Toutefois, il est prfrrable de ne pas utiliser ces notations sous cette forme.En effet, tant donn que la directive taglib doit tre prsente sur toutes les pages JSP qui l'utilisent, lesmodifications du nom du descripteur de taglib pourrait tre longue et pnible.Afin de faciliter la maintenance, il faut dclarer la taglib dans le fichier web.xml :

    taglib-URI /WEB-INF/lib/taglib-v1.0.jar

    Et utiliser l'URI dans les JSP :

    Ainsi, les changements de fichier de descripteur s'effectue seulement dans le fichier web.xml...

    Enfin, pour utiliser les tags de la librairie, il suffit de les prfix par le prefixe indiqu dans la directive taglib :

    Comment l'interface Tag fonctionne-t-elle ?Auteur : adiGubaL'valuation d'un Tag JSP aboutit aux appels suivants :

    Les mthodes setParent(Tag) et setPageContext(PageContext) sont renseignes, ainsi qued'ventuels attributs prsents dans le tag.

    La mthode doStartTag() est appele. Son code de retour dtermine l'affichage du contenu de labalise. Si le retour vaut Tag.EVAL_BODY_INCLUDE, le corps est valu et crit dans le JspWriterde la page, mais il est ignor si il vaut Tag.SKIP_BODY. Si Tag.EVAL_BODY_INCLUDE est retournalors que la balise n'a pas de corps, il est ignor.

  • La FAQ Java EE

    - 42 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    La mthode doEndTag() est appele. Son code de retour dtermine si le reste de la page doit trevalu ou pas. Si le retour vaut Tag.EVAL_PAGE, le reste de la page est valu, mais il est ignor sile retour vaut Tag.SKIP_PAGE.

    Enfin, la mthode release() est appele avant que l'objet ne soit rendu au garbage collector.Attention toutefois, afin d'viter trop d'allocation, les tags sont conservs en cache et rutiliss (tout commeles Servlet/JSP)...

    La classe javax.servlet.jsp.tagext.TagSupport propose une implmentation par dfaut de l'interface Tag (etde son interface fille IterationTag).

    Comment l'interface IterationTag fonctionne-t-elle ?Auteur : adiGubaL'interface IterationTag tend l'interface Tag. Elle hrite donc de toutes ses proprits et permet d'effectuerdes itrations sur le contenu de la balise :

    La mthode doAfterBody() est appele aprs chaque affichage du corps du tag. Son code de retourdetermine si le corps doit tre rvalu ou pas. Si le retour vaut IterationTag.EVAL_BODY_AGAIN, le corpssera rvalu, mais si le retour vaut Tag.SKIP_BODY, on passe la fin du tag (doEndTag()) sans rvaluer lecorps. La classe javax.servlet.jsp.tagext.TagSupport propose une implmentation par dfaut de l'interfaceIterationTag.

    Comment l'interface BodyTag fonctionne-t-elle ?Auteur : adiGubaL'interface BodyTag tend l'interface IterationTag. Elle hrite donc de toutes ses proprits, mais permetplus de traitement sur le corps de la balise :

    La mthode doStartTag() peut dsormais retourner BodyTag.EVAL_BODY_BUFFERED.Dans ce cas (et dans ce cas seulement), les mthodes setbodyContent() puis doInitBody() sont appelesavant la premire valuation du corps de la balise.La mthode setBodyContent() permet au serveur d'application d'indiqu un buffer qui sera utilis pourcrire le contenu du corps.La mthode doInitBody() est appele avant la premire valuation du corps du message.

    La classe javax.servlet.jsp.tagext.BodyTagSupport propose une implmentation par dfaut de l'interfaceBodyTag.

    Comment crire le descripteur de taglib (TLD) ?Auteur : adiGubaLe Tag Library Descriptor dcrit les diffrents tag de la librairie.Il s'agit d'un fichier XML qui prend la forme suivante :

  • La FAQ Java EE

    - 43 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge parles droits d'auteur. Copyright 2003 - 2013 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble deson contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommageset intrts. Cette page est dpose la SACD.

    http://javaweb.developpez.com/faq/javaee/

    1.0 1.1 name Description de la taglib ...

    Aprs l'entte XML et la dclaration du doctype, on a les lments suivants :

    tlibversion : Numero de version de la librairie. jspversion : Version minimum des JSP requise pour pouvoir utilis la librarie (optionnel, dfaut: 1.1). shortname : Indique le prefix par dfaut de la librairie pour les EDI compatible (ceci n'est qu'a titre

    indicatif, le prefix de la directive est utilis). uri : Une URI unique qui identifie cette version de la taglib (optionnel). info : Un texte de description de la taglib (optionnel). tag : Une ou plusieurs mapping de balise avec les classes Java.

    Dans un Jar, ce fichier doit se situer dans le rpertoire META-INF avec le nom taglib.tld afin de pouvoirrfrencer directement le fichier Jar.

    Comment faire le mapping entre un nom de balise et une classe Tag ?Auteur : adiGubaDans le fichier TLD, il faut ajouter, pour chaque tag, les balises suivantes :

    name package.NameTag package.NameTEI JSP description arg1 false true

    Avec les lments suivants :

    name : Nom de la balise (Utilisation: ). tagclass : Nom de la classe Java qui reprsente cette balise (hrite de Tag). teiclass : Nom de la classe Java qui fournit des informations complmentaire sur la balise

    (optionnel). bodycontent : Type de contenu que peut accepter la balise, peut prendre les valeurs empty (pas

    de corps), JSP (le contenu est interprt comme du JSP), ou tagdependent (le contenu n'est pasinterprt) (optionnel, dfaut: JSP).

    info : Un texte de description du tag (optionnel). attribute : Zro, une, ou plusieurs dclarations d'attribut du tag, dcompos de la manire suivante :

    name : Nom de l'attribut. La classe tagclass