FAQ Java EEConsultez toutes les FAQ
Nombre d'auteurs : 27, nombre de questions : 85, dernière mise à jour : 3 mai 2015 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://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.
- Comment utiliser les EL (Expression Language) dans une page JSP ?
- Comment récupérer le code HTML généré par une page JSP ?
- Comment mettre un header et un footer à chaque JSP ?
- Comment afficher tous les paramètres d'une requête ?
- Comment afficher tous les attributs du scope request ?
- Créer sa propre page d'erreur ?
- Comment appliquer ma page d'erreur à toutes mes pages JSP ?
- Que sont les objets implicites ?
Cela dépend de la version de J2EE que vous utilisez :
Avec J2EE 1.4, les EL sont directement intégrées dans le moteur JSP 2.0. Toutefois, l'application doit obligatoirement être déclarée comme une application Servlet 2.4 au minimum :
Code xml : | Sélectionner tout |
1 2 3 4 | <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"> |
Il est toujours possible de désactiver les EL sur une page particulière en utilisant la directive page :
Code jsp : | Sélectionner tout |
<%@ page isELIgnored="false" %>
Il faut commencer par récupérer un RequestDispatcher qui va servir de wrapper pour la ressource (le fichier JSP en l'occurrence). Pour récupérer ce dispatcher, il faut passer le contexte de la servlet :
Code java : | Sélectionner tout |
RequestDispatcher rd = servletContext.getRequestDispatcher(jsp);
Après cela, il faut configurer l'objet response. Ici, on est obligé de créer notre propre classe de réponses pour pouvoir écrire dans un String :
Code java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class FictiveHttpServletResponse extends HttpServletResponseWrapper { private StringWriter replacementWriter; public FictiveHttpServletResponse(HttpServletResponse response) { super(response); replacementWriter = new StringWriter(); } public PrintWriter getWriter() throws IOException { return new PrintWriter(replacementWriter); } public String toString() { return replacementWriter.toString(); } } |
Code java : | Sélectionner tout |
1 2 3 4 5 | HttpServletResponse newResponse = new FictiveHttpServletResponse((HttpServletResponse) response); rd.forward(request, newResponse); String monMessage = newResponse.toString(); |
(si on est en JSP 2.0 (tomcat 5.0 par exemple))
dans web.xml
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 | <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> |
Code java : | Sélectionner tout |
1 2 3 4 5 6 | 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)); } |
Code java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | java.util.Enumeration en= request.getAttributeNames(); while (en.hasMoreElements()) { String name = (String) en.nextElement(); if(request.getAttribute(name) == null) { log.debug(name + "=NULL"); } else { log.debug(name + "=" + request.getAttribute(name).toString()); } } |
Voici la page d'erreur que l'on utilise. Elle n'est utile qu'en phase de développement.
Mais elle permet de déterminer rapidement les problèmes qui peuvent surgir.
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | <%@ page language="java" isErrorPage="true" %> <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>Page d'erreur</title> </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> <%! public void printRecursiveException(JspWriter out, Throwable th) throws java.io.IOException { out.println("<div>" + th.getClass().getName() + ":" + th.getMessage() + "</div>"); StackTraceElement ste; for(int x=0;x < th.getStackTrace().length;x++) { out.println("<div>" + th.getStackTrace()[x].toString() + "</div>"); } Throwable parent = th.getCause(); if(parent != null) { out.println("<div class=\"parentCause\">"); printRecursiveException(out,parent); out.println("</div>"); } } %> </body> </html> |
Code xml : | Sélectionner tout |
1 2 3 4 | <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.jsp</location> </error-page> |
Des objets sont dits implicites, car il n'est pas nécessaire de les déclarer ou de les initialiser.
Les objets le plus souvent utilisés sont :
- 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 par exemple http://www.monsite.com/path/de/ma/page?param1=valeur1¶m2=valeur2,
- les paramètres de formulaire : ces derniers 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 relatifs à la session.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.