Inhalt | Abbildung | Source | SCWCD | |||
|< | < | > | >| | Generated by CoCoDiL |
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. |
Die JSP Maschine legt in der Methode _jspService() automatisch einige Variablen an. Hier eine Übersicht der möglichen impliziten Variablen
Identifier name | Klasse oder Interface | Beschreibung |
application | interface javax.servlet.ServletContext | Zeigt auf die die Umgebung der Applikation |
session | interface javay.servlet.http.HttpSession | Beinhaltet die Session eines Benutzers |
request | interface javax.servlet.http.HttpServletRequest | Enthält die Anfrage auf die Seite |
response | interface javax.servlet.http.HttpServletResponse | Zum Senden der Antwort an den Client |
out | class javax.servlet.jsp.JspWriter | Enthält den Output Stream der aktuellen Seite |
page | class java.lang.Object | Ist die Servlet Instanz der aktuellen Seite |
pageContext | class javax.servlet.jsp.PageContext | Umgebung der aktuellen Seite |
config | interface javax.servlet.ServletConfig | Konfiguration eines Servlet |
exception | class java.lang.Throwable | Benutzt 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 } |
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
Methode | Beschreibung |
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.
Die folgende Abbildung verdeutlicht die Scopes einer JSP Seite
Es existieren die 4 folgenden Scope
Scope Name | Gültigkeit |
application | Gültig innerhalb einer Web-Application |
session | Limitiert zu einer Session eines einzelnen Benutzers |
request | Limitiert zu einer einzelnen Anfrage ggf. ueber mehrere Seiten |
page | Limitiert 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 | Source | SCWCD | |||
|< | < | > | >| | Generated by CoCoDiL |