Académique Documents
Professionnel Documents
Culture Documents
Cette faq a t ralise partir des questions frquemment poses sur les forums de www.developpez.com et de l'exprience personnelle des auteurs. Nous tenons souligner que cette faq ne garantit en aucun cas que les informations 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 devenant rdacteur, lisez ceci. Sur ce, nous vous souhaitons une bonne lecture. L'quipe Java
L'quipe Java - Stessy - adiGuba - bahamouth christopheJ - lunatix - syj - Righetto Dominique draken - SnorkyBZH - Didier - vedaer - duj - request SEMPERE Benjamin - Jaxofun - willy78 - Sniper37 - Xplode : Mike Franois - paquerette - ceddup - Baptiste Wicht - Jack Huser - fabszn - v1nc3kr0 - link256 - zag
La FAQ Java EE
1. Informations gnrales (5) ..................................................................................................................................... 4 2. Dfinitions (14) ....................................................................................................................................................... 6 3. Java EE (3) .......................................................................................................................................................... 12 3.1. Gnralits (3) ............................................................................................................................................. 13 4. Servlets (23) ......................................................................................................................................................... 14 4.1. Gnralits (20) ........................................................................................................................................... 15 4.2. Session (3) ...................................................................................................................................................31 5. JSP (28) ............................................................................................................................................................... 33 5.1. Gnralits (8) ............................................................................................................................................. 34 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) ......................................................................................................................................50 6. Frameworks Web (2) ............................................................................................................................................55 7. Conteneurs Web et Serveurs d'Application (8) ....................................................................................................56 7.1. Tomcat (8) .................................................................................................................................................... 57
-3Les 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
-4Les 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Copyright 2009 Developpez LLC : Tous droits rservs Developpez LLC. Aucune reproduction ne peut en tre faite sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Cette page est dpose la SACD.
Remerciements
Auteur : L'quipe Java Un 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.
-5Les 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Si vous souhaitez en savoir plus sur Java EE, suivez ces liens: Java EE Home Java EE 5 Tutorial
Les entreprise bean interagissent le plus souvent avec des bases de donnes.
-6Les 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Si vous souhaitez en savoir plus sur les EJB, suivez ces liens : EJB Home EJB (J2EE 1.4 tutorial) EJB Spcifications
Pour plus d'informations sur les JSP, vous pouvez suivre ces liens : JSP home JSP (Java EE 5 Tutorial) JSP Spcifications et implmentation
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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
Attention, JAXP n'est pas limite SAX, DOM, XSLT et ces quatre packages. Elle offre bien plus de fonctionnalits. Pour savoir ce que sont exactement SAX, DOM, XSLT et en savoir plus sur l'utilisation de JAXP, 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 est dsormais intgre au J2SDK standard. Pour plus d'informations sur XML, vous pouvez visiter la rubrique XML de developpez.com : xml.developpez.com/. http://
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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'appel de 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 cette brique logicielle en utilisant les dernires nouveauts du langage lui-mme, ainsi que les technologies dveloppes 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
-9Les 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Une libraire fournissant quelques implmentation, dont une permettant une interaction avec Windows NT et Windows 2000 pour l'authentification : http://free.tagish.net/jaas/index.jsp
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
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 le tlchager sparment (voir liens).
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Java EE > Gnralits Comment faire pour ne pas afficher l'arborescence de l'application lorque l'utilisateur entre simplement le contexte de l'application dans l'URL ?
Auteur : Stessy Pour que l'utilisateur ne puisse pas voir l'arborescence de l'application lorqu'il indique uniquement le contexte de l'application dans l'URL, il suffit simplement d'ajouter un lment dans le fichier web.xml qui s'il existe, sera utilis par le conteneur comme page par dfaut.
<welcome-file-list> <welcome-file>welcome.jsp</welcome-file> </welcome-file-list>
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Servlets > Gnralits Pourquoi n'y a-t-il pas de constructeur dans une servlet ?
Auteur : Stessy Une servlet est un peu comme un applet par le fait qu'elle possde une mthode init() qui agit en tant que constructeur. Puisque l'environnement de servlet prend soin d'instancier la servlet, un constructeur explicite n'est pas ncessaire. N'importe quel code d'initialisation que vous devez utiliser devrait tre plac dans la mthode init() puisque cette mthode est appele lorsque le servlet est charge par le conteneur de servlet.
Une autre faon de faire est de configurer l'encodage au niveau du fichier web.xml au moyen d'un Filter :
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<filter> <filter-name>Character Encoding</filter-name> <filter-class>chemin.de.ton.package.CharsetFilter</filter-class> </filter> <filter-mapping> <filter-name>Character Encoding</filter-name> <servlet-name>action</servlet-name> </filter-mapping>
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
page :
Dans cet exemple, le Bean est instanci comme une variable locale est n'est donc pas partageable entre diffrentes 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); }
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 <init-param> comme ceci
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<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 dsirez mettre des paramtres de manire globale afin de pouvoir les rcuprer dans toutes les servlets, il suffit d'ajouter <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 rcuprer le contexte de la servlet et appeler la mthode getInitParameter comme la manire prcdente pour rcuprer la valeur de Author
getServletContext().getInitParameter("MON_PARAM");
Cot servlet
// Rcupration du flux entrant java.io.DataInputStream dis = new java.io.DataInputStream(request.getInputStream()); dis.readFully(temp); dis.close();
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
// Ecriture du fichier image sur le serveur File cibleServeur = new File("/repertoire/nomfichier"); FileOutputStream fos = new FileOutputStream(cibleServeur); fos.write(temp); fos.close();
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Comment faire pour grer des actions effectuer lors de la cration ou suppression de session ?
Auteur : Righetto Dominique En 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)
<web-app> <listener> <listener-class> com.dvp.faq.javaee.MyHttpSessionListener </listener-class </listener> </web-app>
Comment faire pour grer des actions effectuer lors du dmarrage ou de l'arrt de l'application ?
Auteur : Righetto Dominique En implmentant l'interface ServletContextListener comme ceci
package com.dvp.faq.javaee; import javax.servlet.ServletContextListener; import javax.servlet.ServletContextEvent; public class MyHttpServletContextListener implements ServletContextListener { /** Cette mthode appele lors du dmarrage de l'application*/ public void contextInitialized(ServletContextEvent sce) { } System.out.println("L'application vient de dmarrer");
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
/** 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)
<web-app> <listener> <listener-class> com.dvp.faq.javaee.MyHttpServletContextListener </listener-class> </listener> </web-app>
Comment faire apparatre un fichier (PDF, XLS, CSV, ...) dans mon navigateur ?
Auteurs : ceddup - Baptiste Wicht De base, le navigateur va tenter d'afficher la page directement selon le flux de donnes qu'il reoit. Dans le 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 modifier le 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'arborescence d'une application web depuis une servlet ?
Auteur : fabszn Pour accder une ressource depuis une servlet, il faut passer par l'interface ServletContext. Plus exactement la methode : getRealPath(String relativePath). Cette methode recherche depuis la racine de l'application web le fichier pass en paramtre sous forme d'un chemin relatif.
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Voici un exemple d'implementation : La ressource laquelle on veut accder : le fichier de proprit test.properties
clef1=hello World
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 racine de l'application web Le rsultat l'affichage sera :
Rsultat : hello World
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 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");
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Tout simplement parce que, comme vous le savez, les EntityBean comme tous les EJB sont des objets distants, ce qui induit, pour chaque accs celui-ci, un aller-retour travers le rseau, avec en plus dmarrage/validation de transactions. Par exemple, pour lire un objet Personne avec 5 attributs, il vous faudra 6 allers-retours pour rcuprer vos informations (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 des EJB 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 des classes de transport (avec uniquement les attributs + get/set), cette classe doit implmenter Serializable pour 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 veritables objets 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;
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Le Bean
package com.societe.monserveur; import import import import javax.ejb.CreateException; javax.ejb.EntityBean; javax.ejb.EntityContext; 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;
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 import import import import import javax.ejb.EJBException; javax.ejb.SessionBean; javax.ejb.SessionContext; javax.naming.Context; javax.naming.InitialContext; 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) {
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 */
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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();
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
//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 sur un seul serveur. Si une autre application (back office) ou un autre serveur web, veut accder la mme information, il pourra rutiliser tout cela.
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Servlets > Session Quelle est l'utilit des sessions ?
Auteur : Stessy La plupart des applications web utilisent le protocole HTTP. Malheureusement ce protocole est ce que l'on appelle un protocole sans tat, c'est dire que le serveur web ne maintient pas les informations propos du client entre deux requtes. De ce fait le serveur ne sait pas dterminer si une requte ou une rponse provient du mme client. C'est pour cela que les applications web utilisent le concept de session. Une session reprsente l'ensemble des intractions pouvant intervenir entre un client et le serveur
et
HttpSession getSession(boolean)
// Si la session existe, ces 2 mthodes renvoient la session existante, sinon ces 2 mthodes crent une nouvelle HttpSession session = request.getSession(true) // Si la session existe, cette mthode renvoie la session existante, sinon la mthode retourne la valeur null HttpSession session = request.getSession(false);
Cookies A chaque session cre, le serveur envoie un identificateur (sous la forme d'un cookie) correspondant au client. Ensuite le client renverra ce cookie au serveur lors de sa prochaine requte permettant ainsi au serveur d'identifier le client. Voici un petit exemple permettant d'ajouter un cookie dans l'entte de la rponse.
javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie("user","abc123456"); response.addCookie(cookie);
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 envoyes par celui-ci. Mais malheureusement cette technique a un cot car le serveur doit effectuer une opration supplmentaire. 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 URL resteront 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 les variables 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 en question.
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > JSP > Gnralits Comment utiliser les EL (Expression Language) dans une page JSP ?
Auteur : adiGuba Cela 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 doit obligatoirement tre dclar 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/webapp_2_4.xsd" version="2.4">
Si ce n'est pas le cas les EL seront dsactives afin de ne pas compromettre le fonctionnement d'application J2EE postrieur. Il est toujours possible de dsactiver les EL sur une page particulire en utilisant la directive page :
<%@ page isELIgnored="false" %>
Il est galement possible d'utiliser les EL avec une version antrieur de J2EE, mais dans ce cas ce n'est 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 intgre une gestion des EL. Attention toutefois, ces librairies ne sont pas concus pour tre utilises 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).
Ensuite, il faut configurer la requte. Pour cela, c'est simple, il faut simplement passer les attributs ncessaires la page avec la mthode setAttributes. Aprs cela, il faut configurer l'objet response. Ici, on est oblig de crer notre propre classe de rponse pour pouvoir crire dans un String :
public class FictiveHttpServletResponse extends HttpServletResponseWrapper { private StringWriter replacementWriter; public FictiveHttpServletResponse(HttpServletResponse response) { super(response); } replacementWriter = new StringWriter();
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Avec a, la variable monMessage contiendra le contenu HTML gnr par la page JSP.
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<% 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>"); }
Note: L'insertion 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.
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > JSP > JSTL (Java Standard Tag Library) Quels sont les objectifs de la JSTL ?
Auteur : adiGuba Le but de la JSTL est de simplifier le travail des auteurs de page JSP, c'est dire la personne responsable de 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 est confront 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 proche des langages utiliss par les web designers, et leurs permet donc de concevoir des pages dynamiques complexes 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 la mme manire que pour les serveur Java EE qui son des implmentations de la spcification 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > JSP > JSTL (Java Standard Tag Library) > Librairie de base Comment afficher une expression ?
Auteur : adiGuba Le tag <c:out/> permet d'valuer une expression et de l'afficher dans la page JSP
<!-- Afficher l'user-agent du navigateur ou "Inconnu" si il est absent : --> <c:out value="${header['user-agent']}" default="Inconnu"/>
Pour de plus amples informations sur les attributs disponibles pour ce tag
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > JSP > JSP Taglibs Que sont les JSP Taglibs ?
Auteur : adiGuba Une JSP Taglib est une collection d'actions prdfini destines tre utilis dans une page JSP sous forme de tag (balise XML). Elle se compose d'un descripteur de taglib (Tag Librarie Descriptor) et d'un ensemble de classe Java implmentant l'interface JspTag. Le descripteur de taglib (*.tld) est un document XML qui dcrit 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 la JSP, ces balises sont remplaces par des appels vers la classe Java correspondante. On peut citer comme exemple les balises standards prfixes avec jsp :
<jsp:useBean id="monBean" scope="session" class="package.MonObject"> <jsp:setProperty name="monBean" property="monAttribut" value="1.0"/> </jsp:useBean> <jsp:include page="maPage.jsp"/> <jsp:redirect page="maPage.jsp"/> etc...
L'utilisation de taglib permet de limiter l'utilisation de code Java dans une page JSP, voir de totalement le 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).
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > JSP > JSP Taglibs > Taglibs 1.1 Comment utiliser une librairie de tag (taglib) ?
Auteur : adiGuba Une 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 : "METAINF/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 :
<%@ taglib uri="/WEB-INF/taglib-v1.0.tld" prefix="tag-prefix">
ou
<%@ taglib uri="/WEB-INF/lib/taglib-v1.0.jar" prefix="tag-prefix">
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, les modifications 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> <taglib-uri>taglib-URI</taglib-uri> <taglib-location>/WEB-INF/lib/taglib-v1.0.jar</taglib-location> </taglib>
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 :
<tag-prefix:nom-du-tag param="valeur"/>
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
La mthode doEndTag() est appele. Son code de retour dtermine si le reste de la page doit tre valu ou pas. Si le retour vaut Tag.EVAL_PAGE, le reste de la page est valu, mais il est ignor si le 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 comme les Servlet/JSP)... La classe javax.servlet.jsp.tagext.TagSupport propose une implmentation par dfaut de l'interface Tag (et de son interface fille IterationTag).
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 <%@ taglib %> 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 pouvoir rfrencer directement le fichier Jar.
Avec les lments suivants : name : Nom de la balise (Utilisation: <taglib-prefix:nom/>). 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 pas interprt) (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 doit possder un mutateur pour cet attribut. required : true/false, indique si l'attribut est obligatoire ou pas (optionnel, dfaut: false)
- 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
rtexprvalue : true/false, indique si l'attribut peut tre le rsultat d'une expression (${bean} ou < %=bean%>) ou si il doit tre une chaine statique (optionnel, dfaut: false/valeur statique)
Explication : On tend TagSupport afin de bnficier des implmentations par dfaut des mthodes de Tag. On surcharge doStartTag(), dans lequel on se contente d'crire la chaine "Hello World" dans la sortie de la page courante (pageContext est initialis par l'implmentation par dfaut de setPageContext()). On retourne Tag.SKIP_BODY car on ne veut pas traiter le corps de la balise.
Il est inutile de surcharger doEndTag() car son implmentation par dfaut retourne Tag.EVAL_PAGE. Notre descripteur de fichier complet ressemble ceci :
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>tex</shortname> <uri></uri> <info>Taglib d'exemple</info> <tag> <name>hello</name> <tagclass>HelloTag</tagclass> <bodycontent>empty</bodycontent> </tag> </taglib>
Le fait de spcifier un bodycontent empty permet de lancer une exception la compilation si le tag possde un contenu quelconque... Notre page JSP pourrait ressembler ceci :
<%@ taglib uri="taglib-URI" prefix="p" %> <html>
- 44 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Explication: On ajoute une variable name ainsi que son mutateur setName(). Le mutateur setName() est obligatoire car il sera utilis afin d'initialiser l'attribut de classe name avec la valeur de l'attribut du tag, avant d'appeller doStartTag(). Dans doStartTag(), on affiche "Hello " + name + " !"...
- 45 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
</attribute> </tag>
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<% } %>
Explication : L'attribut count contiendra la valeur de l'attribut de la balise. Il n'y a pas de conversion String/int effectuer car elle est automatique puisque le mutateur prend un int en paramtre. En cas de valeur incorrecte, une exception est lance... Dans doStartTag(), on initialise current qui contiendra le nombre de ligne dj affich. Il est important de l'initialis dans doStartTag() car la mme instance de Tag peut tre utilis plusieurs fois...
Utilisation :
<p:iterate count="3">
- 47 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Rsultat:
Cette ligne sera affiche trois fois Cette ligne sera affiche trois fois Cette ligne sera affiche trois fois
Explication: Avant chaque valuation du corps, on place dans le scope "page" un attribut "line" contenant un Integer contenant le numro de ligne courante. Dans doEndTag(), on supprime cet attribut afin de ne pas 'polluer' inutilement le reste de la page.
- 48 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Note : On peut galement proposer un attribut supplmentaire afin de changer le nom de l'attribut stock dans le scope "page", ainsi que le scope utiliser... Utilisation :
<p:iterate count="3"> Ligne numro <%=pageContext.getAttribute("line")%> </p:iterate>
Rsultat :
Ligne numro 0 Ligne numro 1 Ligne numro 2
- 49 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > JSP > JSP Taglibs > Taglibs 1.2 Comment dfinir/modifier des variables de script dans un Tag ?
Auteur : adiGuba Il est possible de dfinir ou de modifier des variables de script via un Tag JSP. Dans l'exemple prcdent, l'interaction entre le Tag et la page JSP se fait en rcuprant la rfrence de l'objet avec un getAttribute(). Afin de permettre l'utilisation d'une variable de script, nous allons crer une classe qui tend TagExtraInfo :
public class IterateTEI extends TagExtraInfo { public VariableInfo[] getVariableInfo(TagData data) { VariableInfo[] info = new VariableInfo[1]; info[0] = new VariableInfo ("line", "java.lang.Integer", true, VariableInfo.NESTED); return info; }
Explication : La mthode getVariableInfo() permet de dfinir des variables de script cre ou modifie par le Tag. Elle retourne un tableau de VariableInfo, qui est constitu de quatre lments : Le nom de la variable de script. Le nom du type de l'objet de la variable. Un boolen indiquant si il s'agit d'une nouvelle variable ou pas (c'est dire si elle doit tre dclar). Enfin, le dernier argument dfinit le bloc dans lequel la variable sera accessible, il peut prendre les valeurs suivantes : VariableInfo.AT_BEGIN : La variable est dfinit au dbut du tag et accessible jusqu' la fin du bloc qui contient le tag. VariableInfo.AT_END : La variable est dfinit la fin du tag et accessible jusqu' la fin du bloc qui contient le tag. VariableInfo.NESTED : La variable est dfinit au dbut du tag et accessible seulement dans le corps du tag.
Attention, le nom de la variable de script doit correspondre un lment dans un des scope (dans l'ordre: page, request, session, application). La variable de script est synchronise avec son quivalent dans le scope, donc il peut y avoir un conflit si le mme nom est utilis dans deux scopes diffrents. Pour pouvoir utiliser cette variable, il faut ajouter la balise <tei-class> dans la dfinition du tag dans le TLD :
<tag> <name>iterate</name> <tagclass>IterateTag</tagclass> <teiclass>IterateTEI</teiclass> <bodycontent>JSP</bodycontent> <attribute> <name>count</name> <required>true</required> </attribute> </tag>
- 50 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Rsultat :
Ligne numro 0 Ligne numro 1 Ligne numro 2
Note : La mthode getVariableInfo() possdent un TagData qui permet d'accder aux attributs du tag, afin de pourvoir changer dynamiquement le nom de la scriplet selon un attribut par exemple.
Dans le TLD :
<tag> <name>htmlCode</name> <tagclass>HtmlCodeTag</tagclass> </tag>
Explication : La mthode doStartTag() retourne BodyTag.EVAL_BODY_TAG afin d'utiliser l'valuation buffris du corps du Tag. Dans la mthode doAfterBody(), on rcupre le corps du tag valu en String. On modifie ensuite cette String pour remplacer les caractres "<", ">", "\t" et "\n" par du code HTML. Puis
- 51 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
on affiche la chane ainsi transform... Note : Avec les JSP 1.2, BodyTag.EVAL_BODY_TAG est dprci et est remplac par BodyTag.EVAL_BODY_BUFFERED. A l'utilisation, cela donne :
<p:htmlcode> <h1>Example HTML</h1> <p> Un paragraphe de texte avec des mots en <b>gras</b>, et d'autres en <i>italique</i>... </p> </p:htmlcode>
Et on obtient :
<h1>Example HTML</h1> <p> Un paragraphe de texte avec des mots en <b>gras</b>, et d'autres en <i>italique</i>... </p>
Le fait de pouvoir modifier le corps du Tag apporte un plus indniable par rapport l'interface Tag ou IterationTag. En effet, on peut facilement modifier le corps AVANT de l'crire sur la page JSP. De ce fait, on peut rellement changer le formatage du corps dans on ensemble...
donnera:
<h1>Example HTML</h1> <p> Code Java Fri Dec 10 17:45:19 CET 2004 TagLib : Hello World ! </p>
Il faut spcifier que le corps du tag n'est pas du code JSP afin qu'il ne soit pas interprt.
- 52 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Pour cela, on va crer un nouveau Tag htmlJspCode qui utilisera la mme classe que htmlCode, mais en spcifiant que le corps est dpendant du tag (il ne sera pas interprt) :
<tag> <name>htmlJspCode</name> <tagclass>HtmlCodeTag</tagclass> <bodycontent>tagdependent</bodycontent> </tag>
donnera:
<h1>Example HTML</h1> <p> Code Java <%=new java.util.Date()%> TagLib : <p:hello/> </p>
Ceci peut galement permettre d'insrer d'autre langages de scripts (Perl, Php, Shell Script, etc.) au sein d'une page JSP...
Concrtement, cela signifie que si un tag implmente TryCatchFinally, les appels aux mthodes doXXXX() des interfaces Tag, IterationTag et BodyTag seront excut l'intrieur d'un bloc try/catch de la forme suivante :
try { ... tag.doStartTag(); ... tag.doInitBody(); ... tag.doAfterBody(); ... tag.doEndTag(); ... } catch (Throwable t) { tag.doCatch(t); } finally { tag.doFinally();
- 53 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Le tag iterate est le parent du tag htmlCode et du tag htmlJspCode. htmlCode est lui mme parent du tag hello... Mais il n'existe aucune parent entre htmlCode et htmlJspCode... La mthode getParent() permet d'accder au tag parent, pour ventuellement interagir avec ce dernier. A Noter galement l'existence de la mthode statique TagSupport.findAncestorWithClass(Tag,Class) qui permet de rechercher un parent selon son type dans la hirarchie des tags..
- 54 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Frameworks Web Quels sont les types de frameworks Web orients requte existant ?
Auteur : X-plode : Mike Franois Struts WebWork Spring MVC
- 55 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 56 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Tomcat Comment ajouter le JAR de Jave EE dans Tomcat ?
Auteur : paquerette Si on ajoute j2ee.jar dans le rpertoire WEB-INF/lib d'une application sur Tomcat, il va y avoir un problme de compatibilit entre les Jar de Tomcat (servlet.jar) et celui de Java EE. C'est pourquoi, il faut rajouter ce Jar dans le fichier lib du JDK utilis par Tomcat et le retirer du dossier WEB-INF/lib.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<res-auth>Container</res-auth> </resource-ref>
sachant que ds est une variable d'instance de type DataSource. Quand on a besoin de l'accs a la base de donnes, on fait:
Connection conn=ds.getConnection();
ne pas oublier de librer avec un close aprs. On peut aussi prciser dans le serveur xml, le nombre de connection que l'on veut dans le pool (nb max, nb min, nombre en attente) Attention! Bien que cette FAQ mentionne cette possibilit, mettre la balise <context/> dans server.xml est fortement dconseill depuis tomcat 5.0! Prfrez l'utilisation d'un fichier context autonome. Pour en savoir plus sur la gestion d'un pool de connexion sous Tomcat
- 58 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Depuis Tomcat 5.0, bien que ce soit toujours possible, il est dconseill de mettre la balise <context> dans le fichier server.xml. Dans la mesure du possible, il est bien plus prudent de grer des fichiers context autonome.
Exemple:
<servlet> <servlet-name>Controller</servlet-name> <display-name>Controller</display-name> <servlet-class>com.company.Controller</servlet-class> <init-param> <param-name>index</param-name> <param-value>/index.jsp</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
Ou enore le message
cause mere
Comment crer un compte utilisateur qui a les droits pour manager Tomcat ?
Auteur : X-plode : Mike Franois Afin de pouvoir crer un compte pour pouvoir accder l'interface de gestion du conteneur Web (afin de pouvoir retirer les applications dployes par exemple), il vous suffit d'accder directement ./conf/tomcatusers.xml. De base le fichier se prsente ainsi :
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> </tomcat-users>
- 59 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Suite a, vous pourrez vous authentifier sous Tomcat afin de pouvoir grer votre conteneur de servlets.
Comment utiliser une librairie DLL implemente par JNI sur un serveur TOMCAT ?
Auteur : v1nc3kr0 Il suffit tout simplement de rajouter l'option suivante :
-Djava.library.path=<chemin vers DLL>
- 60 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 par les 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 de son 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 dommages et intrts. Cette page est dpose la SACD.
http://javaweb.developpez.com/faq/javaee/