2010-05-12 14 views

Respuesta

20

hay una función request.getSession(boolean create)

Parámetros:
        create - fiel a crear una nueva sesión de esta petición si es necesario; falsa para devolver null si no hay ninguna sesión actual

Por lo tanto, usted puede simplemente pasar false a decir la getSession a devolver null si la sesión no existe.

+1

... mejor explicación que yo ... se refiere a documentos y se mantiene enfocado. –

2

HttpSession session = request.getSession (true); si (session.isNew()) {... hacer algo } else { ... hacer otra cosa }

la .getSession(true) dice java para crear una nueva sesión si no existe ninguno.

usted puede ser que, por supuesto, también lo hacen:

if(request.getSession(false) != null){ 
    HttpSession session = request.getSession(); 
} 

echar un vistazo a: http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html

aplausos, Jørgen

+0

Tendría que pasar 'false' a la segunda' .getSession() '. – aioobe

+0

lo siento ... Typo. corregido Gracias. – rakke

29

Si desea comprobar esta antes creación, y luego hacerlo :

HttpSession session = request.getSession(false); 
if (session == null) { 
    // Not created yet. Now do so yourself. 
    session = request.getSession(); 
} else { 
    // Already created. 
} 

Si no se preocupan por marcar esta después de la creación, entonces también puede hacerlo:

HttpSession session = request.getSession(); 
if (session.isNew()) { 
    // Freshly created. 
} else { 
    // Already created. 
} 

que guarda una línea y un boolean. El request.getSession() hace lo mismo que request.getSession(true).

0

Defina una clase, digamos SessionTimeoutIndicator, que implementa la interfaz javax.servlet.http.HttpSessionBindingListener. A continuación, cree un objeto SessionTimeoutIndicator y agréguelo a la sesión del usuario. Cuando se elimina la sesión, el motor Servlet llamará al método SessionTimeoutIndicator.valueUnbound(). A continuación, puede implementar valueUnbound() para realizar la operación requerida.

3
if(null == session.getAttribute("name")){ 
    // User is not logged in. 
}else{ 
    // User IS logged in. 
} 
2

Me gustaría agregar que si usted crea una nueva sesión para cada nuevo usuario que se conecte a su sitio web, entonces su rendimiento será duramente golpeado. Use request.getSession (false) para verificar si un usuario tiene una sesión. Con este método, no crea una nueva sesión si va a renderizar una vista en función de si un usuario está autenticado o no.

Cuestiones relacionadas