Immer aktuelle session-Objekt in Java
Kann ich auf session-Objekt innerhalb einer Funktion, wo die request-Objekt ist nicht vorhanden?
Ich weiß, in Java Zugriff auf session, wie diese:
HttpSession session = request.getSession(true);
Aber was ist, wenn wir wollen, um access-Sitzung, wenn request-Objekt ist nicht vorhanden?
Ist es möglich? gibt es einen alternativen Weg, um session-Objekt?
Bearbeiten
Ich habe ein servlet
public class ABC extends HttpServlet
{
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException
{
..........
...........
myFun1(x,y,z);
}
private void myFun1(int x, int y,long z)
{
.........
myFun2(a,b);
}
private void myFun2(int a,String b)
{
.........
// Need Session here
}
}
Wenn Sie keinen besonderen Wunsch, wie würden Sie wissen, welche session zu bekommen? Es könnten mehrere live-Sitzungen in den Prozess.
Thnaks, werde ich gehen, die im Anfrage Objekt-Funktionen als zusätzlichen parameter.
Thnaks, werde ich gehen, die im Anfrage Objekt-Funktionen als zusätzlichen parameter.
InformationsquelleAutor Manjoor | 2010-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt davon ab, was du damit meinst "wenn request-Objekt ist nicht vorhanden". Sie könnte eine thread-lokale variable, die die "laufende Anfrage für diesen thread" früh im servlet oder was auch immer Sie ausführen (Sie haben nicht deutlich gemacht). Dann könnte man bei "die aktuelle Anforderung in diesem thread" von überall, und Holen Sie sich die Sitzung auf diese Weise. (Oder entlang der gleichen Linien, können Sie die aktuelle Sitzung anstelle der aktuellen Anfrage in die thread-lokale variable.)
Es ist nicht sehr hübsch, obwohl, und Sie haben Probleme, wenn Sie wollen, etwas zu tun in einem anderen thread. Übergabe der request-oder session-down-als Abhängigkeit ist im Allgemeinen sauberer.
InformationsquelleAutor Jon Skeet
Generell aber, wenn Sie wollen, um Zugriff auf die http-Sitzung von einem Ort, wo das request-Objekt nicht verfügbar ist, dann können Sie design-Probleme in Ihrer Anwendung, und Sie müssen neu zu überdenken und Bedenken, Schichtung etc.
InformationsquelleAutor cherouvim
Wenn Sie implementieren JSF Technologie in Ihrer Anwendung können Sie Zugriff auf alles, was durch den Aufruf;
Denn dies ist eine singleton-Instanz abgerufen, Sie können es überall in Ihrem Präsentations-Schicht.
Aber die Umsetzung von JSF ist wohl etwas overkill nur für diesen Zweck, da Sie wahrscheinlich haben, um eine Menge von änderungen in der Konfiguration und Präsentation Schichten, um Platz für es.
Sagte, dass, wenn Sie sich entschließen zu gehen, dass die Straße, können Sie auch darüber nachdenken, mit MyFaces, das ist eine fantastische API für die Verwendung von JSF in Ihre Anwendungen.
Vielen Dank Balus, ich war versucht es einfach zu halten, aber Sie sind völlig richtig.
InformationsquelleAutor Alasdair
übergabe-Anforderung-Objekt ist die Lösung,
InformationsquelleAutor sohilv
Haben wir zu konfigurieren listener vom Typ
HttpSessionListener
seine Methode wird aufgerufen, auf die Erstellungszeit der Sitzung und Ablenkung Zeit. Wenn Sie uns dies durch die Vorbereitung von Objekt dieser Klasse können Sie das Session-Objekt einfach...InformationsquelleAutor Pravin Kumar singh