Inhalt Abbildung PDF Source SCWCD
 |<    <     >    >|  Generated by CoCoDiL

8.5 Implizite JSP Variablen

Given a design goal, write JSP code using the appropriate implicit objects: (a) request, (b) response, (c) out, (d) session, (e) config, (f) application, (g) page, (h) pageContext, and (i) exception.

8.5.1 Übersicht

Die JSP Maschine legt in der Methode _jspService() automatisch einige Variablen an. Hier eine Übersicht der möglichen impliziten Variablen

Identifier nameKlasse oder InterfaceBeschreibung
applicationinterface javax.servlet.ServletContextZeigt auf die die Umgebung der Applikation
sessioninterface javay.servlet.http.HttpSessionBeinhaltet die Session eines Benutzers
requestinterface javax.servlet.http.HttpServletRequestEnthält die Anfrage auf die Seite
responseinterface javax.servlet.http.HttpServletResponseZum Senden der Antwort an den Client
outclass javax.servlet.jsp.JspWriterEnthält den Output Stream der aktuellen Seite
pageclass java.lang.ObjectIst die Servlet Instanz der aktuellen Seite
pageContextclass javax.servlet.jsp.PageContextUmgebung der aktuellen Seite
configinterface javax.servlet.ServletConfigKonfiguration eines Servlet
exceptionclass java.lang.ThrowableBenutzt für Fehlerbehandlung

Das folgende Listing zeigt wie diese impliziten Variablen in die Methode _jspService() eingebaut wird

public void _jspService(

          HttpServletRequest request,

          HttpServletResponse response

              throws java.io.IOException, ServletException

{

    ... other code

PageContext pageContext = null;

    HttpSession session = null;

    ServletContext application = null;

    ServletConfig config = null;

    JspWriter out = null;

    Object page = this;

... other code

pageContext = .... // getIt from Somewhere

    session = pageContext.getSession();

    application = pageContext.getServletContext();

    config = pageContext.getServletConfig();

    out = pageContext.getOutput()

... other code

}



8.5.2 Implizite Variablen

request, response

Dies sind HttpServletRequest bzw. HttpServletResponse Objekte die bei einer Anfrage, an die _jspService Methode übergeben werden. Sie haben genau dieselbe Funktionalität wie bei den Servlets.

out

Diese ist vom Typ javax.servlet.jsp.JspWriter. Man benutzt die print() bzw. println() Methode von out, um an die Antwort die zum Clienten gesendet wird Objekte bzw. Text anzuhaengen.JspWriter ist eine Unterklasse vom java.io.Writer Objekt und versteht all die print() bzw println() Methoden um z.B boolesche oder numerische Werte auszugeben.

session

Diese Variable existiert nicht falls mit einer page-direktive das Attribut session auf false gesetzt wird ( <%@ page session="true" %>)

Ansonsten besteht die implizite Variable session aus dem HTTP Session Objekt, das man auch durch den Befehl request.getSession() bekommt.

config

Diese Variable besteht aus dem ServletConfig() Objekt, mit dessen Hilfe man die Initialien Parameter aus der Deployment Descriptor Datei auslesen kann.

application

application entspricht dem javax.servlet.ServletContext Objekt der WebApplikation.

page

Page wird sehr selten verwendet, und entspricht der aktuellen Servlet Instanz. Es ist identisch mit

pageContext

pageContext enthält ein konkrete Unterklasse von javax.servlet.jsp.PageContext(). Diese hat folgende Aufgaben

MethodeBeschreibung
void include(String relativeURL)Die Ausgabe einer anderen Ressource wird in die aktuelle Seite eingebunden. Dies ist identisch mit aServletRequest.getRequestDispatcher().include()
void forward(String relativeURL)Leitet die Anfrage an eine andere Ressource weiter. Dies ist identisch mit aServletRequest.getRequestDispatcher().forward()

exception

Diese implizite Variable ist nur sichtbar falls die aktuelle Seite als errorPage deklariert ist. exception ist vom Typ java.lang.Throwable und enthält Informationen über die geworfene Exception.

8.5.3 Die Page Scopes

Die folgende Abbildung verdeutlicht die Scopes einer JSP Seite


Abb. 8.2: Scopes einer JSP

Es existieren die 4 folgenden Scope

Scope NameGültigkeit
applicationGültig innerhalb einer Web-Application
sessionLimitiert zu einer Session eines einzelnen Benutzers
requestLimitiert zu einer einzelnen Anfrage ggf. ueber mehrere Seiten
pageLimitiert zu einer einzelnen Seite und einer einzelnen Anfrage

Mit Hilfe dem PageContext Objekt lassen sich die Attribute für einen Scope setzen bzw. auslesen. Dazu sind einige Integer-Konstanten für die einzelnen Scopes definiert

Folgende Methoden dienen zum Setzen von Attributen in einem Scope

Es gibt auch Methoden zum Auffinden Attribute wenn man nicht weiss in welchen Scope sie definiert sind

Object findAttribut( String name )sucht ein Attriubut zuerst in page, dann request, dann session (falls gültig) dann application Scope.
int getAttributesScope( String name )Gibt den Scope zurück in der ein Attribut definiert ist
Inhalt Abbildung PDF Source SCWCD
 |<    <     >    >|  Generated by CoCoDiL