English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Differenza tra request.getSession(true/false/null) in java
Ragione di domanda
Nella realtà, spesso ci incontriamo con i seguenti tre modi di uso:
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
HttpSession session = request.getSession(false);
Differenza
1. Servlet ufficiale documento dice:
public HttpSession getSession(boolean create)
Restituisce l'HttpSession corrente associata a questa richiesta o, se non c'è una sessione corrente e create è vero, restituisce una nuova sessione.
Se create è falso e la richiesta non ha una HttpSession valida, questo metodo restituisce null.
Per assicurarsi che la sessione venga mantenuta correttamente, è necessario chiamare questo metodo prima di committere la risposta. Se il Container utilizza i cookie per mantenere l'integrità della sessione e viene richiesto di creare una nuova sessione quando la risposta viene committa, viene lanciata un'IllegalStateException.
Parametri: true - creare una nuova sessione per questa richiesta se necessario; false - restituire null se non c'è una sessione attuale
Restituisce: l'HttpSession associata a questa richiesta o null se create è false e la richiesta non ha una sessione valida
2. Il significato tradotto è:
getSession(boolean create) significa restituire l'HttpSession corrente del reqeust, se l'HttpSession corrente del reqeust è null e create è true, viene creata una nuova Sessione, altrimenti viene restituito null;
In sintesi:
HttpServletRequest.getSession(true) è equivalente a HttpServletRequest.getSession(); HttpServletRequest.getSession(false) è equivalente a se la Sessione attuale non esiste, restituisce null;
3. Usare
Quando si salvano o recuperano informazioni di login nel Session, si consiglia generalmente: HttpSession session = request.getSession();
Quando si ottengono informazioni di login dal Session, si consiglia generalmente: HttpSession session = request.getSession(false);
4. Un modo più semplice e conciso
Se il tuo progetto utilizza Spring, le operazioni di sessione sono molto più facili. Se devi recuperare un valore dalla sessione, puoi utilizzare lo strumento WebUtils (org.springframework.web.util.WebUtils) con il metodo WebUtils.getSessionAttribute(HttpServletRequest request, String name); Ecco il codice sorgente:
public static Object getSessionAttribute(HttpServletRequest request, String name){ Assert.notNull(request, "La richiesta non deve essere nulla"); HttpSession session = request.getSession(false); return (session != null ? session.getAttribute(name) : null); }
Nota: Assert è uno strumento della libreria Spring utilizzato per verificare alcune operazioni di validazione, in questo esempio viene utilizzato per verificare se reqeust è vuoto e, se lo è, lancia un'eccezione
Quando utilizzi:
WebUtils.setSessionAttribute(request, "user", User); User user = (User)WebUtils.getSessionAttribute(request, "user");
Grazie per aver letto, spero di essere stato d'aiuto, grazie per il supporto al nostro sito!