Servlets: setAttribute in HttpServletRequest vs setAttribute in der HttpSession
Was ist der Unterschied zwischen Methode setAttribute()
von HttpServletRequest
Klasse und setAttribute()
von HttpSession
Klasse?
Unter welchen Umständen werden Sie verwendet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den man setzt ein Attribut in den request-scope und die anderen setzt ein Attribut in der session scope. Der große Unterschied liegt in der Lebensdauer der Rahmen. Der request-scope endet, wenn die zugehörige Antwort beendet. Der Gültigkeitsbereich einer session endet, wenn die Sitzung wurde Zeitüberschreitung durch den client oder server. Wenn ein Rahmen endet, dann werden alle seine Attribute werden verwüstet, und Sie sind nicht in einer anderen Anfrage oder session.
Verwenden Sie den Anfrage-Bereich zum speichern von Daten, die spezifisch für das HTTP-request (z.B. die Datenbank die Ergebnisse basieren auf einer spezifischen Anforderung, dem Erfolg/Fehler Meldungen, usw.). Verwenden Sie den Gültigkeitsbereich einer session zum speichern von Daten, die spezifisch für die HTTP-Sitzung (zum Beispiel, den angemeldeten Benutzer, Benutzer-Einstellungen, etc). Alle Anfragen von dem gleichen client teilen sich die gleiche Sitzung (also alle verschiedenen browser-tabs/Fenster in der gleichen Sitzung hat dieselbe server-Sitzung).
Siehe auch:
wenn Sie httpServletRequest.setAttribute(); dann-Attribut gebunden, um das request-Objekt ,
während in
httpServletSession.setAttribute();
binden attr. in Sitzung.wenn Sie so wollen, den Umfang der Daten, die session verwenden
session
oder wenn Sie die Reichweite der Daten für Anfrage verwendenrequest
Zum Beispiel:
Benutzernamen der angemeldeten Benutzer freigegeben werden soll über die Sitzung, so halten Sie es in
session
während, Fehler-Nachricht, die Sie geben, um die Benutzer beim betrachten Authentifizierungsfehler Fall, seine benötigte für diese Anfrage nur nach, dass wir nicht brauchen, so halten Sie es in
request
Wenn Sie ein Attribut auf das Request-Objekt, die variable ist nur verfügbar, auf dem Umfang der Anfrage. Die variable zugegriffen werden kann, die von anderen jsp/Ressourcen, die Sie uns als Teil dieser Anforderung.
Während der Einstellung ein Attribut session-scope verfügbar sein wird, um alle Anforderungen in der Benutzer-session (es sei denn, Sie entfernen es von der Sitzung).
So den großen Unterschied, auf die es hinausläuft, ist der Umfang/das Leben des Attributs.
Immer versuchen, request-scope-Variablen, es sei denn, Sie verwenden müssen, um es über die Benutzer-Sitzung ex: wie Benutzer-Rollen. Halten Sie mehr Daten auf der Sitzung mit mehr gleichzeitigen Benutzern führen kann, zu einer out-of-memory-Probleme. Auch wenn Sie die session-sharing unterstützt durch eine Datenbank (wie Sie in websphere), wird es zu Leistungsproblemen führen.