Académique Documents
Professionnel Documents
Culture Documents
Cette faq a été réalisée à partir des questions fréquemment posées sur les forums de
www.developpez.com et de l'expérience 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 prétend pas non plus être complète. Si vous trouvez une erreur,
ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture.
L'équipe Java
Ont contribué à cette FAQ :
-3-
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
-4-
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
•
La FAQ Struts
•
La FAQ Général Java
•
La FAQ JDBC
•
La Javadoc : toutes les informations utiles sur les classes, leurs méthodes ... à toujours avoir sous la main.
•
Les didacticiels de Sun
•
La FAQ de JGuru, beaucoup plus complète que celle-ci ...
Remerciements
Auteurs : L'équipe Java ,
Un grand merci à tous ceux qui ont pris de leur temps pour la réalisation de cette FAQ. C'est à dire :
-5-
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
• 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
Les entreprise bean interagissent le plus souvent avec des bases de données.
Si vous souhaitez en savoir plus sur les EJB, suivez ces liens :
•
EJB Home
-6-
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
•
EJB (J2EE 1.4 tutorial)
•
EJB Spécifications
•
Servlets Home
•
Servlets (Java EE 5 Tutorial)
•
Servlets implémentations et spécifications
• des données statiques (qui peuvent être exprimées en n'importe quel format texte tel que le HTML, le WML, et
le XML)
• des éléments de JSP, qui déterminent comment la page construit le contenu dynamique.
Pour plus d'informations sur les JSP, vous pouvez suivre ces liens :
•
JSP home
•
JSP (Java EE 5 Tutorial)
•
JSP Spécifications et implémentation
-7-
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
JCA 1.5 permet, en plus, de recevoir des messages qui seront traités par un "Message Listener", généralement un
Message Driven Bean
• javax.xml.parsers : Ce package contient un ensemble d'interfaces devant être implémentées par les différents
parseurs (SAX ou DOM). Ce package fournit aussi un ensemble de factory permettant l'accès aux parseurs.
• org.w3c.dom : Ce package contient l'ensemble des classes et interfaces nécessaires pour travailler avec DOM
(modélisation).
• org.xml.sax : Ce package contient l'ensemble des classes et interfaces nécessaires pour travailler avec SAX
(parsing).
• javax.xml.transform : Ce package contient l'ensemble des classes et interfaces nécessaires pour travailler avec
XSLT (transformation).
Attention, JAXP n'est pas limitée à SAX, DOM, XSLT et ces quatre packages. Elle offre bien plus de fonctionnalités.
Pour savoir ce que sont exactement SAX, DOM, XSLT et en savoir plus sur l'utilisation de JAXP, regardez la partie
XML de la FAQ Java .
Il est aussi important de noter que, même si au départ JAXP fut créée comme une API Java EE, elle est désormais
intégrée au J2SDK standard.
Pour plus d'informations sur XML, vous pouvez visiter la rubrique XML de developpez.com : http://
xml.developpez.com/ .
-8-
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
De plus l'intégration de JAXB 2.0, pose de nombreux problèmes de compatibilité avec JAX-RPC 1.1.
C'est ainsi l'occasion pour Sun de repenser, mettre à jour, améliorer et surtout rationaliser cette brique logicielle en
utilisant les dernières nouveautés du langage lui-même, ainsi que les technologies développées en parallèle dans 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 spécification
•
JAXB home
•
JAXB (Java Web Services Tutorial)
-9-
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Pour le moment, JAXB permet juste de partir d'un Schéma XML pour générer les classes correspondantes (interfaces
à implémenter). JAXB 2.0 devrait palier à cette limitation en permettant de créer des schémas à partir de classes Java
déjà définies. Pour plus d'informations, regardez la JSR 222 : http://www.jcp.org/en/jsr/detail?id=222
•
SAAJ home
•
SAAJ (Java EE 5 Tutorial)
•
SAAJ documentation
•
Java API for XML Registries (JAXR)
•
JAXR (Chap. 10 du Java EE Tutorial)
•
XML Downloads & Specifications
•
Java Technology & Web Services
Pour note, JAXR est intégré au JWSDP (Java Web Services Developer Pack), mais vous pouvez aussi le téléchager
séparément (voir liens).
- 10 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
• Orienté Requête
• Orienté Composant
- 11 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 12 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
• page : les objets ne sont accessibles que dans la page où ils sont définis
• request : les objest sont accessibles pendant toute la durée de la requête
• session : les objets sont accessibles pendant toute la durée de la session
• application : les objest sont accessibles pendant toute la durée de vie de l'application et dans l'application
complète
- 13 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 14 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
• GET est restreint au niveau de la taille des paramètres envoyés au serveur. Cela veut dire qu'il est, la plupart du
temps, préférable d'envoyer des données avec la méthode POST .
• En envoyant des données par l'intermédiaire de GET évoque également une question concernant la sécurité
puisqu'elles sont ajoutées à la suite de l'URL. Pour cette raison il est plus prudent d'utiliser la méthode POST
pour envoyer des données au serveur.
Une autre façon de faire est de configurer l'encodage au niveau du fichier web.xml au moyen d'un Filter :
<filter>
<filter-name>Character Encoding</filter-name>
<filter-class>chemin.de.ton.package.CharsetFilter</filter-class>
</filter>
- 15 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<filter-mapping>
<filter-name>Character Encoding</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
/**
* 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() {}
}
• page :
Dans cet exemple, le Bean est instancié comme une variable locale est n'est donc pas partageable entre différentes
servlets.
- 16 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
• request :
Dans cet exemple, le Bean instancié sera accessible pendant toute la durée de la requête
com.developpez.beans.MyBean myBean =
(com.developpez.beans.MyBean) request.getAttribute("myBean");
if (myBean == null) {
myBean = new com.developpez.beans.MyBean();
request.setAttribute("myBean", myBean);
}
• session :
Dans cet exemple, lorsque le Bean est instancié il est placé dans la session actuelle.
• 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 présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<session-config>
<session-timeout>60</session-timeout>
</session-config>
request.getSession().setMaxInactiveInterval(int);
<servlet>
<servlet-name>maServlet</servlet-name>
<display-name>Ma Servlet</display-name>
<description>Ce que fait ma servlet</description>
<servlet-class>com.servlet.MaServlet</servlet-class>
<init-param>
<param-name>MON_PARAM</param-name>
<param-value>Bonjour</param-value>
</init-param>
</servlet>
Puis dans le code de votre servlet, utilisez ceci pour récupérer la valeur de MON_PARAM
getInitParameter("MON_PARAM");
- 18 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Si vous désirez mettre plus de paramétres, il suffit d'ajouter des déclarations <init-param> comme ceci
<servlet>
<servlet-name>maServlet</servlet-name>
<display-name>Ma Servlet</display-name>
<description>Ma Servlet</description>
<servlet-class>com.servlet.MaServlet</servlet-class>
<init-param>
<param-name>MON_PARAM</param-name>
<param-value>Bonjour</param-value>
</init-param>
<init-param>
<param-name>MON_PARAM_2</param-name>
<param-value>Bonjour</param-value>
</init-param>
</servlet>
Si vous désirez mettre des paramètres de manière globale afin de pouvoir les récupérer dans toutes les servlets, il suffit
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 récupérer le contexte de la servlet et appeler la méthode getInitParameter
comme la manière précédente pour récupérer la valeur de Author
getServletContext().getInitParameter("MON_PARAM");
- 19 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Coté servlet
response.setContentType("application/download");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
try {
from = new BufferedInputStream(new FileInputStream(file), bufferSize * 2);
byte[] bufferFile = new byte[bufferSize];
for (int i = 0; ; i++) {
int len = from.read(bufferFile);
if (len < 0) break;
out.write(bufferFile, 0, len);
}
out.flush();
} finally {
try {
from.close();
} catch (Exception e) { }
try {
out.close();
} catch (Exception e) {}
}
time = (System.currentTimeMillis() - time) / 1000;
// seconds download
double kb = (file.length() * 1.0 / 1024);
- 20 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Comment faire pour gérer des actions à effectuer lors de la création ou suppression de session ?
Auteurs : Righetto Dominique ,
En implémentant l'interface HttpSessionListener comme ceci
package com.dvp.faq.javaee;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
Ensuite, il suffit de référencer le listener dans le fichier web.xml (sous la balise racine)
<web-app>
<listener>
<listener-class>
com.dvp.faq.javaee.MyHttpSessionListener
</listener-class
</listener>
</web-app>
Comment faire pour gérer des actions à effectuer lors du démarrage ou de l'arrêt de l'application ?
Auteurs : Righetto Dominique ,
En implémentant l'interface ServletContextListener comme ceci
package com.dvp.faq.javaee;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
- 21 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Ensuite, il suffit de référencer le listener dans le fichier web.xml (sous la balise racine)
<web-app>
<listener>
<listener-class>
com.dvp.faq.javaee.MyHttpServletContextListener
</listener-class>
</listener>
</web-app>
Comment faire apparaître 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 données qu'il reçoit. Dans le cas d'un
fichier PDF par exemple, les données 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 réponse :
response.setContentType("application/pdf");
Dans ce cas-là, le navigateur comprendra que le fichier retourné est un fichier PDF et agira en conséquence.
Il est également possible de modifier le nom du fichier en ajoutant une entête à la réponse :
response.setHeader("Content-disposition", "filename=monNomDeFichier");
Comment accéder à une ressource dans l'arborescence d'une application web depuis une servlet ?
Auteurs : fabszn ,
Pour accéder à 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 paramètre sous forme d'un chemin
relatif.
- 22 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
clef1=hello World
ROOT_WEB_APP
___files
______test.properties
___WEB-INF
if(path!=null){
in = new FileInputStream(path);
}
arg1.setContentType("text/html");
Writer writer = arg1.getWriter();
writer.write("Résultat : "+result);
writer.flush();
}
}
Remarque : Le chemin relatif déterminé par la variable RELATIVE_PATH_FILE doit être relatif à la racine de
l'application web
- 23 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
La méthode getResourcePaths() permet de lister tous les fichiers contenu dans l'application web.
Comment donner un type MIME standard compréhensible par tous les navigateurs ?
Auteurs : Jack Huser ,
Certains types MIME (Content-Type) ne sont pas reconnus par tous les navigateurs, il est possible de passer par un
type MIME Standard que tout navigateur comprend :
response.setContentType ("application/octet-stream");
response.setHeader ("Content-Disposition", "attachment; filename=nom_du_fichier");
// Utilisation du PageContext
} finally {
// Libération du PageContext
jspFactoty.releasePageContext(pageContext);
}
- 24 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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'idée est de fournir un service avec des EJB stateless qui vont vous fournir
les service qui vous intéressent (Lecture/création/modification/suppression ... d'un objet). Cet EJB utilise des Entity en
interne pour faire les opérations, et créer des classes de transport (avec uniquement les attributs + get/set), cette classe
doit implémenter Serializable pour pouvoir passer sur RMI/IIOP. C'est cette classe que l'on appelle Transfer Object
L'avantage de ce modèle, 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 théorique.
Entity Bean L'interface Local
package com.societe.monserveur;
import javax.ejb.EJBLocalObject;
/**
* Classe d'accès à une entité.
* L'accès est local, cette classe n'est pas accessible depuis l'exterieur.
*/
public interface PersonneEJBCMP extends EJBLocalObject {
public java.lang.Integer getCodePersonne();
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;
Le Bean
package com.societe.monserveur;
import javax.ejb.CreateException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
/**
* Implémentation de l'entité CMP
*/
- 25 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
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;
L'interface Remote
package com.societe.monserveur;
- 26 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
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;
- 27 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
try {
PersonneEJBCMP personneEJBCMP = getCMPHome().findByPrimaryKey( codePersonne);
Personne obj = new Personne(personneEJBCMP.getCodePersonne(), personneEJBCMP.getNom());
return obj;
} catch (Exception ex) {
throw new EJBException(ex);
}
}
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 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é
*/
public static Personne findObject(Integer codePersonne) throws Exception {
return getFacade().findObject(codePersonne);
}
- 28 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
/**
* Geter / Seter
*/
public Integer getCodePersonne() {
return codePersonne;
}
/**
* Récupération 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;
//Modification de toto
toto.setNom("Titi");
toto.update();
//Suppression de toto
toto.delete();
L'avantage avec cette solution (EJB + VO) c'est que l'accès et les régles de gestion sont centralisés sur un seul serveur.
Si une autre application (back office) ou un autre serveur web, veut accèder à la même information, il pourra réutiliser
tout cela.
- 29 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
HttpSession getSession()
et
HttpSession getSession(boolean)
• à l'aide de cookies
• à l'aide re la réécriture d'URL
• à l'aide des sessions SSL en HTTPS
Cookies
A chaque session créée, 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 requête permettant ainsi au serveur d'identifier le client.
Voici un petit exemple permettant d'ajouter un cookie dans l'entête de la réponse.
- 30 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
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 réécriture d'URL
Réécriture d'URL
Par cette technique le serveur ajoute l'dentificateur de session à la fin de chaque URL des pages envoyées par celui-ci.
Mais malheureusement cette technique a un coût car le serveur doit effectuer une opération supplémentaire. Celui-ci
doit personnifier l'url en y incluant l'identifiant de session.
2 méthodes existent pour individualiser les URL:
encodeURL(String)
et
encodeRedirectURL(String)
Ces méthodes réécrivent l'URL uniquement si le client n'accepte pas les cookies. Dans l'autre cas les URL resteront
inchangées.
La 2è méthode est utilisée lorsque la servlet utilise la méthode
sendRedirect(String)
Exemple :
response.sendRedirect(response.encodeRedirectURL("maServlet");
Il nous suffit de récupérer la session courante. A cela près, qu'une session SSL est déterminé par les variables d'état
suivantes:
- 31 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 32 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Avec J2EE 1.4, les EL sont directement intégré dans le moteur JSP 2.0. Toutefois l'application doit obligatoirement être
déclaré comme une application Servlet 2.4 au minimum :
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-
app_2_4.xsd"
version="2.4">
Si ce n'est pas le cas les EL seront désactivées afin de ne pas compromettre le fonctionnement d'application J2EE
postérieur.
Il est toujours possible de désactiver les EL sur une page particulière en utilisant la directive page :
Il est également possible d'utiliser les EL avec une version antérieur 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 intègre une
gestion des EL. Attention toutefois, ces librairies ne sont pas concus pour être utilisées dans une application J2EE 1.4.
Dans ce cas il faut utiliser une version sans EL afin de les laisser au moteur JSP 2.0 (respectivement JSTL 1.1 et Struts).
RequestDispatcher rd = servletContext.getRequestDispatcher(jsp);
Ensuite, il faut configurer la requête. Pour cela, c'est simple, il faut simplement passer les attributs nécessaires à la page
avec la méthode setAttributes.
Après cela, il faut configurer l'objet response. Ici, on est obligé de créer notre propre classe de réponse pour pouvoir
écrire dans un String :
- 33 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
rd.forward(request, newResponse);
Avec ça, la variable monMessage contiendra le contenu HTML généré par la page JSP.
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/includes/header.jsp</include-prelude>
<include-coda>/includes/footer.jsp</include-coda>
</jsp-property-group>
</jsp-config>
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));
}
- 34 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<div class="requestParameters">
<%
en=request.getParameterNames();
while (en.hasMoreElements()) {
String name = (String) en.nextElement();
if(request.getParameter(name) == null) {
%>
<div>
<%=name%>=null
</div>
<%
} else {
%>
<div>
<%=name%>=<%=request.getParameter(name).toString()%>
</div>
<%
}
}
%>
</div>
<h1>Exception</h1>
- 35 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<div>
<%
Throwable th = pageContext.getException();
if(th != null) {
printRecursiveException(out,th);
}
%>
</div>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>
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.
• request : lorsqu'un navigateur envoie une requête vers le serveur, il est possible que celui-ci envoie un certain
nombre de paramètres.
Il existe deux sortes de paramètres:
• Les paramètres se trouvant dans l'URL comme par exemple http://www.monsite.com/path/de/ma/page?
param1=valeur1¶m2=valeur2
• Les paramètres de formulaire: ces dernier sont transmis dans le corps de la requête
• response : cet objet contient la réponse envoyée au client. La portée de cette instance est la page
• out : peut être employé dans les scriptlets pour écrire des données dans la page qui sera envoyée au client. La
portée de cette instance est la page
- 36 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
• session : cet objet contient, comme son nom l'indique, tous les objets relatif à la session
- 37 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 38 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > JSP > JSTL (Java Standard Tag Library) > Librairie de base
Comment afficher une expression?
Auteurs : adiGuba ,
Le tag <c:out/> permet d'évaluer une expression et de l'afficher dans la page JSP
Pour de plus amples informations sur les attributs disponibles pour ce tag
- 39 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
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 éléments:
• Le Tag Librarie Descriptor qui effectue le mapping entre les tags et les classes Java.
• Les classes Java implémentant les différents Tag (implémentant l'interface Tag , ou une de ses interfaces filles
IterationTag et BodyTag .
• Les classes Java implémentant TagExtraInfo afin d'apporter des informations supplémentaires sur les tags
(optionnel).
- 40 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Afin de pouvoir utiliser cette taglib dans un fichier JSP, il faut la déclarer avec la directive taglib .
Respectivement avec le code suivant :
ou
Toutefois, il est préférrable de ne pas utiliser ces notations sous cette forme.
En effet, étant donné que la directive taglib doit être présente sur toutes les pages JSP qui l'utilisent, les modifications
du nom du descripteur de taglib pourrait être longue et pénible.
Afin de faciliter la maintenance, il faut déclarer la taglib dans le fichier web.xml :
<![CDATA[<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 préfixé par le prefixe indiqué dans la directive taglib :
<![CDATA[<tag-prefix:nom-du-tag param="valeur"/>]]>
• Les méthodes setParent(Tag) et setPageContext(PageContext) sont renseignées, ainsi que d'éventuels attributs
présents dans le tag.
- 41 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
• La méthode doStartTag() est appelée. Son code de retour détermine l'affichage du contenu de la balise. Si le
retour vaut Tag.EVAL_BODY_INCLUDE , le corps est évalué et écrit dans le JspWriter de la page, mais il est
ignoré si il vaut Tag.SKIP_BODY . Si Tag.EVAL_BODY_INCLUDE est retourné alors que la balise n'a pas de
corps, il est ignoré.
• La méthode doEndTag() est appelée. Son code de retour détermine 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 méthode release() est appelée avant que l'objet ne soit rendu au garbage collector.
Attention toutefois, afin d'éviter trop d'allocation, les tags sont conservés en cache et réutilisés (tout comme les Servlet/
JSP)...
La classe javax.servlet.jsp.tagext.TagSupport propose une implémentation par défaut de l'interface Tag (et de son
interface fille IterationTag ).
- 42 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<jspversion>1.1</jspversion>
<shortname>name</shortname>
<uri></uri>
<info>Description de la taglib</info>
<tag>...</tag>
</taglib>
Dans un Jar, ce fichier doit se situer dans le répertoire META-INF avec le nom taglib.tld afin de pouvoir référencer
directement le fichier Jar.
<tag>
<name>name</name>
<tagclass>package.NameTag</tagclass>
<teiclass>package.NameTEI</teiclass>
<bodycontent>JSP</bodycontent>
<info>description</info>
<attribute>
<name>arg1</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
- 43 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
• rtexprvalue : true/false , indique si l'attribut peut être le résultat d'une expression ( ${bean} ou <%=bean
%> ) ou si il doit être une chaine statique (optionnel, défaut: false/valeur statique)
Explication:
• On étend TagSupport afin de bénéficier des implémentations par défaut des méthodes 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'implémentation par défaut 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 implémentation par défaut retourne Tag.EVAL_PAGE .
Notre descripteur de fichier complet ressemble à ceci :
Le fait de spécifier un bodycontent empty permet de lancer une exception à la compilation si le tag possède un contenu
quelconque...
Notre page JSP pourrait ressembler à ceci :
- 44 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<b><p:hello/></b>
</body>
</html>
Hello World !
Explication:
<tag>
<name>hello</name>
<tagclass>HelloTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>name</name>
</attribute>
</tag>
- 45 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<p:isPresent name="infoConnection">
[ Vous êtes en ligne ]
</p:isPresent>
- 46 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<% } %>
<tag>
<name>iterate</name>
<tagclass>IterateTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>count</name>
<required>true</required>
</attribute>
</tag>
Explication :
Utilisation :</paragapah>
- 47 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<p:iterate count="3">
Cette ligne sera affichée trois fois
<br/></p:iterate>
Résultat:
Explication:
• Avant chaque évaluation du corps, on place dans le scope "page" un attribut "line" contenant un Integer
contenant le numéro de ligne courante.
• Dans doEndTag(), on supprime cet attribut afin de ne pas 'polluer' inutilement le reste de la page.
- 48 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Note : On peut également proposer un attribut supplémentaire afin de changer le nom de l'attribut stocké dans le scope
"page", ainsi que le scope à utiliser...
Utilisation :
<p:iterate count="3">
Ligne numéro <%=pageContext.getAttribute("line")%>
</p:iterate>
Résultat :
- 49 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Explication :
La méthode getVariableInfo() permet de définir des variables de script créée ou modifiée par le Tag . Elle retourne un
tableau de VariableInfo , qui est constitué de quatre éléments :
Attention, le nom de la variable de script doit correspondre à un élément dans un des scope (dans l'ordre: page, request,
session, application).
La variable de script est synchronisée avec son équivalent dans le scope, donc il peut y avoir un conflit si le même nom
est utilisé dans deux scopes différents.
Pour pouvoir utiliser cette variable, il faut ajouter la balise <tei-class> dans la définition 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 présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<p:iterate count="3">
Ligne numéro <%=line%> <br/>
</p:iterate>
Résultat :
Ligne numéro 0
Ligne numéro 1
Ligne numéro 2
Note :
La méthode getVariableInfo() possèdent un TagData qui permet d'accéder 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>
- 51 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
chaîne ainsi transformé... Note : Avec les JSP 1.2, BodyTag.EVAL_BODY_TAG est déprécié 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 indéniable 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 réellement changer
le formatage du corps dans on ensemble...
<p:htmlCode>
<h1>Example HTML</h1>
<p>
Code Java <%=new java.util.Date()%>
TagLib : <p:hello/>
</p>
</p:htmlCode>
donnera:
<h1>Example HTML</h1>
<p>
Code Java Fri Dec 10 17:45:19 CET 2004
TagLib : Hello World !
</p>
- 52 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Il faut spécifier que le corps du tag n'est pas du code JSP afin qu'il ne soit pas interprété.
Pour cela, on va créer un nouveau Tag htmlJspCode qui utilisera la même classe que htmlCode, mais en spécifiant que
le corps est dépendant du tag (il ne sera pas interprété) :
<tag>
<name>htmlJspCode</name>
<tagclass>HtmlCodeTag</tagclass>
<bodycontent>tagdependent</bodycontent>
</tag>
<p:htmlJspCode>
<h1>Example HTML</h1>
<p>
Code Java <%=new java.util.Date()>
TagLib : <p:hello/>
</p>
</p:htmlJspCode>
donnera:
<h1>Example HTML</h1>
<p>
Code Java <%=new java.util.Date()%>
TagLib : <p:hello/>
</p>
Ceci peut également permettre d'insérer d'autre langages de scripts (Perl, Php, Shell Script, etc.) au sein d'une page
JSP...
Concrètement, cela signifie que si un tag implémente TryCatchFinally, les appels aux méthodes doXXXX() des interfaces
Tag, IterationTag et BodyTag seront exécuté à l'intérieur d'un bloc try/catch de la forme suivante :
try {
...
tag.doStartTag();
...
tag.doInitBody();
...
tag.doAfterBody();
...
tag.doEndTag();
...
- 53 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
} catch (Throwable t) {
tag.doCatch(t);
} finally {
tag.doFinally();
}
<p:iterate count="3">
<p:htmlCode>
<p:hello/>
</p:htmlCode>
<p:htmlJspCode>
</p:htmlJspCode>
</p:iterate>
- 54 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 55 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 56 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 57 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 58 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 59 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 60 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 61 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
- 62 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Conteneurs Web > Tomcat
Comment ajouter le JAR de Jave EE dans Tomcat ?
Auteurs : paquerette ,
Si on ajoute j2ee.jar dans le répertoire WEB-INF/lib d'une application sur Tomcat, il va y avoir un problème 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.
<resource-ref>
<description>reference a la ressource BDD pour le pool</description>
<res-ref-name>jdbc/Le_Contexte</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
- 63 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<res-auth>Container</res-auth>
</resource-ref>
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/Le_Contexte");
} catch (Exception e) {
//Gestion de l'erreur
}
Connection conn=ds.getConnection();
Attention! Bien que cette FAQ mentionne cette possibilité, mettre la balise <context/> dans server.xml est fortement
déconseillé depuis tomcat 5.0! Préférez l'utilisation d'un fichier context autonome.
Pour en savoir plus sur la gestion d'un pool de connexion sous Tomcat
crossContext="true"
- 64 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
Depuis Tomcat 5.0, bien que ce soit toujours possible, il est déconseillé de mettre la balise <context> dans le fichier
server.xml. Dans la mesure du possible, il est bien plus prudent de gérer des fichiers context autonome.
<load-on-startup>1</load-on-startup>
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>
root cause
Ou enore le message
cause mere
Comment créer un compte utilisateur qui a les droits pour manager Tomcat ?
Auteurs : X-plode : Mike François ,
Afin de pouvoir créer un compte pour pouvoir accèder à l'interface de gestion du conteneur Web (afin de pouvoir retirer
les applications déployées par exemple), il vous suffit d'accèder directement à ./conf/tomcat-users.xml.
- 65 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/
La FAQ Java EE
<role rolename="manager"/>
Suite à ça, vous pourrez vous authentifier sous Tomcat afin de pouvoir gérer votre conteneur de servlets.
Comment utiliser une librairie DLL implementée par JNI sur un serveur TOMCAT ?
Auteurs : v1nc3kr0 ,
Il suffit tout simplement de rajouter l'option suivante :
- 66 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 - 2009 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, même 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://javaweb.developpez.com/faq/javaee/