Bonjour,
Je suis en train d'essayer d'utiliser l'interface RequestDispatcher dans un exemple tout bête afin d'essayer de comprendre comment cela fonctionne.
Ce que j'aimerais faire c'est afficher une page HTML depuis une servlet, puis en fin de page afficher un pied de page fournit par une autre servlet (je sais ça ne sert à rien et conceptuellement c'est nul ... c'est juste pour comprendre).
Voilà le code de ma servlet "principale" :
voici le code de ma Servlet devant me fournir le pied de page :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.*; import java.text.*; import java.lang.*; public class ServletPrincipal extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); RequestDispatcher dispatch = getServletContext().getRequestDispatcher("/entete"); out.println("<HTML><HEAD><TITLE> Exemple 4 - Dispatcher </TITLE></HEAD><BODY>"); out.println("<H4>Contenu de la page ...</H4>"); dispatch.include(request, response); out.println("</BODY></HTML>"); out.flush(); out.close(); } }
et voici mon fichier web.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.*; import java.text.*; import java.lang.*; public class MonDispatcher { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { output(request, response); } private void output(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("<H1> mon pied de page </h1>"); } }
Le résultat dans le navigateur est surprenant, le texte "Contenu de la page ..." s'affiche un grand nombre de fois mais jamais mon poed de page (voir la pièce jointe).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Exemple4-Servlet-Dispatcher</display-name> <servlet> <servlet-name>exemple4</servlet-name> <servlet-class>ServletPrincipal</servlet-class> </servlet> <!-- servlet "dispatcher" --> <servlet> <servlet-name>entete</servlet-name> <servlet-class>MonDispatcher</servlet-class> </servlet> <servlet-mapping> <servlet-name>exemple4</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
Auriez-vous une idée du problème ?
Merci de votre aide.
Partager