Hallo,
leider ist der Titel blöd gewählt, aber es fällt mir nichts besseres ein. Ich stell in einer JSP-File ein DOM-Dokumentenbaum mittels XSL-transformation. Nun möchte ich, über eine noch zu erstellende Toolbar, den Dokumentenbaum bearbeiten. Am liebsten würde ich das alles ohne Frames lösen, also in einer File mit für die Toolbar und für die Anzeige des Dokumentbaumes. Wie ist dabei nun das Vorgehen? Was läuft ab wenn ich bspw. einen neuen Node einfüge? Dann muss ich doch die Seite neu vom Server anfordern. Was passiert dabei mit den gesetzen Variablen und deren Werten?
Wäre für jeden Link, Tip, Codeschnipsel dankbar.
mfg Gregor
Hi.
…
Wie ist dabei nun das Vorgehen? Was läuft ab
wenn ich bspw. einen neuen Node einfüge? Dann muss ich doch
die Seite neu vom Server anfordern. Was passiert dabei mit den
gesetzen Variablen und deren Werten?
Generell gesehen ist http ein stateless Protokoll. Dh. du verlierst alle gesetzten Variablen, die du nicht explizit in der URL mitgibst (zB meineseite.jsp?param1=wert1¶m2=wert2)
Allerdings kannst du mit Hilfe deiner Servletengine diese Thematik etwas umgehen, indem du Variablen im Session-Objekt hinterlegst.
Die Vorgehensweise Beispielhaft:
// Die derzeitige Session holen -
// Sollte keine existieren, eine neue machen
javax.servlet.http.HttpSession session = getSession(true);
// Deine Variable aus der Session holen, bzw.
// hineinschreiben, falls nicht vorhanden
String value = "initialValue";
Object sessionValue = session.getAttribute("appValue");
if (sessionValue != null) {
if (sessionValue instanceof java.lang.String) value = (String)sessionValue();
} else {
session.setAttribute("appValue", value);
}
Nach deinen Operationen nicht vergessen, die jeweiligen Variablen wieder in die Session zu schreiben. Zusätzlich muß jeder Link, Jedes Form-Target und jede URL Applikationsintern, die an den Browser-Client weitergegeben wird encoded werden:
berechnen
wird zu
[">berechnen](%3C%25=response.encodeUrl()
Das ist nötig, dass deine Session über mehrere Client-Request nachverfolgt werden kann. Im Normalfall versucht deine Servletengine, ein Cookie beim Client zu setzten - Sollte das nicht funktionieren, wird eine ID an deine URLs angehängt (zB meineseite.jsp;jsessionid=123).
Die nachfolgende Seite findet das Cookie oder den Parameter und kann dem Client die richtige Session zuweisen. Solltest du das encodeUrl einmal vergessen, fehlt die sessionId und deine Seite bekommt eine neue, leere Session.
mfG,
J.P.Jarolim