English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
java 中 request.getSession(true/false/der Unterschied zwischen (null)
Ein, Grund der Anforderungen
In der Realität stoßen wir oft auf das Folgende3Verwendung in:
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
HttpSession session = request.getSession(false);
Zwei, Unterschiede
1. Das offizielle Servlet-Dokument sagt:
public HttpSession getSession(boolean create)
Liefert die aktuelle HttpSession, die mit dieser Anfrage verknüpft ist, oder erstellt, falls keine aktuelle Sitzung vorhanden ist und create wahr ist, eine neue Sitzung.
Wenn create false ist und der Request keine gültige HttpSession hat, gibt diese Methode null zurück.
Um sicherzustellen, dass die Session ordnungsgemäß gewartet wird, muss dieses Verfahren vor dem Commit der Antwort aufgerufen werden. Wenn der Container Cookies verwendet, um die Integrität der Session zu erhalten und um eine neue Session zu erstellen, wenn die Antwort bestätigt wird, wird ein IllegalStateException ausgelöst.
Parameters: true -to create a new session for this request if necessary; false to return null ifthere's no current session
Returns: theHttpSession associated with this request or null if create is false and therequest has no valid session
2. Die Übersetzung bedeutet:
getSession(boolean create) bedeutet, die aktuelle HttpSession im aktuellen Request zurückzugeben. Wenn die aktuelle HttpSession im aktuellen Request null ist und create true ist, wird eine neue Session erstellt, sonst wird null zurückgegeben;
Kurz gesagt:
HttpServletRequest.getSession(true) entspricht HttpServletRequest.getSession(); HttpServletRequest.getSession(false) entspricht dem, falls die aktuelle Session nicht vorhanden ist, wird null zurückgegeben;
3. Verwenden
Wenn Logininformationen in die Session gespeichert oder abgerufen werden, wird in der Regel empfohlen: HttpSession session = request.getSession();
Wenn Sie Informationen aus der Session abrufen, wird in der Regel empfohlen: HttpSession session =request.getSession(false);
4. Ein einfacherer Weg
Wenn Sie im Projekt Spring verwenden, ist die Handhabung von Sessionen einfacher. Wenn Sie den Wert aus der Session abrufen müssen, können Sie das WebUtils-Tool (org.springframework.web.util.WebUtils) verwenden und die Methode WebUtils.getSessionAttribute(HttpServletRequestrequest, String name) aufrufen. Sehen Sie sich das Quellcode an:
public static Object getSessionAttribute(HttpServletRequest request, String name){ Assert.notNull(request, "Request muss nicht null sein"); HttpSession session = request.getSession(false); return (session != null63; session.getAttribute(name) : null); }
Hinweis: Assert ist ein Werkzeug im Spring-Paket, das zur Durchführung einiger Validierungsoperationen verwendet wird. In diesem Beispiel wird es verwendet, um zu überprüfen, ob reqeust leer ist und wirft einen Ausnahme, wenn es leer ist
Wenn Sie es verwenden:
WebUtils.setSessionAttribute(request, "user", User); User user = (User)WebUtils.getSessionAttribute(request, "user");
Vielen Dank für das Lesen, hoffentlich kann dies jedem helfen, danke für die Unterstützung dieser Seite!