English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
java de request.getSession(true/false/différences entre (null)
Première section : raisons des besoins
Dans la vie réelle, nous rencontrons souvent ce qui suit3Utilisation en :
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
HttpSession session = request.getSession(false);
Deuxième section : différences
1. Le document officiel de Servlet dit :
public HttpSession getSession(boolean create)
Retourne la sessionHttp courante associée à cette requête ou, si il n'y a pas de session actuelle et que create est vrai, retourne une nouvelle session.
Si create est false et que la requête n'a pas de HttpSession valide, cette méthode retourne null.
Pour vous assurer que la session est correctement maintenue, vous devez appeler cette méthode avant de soumettre la réponse. Si le conteneur utilise des cookies pour maintenir l'intégrité de la session et est demandé de créer une nouvelle session lors de la soumission de la réponse, une IllegalStateException est lancée.
Parameters : true -à créer une nouvelle session pour cette requête si nécessaire ; false pour retourner null s'il n'y a pas de session actuelle
Returns : le HttpSession associé à cette requête ou null si create est false et que la requête n'a pas de session valide
2.
getSession(boolean create) signifie retourner le HttpSession actuel du reqeust, si le HttpSession actuel du reqeust est null, et si create est true, créer une nouvelle session, sinon retourner null;
En résumé :
HttpServletRequest.getSession(true) équivaut à HttpServletRequest.getSession(); HttpServletRequest.getSession(false) équivaut à si la session actuelle n'existe pas, retourne null;
3.
Lorsque vous accédez aux informations de connexion dans la session, il est généralement recommandé : HttpSession session = request.getSession();
Lorsque vous récupérez des informations de connexion à partir de la session, il est généralement recommandé : HttpSession session =request.getSession(false);
4. Une manière plus concise
Si vous utilisez Spring dans votre projet, les opérations sur la session sont beaucoup plus faciles. Si vous devez récupérer une valeur dans la session, vous pouvez utiliser la méthode WebUtils.getSessionAttribute(HttpServletRequestrequest, String name) de l'outil WebUtils (org.springframework.web.util.WebUtils), regardez le code source :
public static Object getSessionAttribute(HttpServletRequest request, String name){ Assert.notNull(request, "Request must not be null"); HttpSession session = request.getSession(false); return (session != null63; session.getAttribute(name) : null); }
Remarque : Assert est un outil du paquet Spring utilisé pour juger de certaines opérations de validation, dans cet exemple, il est utilisé pour juger si reqeust est vide, et s'il est vide, il lève une exception
Lorsque vous utilisez :
WebUtils.setSessionAttribute(request, "user", User); User user = (User)WebUtils.getSessionAttribute(request, "user");
Merci de lire, j'espère que cela pourra aider tout le monde, merci de votre soutien à ce site !