English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Diferenças entre request.getSession(true, false, null) no Java

java request.getSession(true/false/diferenças entre (null)

Motivo da Demanda

Na realidade, frequentemente nos deparamos com o seguinte3Uso na prática:

HttpSession session = request.getSession();

HttpSession session = request.getSession(true);

HttpSession session = request.getSession(false);

Diferenças

1.       O documento oficial do Servlet diz:

public HttpSession getSession(boolean create)
Retorna a sessão atual do HttpSession associada a essa solicitação ou, se não há sessão atual e create é true, retorna uma nova sessão.
Se create for false e o pedido não tiver uma HttpSession válida, este método retorna null.
Para garantir que a sessão seja mantida corretamente, você deve chamar este método antes de comprometer a resposta. Se o Container estiver usando cookies para manter a integridade da sessão e for solicitado a criar uma nova sessão quando a resposta for comprometida, uma exceção IllegalStateException é lançada.
Parâmetros: true -para criar uma nova sessão para este pedido se necessário; false para retornar null se não houver uma sessão atual
Retorna: a HttpSession associada a este pedido ou null se create for false e o pedido não tiver uma sessão válida

2.  A tradução significa:

getSession(boolean create) significa retornar a HttpSession atual do reqeust, se a HttpSession atual do reqeust for null, quando create for true, cria uma nova sessão, caso contrário, retorna null;

Em resumo:

HttpServletRequest.getSession(true) é equivalente a HttpServletRequest.getSession(); 
HttpServletRequest.getSession(false) é equivalente a se a sessão atual não existir, retornar null; 

3.  Uso

Quando se armazena ou recupera informações de login na sessão, geralmente é recomendado: HttpSession session = request.getSession();

Quando você obtém informações de login da Session, geralmente é recomendado: HttpSession session = request.getSession(false);

4. Uma maneira mais concisa

Se seu projeto usar Spring, as operações de session ficam muito mais fáceis. Se precisar obter valores da Session, você pode usar a ferramenta WebUtils (org.springframework.web.util.WebUtils) com o método WebUtils.getSessionAttribute(HttpServletRequest request, String name); Veja o código-fonte:

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); 
}

Nota: Assert é uma ferramenta do pacote Spring, usada para avaliar operações de validação, neste exemplo usada para avaliar se reqeust está vazio, se estiver, lança exceção

Ao usar:

WebUtils.setSessionAttribute(request, "user", User);
User user = (User)WebUtils.getSessionAttribute(request, "user");

Agradecemos a leitura, esperamos que ajude a todos, obrigado pelo apoio ao nosso site!

Você Também Pode Gostar