17.21 Weiterleiten und Einbinden von Servlet-Inhalten
 
Mit einem RequestDispatcher-Objekt kann sich ein Servlet zu einem anderen Servlet verbinden, oder es können Ausgaben von anderen Servlets mit in den aktuellen Datenstrom eingebunden werden. Die angebotenen Funktionen vom Dispatcher sind include() und forward(). Um an den aktuellen RequestDispatcher zu gelangen, wird die Methode getServletDispatcher() aufgerufen, welche eine Methode der Klasse ServletContext ist. Die Web-Seite, die eingebunden ist oder an die weitergeleitet wird, ist durch eine URL spezifiziert, die die Methode getServletDispatcher() als Argument bekommt. Den Methoden forward() und include() werden dann request und response übergeben.
Beispiel Das Servlet FooterServlet generiert eine einfache Fußzeile, die ein anderes Servlet einbindet.
Listing 17.24
FooterServlet.java
Public class FooterServlet extends HttpServlet
{
public void service( HttpServletRequest request, HttpServletResponse
response )
throws ServletException, IOException
{
response.setContentType( "text/html" );
|
PrintWriter out = response.getWriter();
out.println( "<HR><CENTER>Copyright © 2001</CENTER>" );
}
}
|
Damit ein zweites Servlet die Ausgabe einbinden kann, inkludieren wir seine Ausgabe. Konzentrieren wir uns auf die service()-Methode:
public void service( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException
{
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
ServletContext con = getServletContext();
RequestDispatcher rq = con.getRequestDispatcher(
"FooterServlet" );
out.println( "Der Telefonmann meldet sich wieder" );
rq.include( request, response );
}
interface javax.servlet. RequestDispatcher
|
|
void forward( ServletRequest request,ServletResponse response )
throws ServletException, IOException
Die Anfrage wird an ein anderes Servlet, JSP oder eine andere HTML-Seite weitergeleitet. Eine ServletException kann auftreten, wenn das Ziel eine Ausnahme auslöst: |
|
void include( ServletRequest request,ServletResponse response )
throws ServletException, IOException
Bindet den Inhalt eines Servlets, JSP oder einer Web-Seite in den aktuellen Datenstrom (response) ein. Das ServletResponse-Objekt kann keinen Header setzen (um zum Beispiel den Statuscode zu ändern). Änderungen werden ignoriert. |
|