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.


SommaireJSPJSP Généralités (8)
précédent sommaire suivant
 

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">
Si ce n'est pas le cas, les EL seront désactivées afin de ne pas compromettre le fonctionnement d'applications J2EE postérieures.

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 est également possible d'utiliser les EL avec une version antérieure de J2EE, mais dans ce cas ce n'est pas le moteur JSP qui traitera les EL, mais une bibliothèque de tags compatible. Ainsi on peut utiliser la JSTL 1.0 ou Struts-EL qui intègrent une gestion des EL. Attention toutefois, ces bibliothèques ne sont pas conçues 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).

Mis à jour le 22 décembre 2009 adiGuba

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);
Ensuite, il faut configurer la requête. Pour cela, c'est simple, il faut 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é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(); 
	  } 
}
Ensuite, on peut récupérer le contenu de la page :

Code java : Sélectionner tout
1
2
3
4
5
HttpServletResponse newResponse = new FictiveHttpServletResponse((HttpServletResponse) response); 
  
rd.forward(request, newResponse); 
  
String monMessage = newResponse.toString();
Avec ça, la variable monMessage contiendra le HTML généré par la page JSP.

Mis à jour le 22 décembre 2009 zag

(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>

Mis à jour le 16 février 2005 lunatix

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

Mis à jour le 16 février 2005 syj

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

Mis à jour le 16 février 2005 syj

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>

Mis à jour le 16 février 2005 syj

Code xml : Sélectionner tout
1
2
3
4
<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 sûr que c'est le session-config et ressource-ref qui entourent directement cette balise.

Mis à jour le 16 février 2005 syj

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.

Mis à jour le 19 février 2005 Stessy

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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 © 2016 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.

 
Responsable bénévole de la rubrique Java Web : Mickael Baron -