Servlets includen
Eine weitere Möglichkeit, JSPs mit Servlets zu nutzen, ist das Servlet über den -Tag in der JSP einzubinden. Dieser Tag ruft intern ebenfalls den Request-Dipatcher auf, allerdings mit der Methode javax.servlet.RequestDispatcher#include(Request,Response).
Code: /bsp/kap3/redirect_3.jsp
Die JSP bleibt im Wesentlichen unverändert. Um die Seite zu sehen, rufen wir sie nun direkt auf. Wir vermeiden dadurch auf elegante Weise das eben diskutierte Problem mit den falschen Pfaden. Auch der Code des Servlets vereinfacht sich. Alle Zeilen, die den Request-Dispatcher nutzten, können nun wegfallen, da der Dispatcher ja nun von der JSP verwendet wird. In vielen Fällen wird dies die Methode Ihrer Wahl sein, wenn Sie Servlets mit JSP nutzen.
Bitte verwechseln Sie den <jsp:include page="..".> Tag, der den Request-Dispatcher kapselt, nicht mit dem <%@ include file=".."%> Tag, der in der JSP ebenfalls verwendet wird, um HTML aus dem Template einzufügen.
Mit dieser Architektur können Sie auch Daten von der JSP an das Servlet zur Verarbeitung übergeben und die verarbeiteten Daten dann wieder in der JSP ausgeben. Eine typische Tag - Sequenz am Anfang einer JSP ist beispielsweise:
<%-- Bean erzeugen. --%>
<jsp:useBean id="myBean" scope="request" class="apackage.MyClass"/>
<%-- Bean Properties aus dem Request initializieren. --%>
<jsp:setProperty name="myBean" property="*"/>
<%-- Servlet includen.
Das Servlet holt die Bean aus dem Request, nutzt die
initialisierten Werte und setzt Rückgabewerte in der Bean.
--%>
<jsp:include page="/my_servlet"/>
<%-- Rückgabewerte des Servlets nutzen. --%>
<jsp:getProperty name="myBean" property="aProperty"/>
Sie können mit einer solchen Architektur die Vorzüge der Beans mit der Stabilität der Servlets vereinen. In der JSP verwenden Sie wenig Java Code und haben einen guten Überblick, wie der Prozess abläuft.