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://java.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://java.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 ,
-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://java.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://java.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://java.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://java.developpez.com/faq/javaee/
La FAQ Java EE
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://java.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://java.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://java.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://java.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://java.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://java.developpez.com/faq/javaee/
La FAQ Java EE
<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));
}
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
</head>
<body bgcolor="#FFFFFF">
<div>Une erreur s'est produite !</div>
<h1>Attribut de requete</h1>
<div class="requestAttributs">
<%
java.util.Enumeration en = request.getAttributeNames();
while (en.hasMoreElements()) {
String name = (String) en.nextElement();
if(request.getAttribute(name) == null) {
%>
<div>
<%=name%>=null
</div>
<%
} else {
%>
<div>
<%=name%>=<%=request.getAttribute(name).toString()%>
</div>
<%
}
}
%>
</div>
<div class="requestParameters">
<%
en=request.getParameterNames();
while (en.hasMoreElements()) {
String name = (String) en.nextElement();
if(request.getParameter(name) == null) {
%>
<div>
<%=name%>=null
</div>
<%
} else {
%>
<div>
<%=name%>=<%=request.getParameter(name).toString()%>
</div>
<%
}
}
%>
</div>
<h1>Exception</h1>
<div>
<%
Throwable th = pageContext.getException();
if(th != null) {
printRecursiveException(out,th);
}
%>
</div>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
printRecursiveException(out,parent);
out.println("</div>");
}
}
%>
</body>
</html>
<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
• session : cet objet contient, comme son nom l'indique, tous les objets relatif à la session
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
- 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://java.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
- 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://java.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).
- 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://java.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.
• 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é
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
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 ).
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
<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>
- 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://java.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 :
- 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://java.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>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
<p:isPresent name="infoConnection">
[ Vous êtes en ligne ]
</p:isPresent>
- 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://java.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>
- 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://java.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.
- 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://java.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 :
- 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://java.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>
<p:iterate count="3">
Ligne numéro <%=line%> <br/>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
</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>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
<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>
Il faut spécifier que le corps du tag n'est pas du code JSP afin qu'il ne soit pas interprété.
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
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();
...
} catch (Throwable t) {
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
tag.doCatch(t);
} finally {
tag.doFinally();
}
<p:iterate count="3">
<p:htmlCode>
<p:hello/>
</p:htmlCode>
<p:htmlJspCode>
</p:htmlJspCode>
</p:iterate>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
- 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://java.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.
- 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://java.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 différentes
servlets.
• 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);
}
• getInitParameter(java.lang.String name)
• Cette méthode retourne un String contenant le paramètre d'initialisation de la servlet correspondant au
paramètre name
• getInitParameterNames()
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
• Cette méthode retourne un objet Enumération contenant les paramètres d'initialisation de la servlet
• getServletContext()
• Cette méthode retourne une référence de l'interface ServletContext
C'est la méthode la plus valable car elle permet de partager l'information à travers l'application
• getServletName()
• Cette méthode retourne un String contenant le nom de l'instance de la servlet
<session-config>
<session-timeout>60</session-timeout>
</session-config>
request.getSession().setMaxInactiveInterval(int);
<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>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
</servlet>
root cause
Ou enore le message
cause mere
<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");
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>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
</servlet>
Coté servlet
response.setContentType("application/download");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
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);
Comment faire pour gérer des actions à effectuer lors de la création ou suppression de session ?
Auteurs : SEMPERE Benjamin ,
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>
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
<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 : SEMPERE Benjamin ,
En implémentant l'interface ServletContextListener comme ceci
package com.dvp.faq.javaee;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
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>
- 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://java.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.
- 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://java.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");
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Serveurs d'application > Glassfish
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Serveurs d'application > JBoss
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Serveurs d'application > Weblogic
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Serveurs d'application > JOnAS
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Serveurs d'application > Websphere
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
Sommaire > Conteneurs Web et Serveurs d'Application > Conteneurs Web > Tomcat
Comment gérer une connexion JDBC?
Auteurs : christopheJ ,
Il faut que le jar du JDBC soit dans les lib de Tomcat
Puis il y a trois étapes :
dans le server.xml
<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>
<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();
- 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://java.developpez.com/faq/javaee/
La FAQ Java EE
On peut aussi préciser 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 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"
- 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://java.developpez.com/faq/javaee/