RESPONDER UNA PREGUNTA

Si para responder la pregunta, crees necesario enviar un archivo adjunto, puedes hacerlo a traves del correo [email protected]

    Pregunta:  67697 - PROBLEMA CON EL MANEJO DE SESIONES EN JAVA
Autor:  Leopoldo Rodriguez Teresa
Hola compañeros,

Bueno, ahí va mi primer post en este foro...

Soy novato en Java, estoy intentando desarrollar una aplicación en la que he de manejar sesiones para comprobar el login de los usuarios previamente al acceso a una serie de páginas. Estoy pegándome con el manejo de sesiones y no consigo llegar a identificar la sesión que previamente he creado en un servlet. Para ello me he creado un JSP, para hacer pruebas con el manejo de sesiones.

El JSP que he creado es el siguiente:

<%@ page import = "java.util.Enumeration" session = "true"%>
<%@ page import = "javax.servlet.*"%>
<%@ page import = "java.sql.*"%>
<%
HttpSession sesion = request.getSession(false);
if(sesion != null) {
out.println("IdSesion: "+sesion.getId());
out.println("</br>");
// MOMENTO DE CREACION DE SESION
Date momento=new Date(sesion.getCreationTime());
out.println("Fecha creacion: "+momento);
out.println("</br>");
// ULTIMO ACCESO DE SESION
Date acceso=new Date(sesion.getLastAccessedTime());
out.println("Fecha ultimo acceso: "+acceso);
out.println("</br>");
// SABER SI LA SESION ES NUEVA O VIENE DE UNA YA CREADA
out.println("Sesion nueva: "+sesion.isNew());
out.println("</br>");
// OBTENER ATRIBUTOS DE LA SESION
Enumeration atributos = sesion.getAttributeNames();
while (atributos.hasMoreElements()) {
String name = (String) atributos.nextElement();
out.println(name + ": " + sesion.getAttribute(name));
out.println("</br>");
}
sesion.invalidate();
} else {
out.println("No hay sesion activa");
}
%>

Como veis, lo primero que hago es HttpSession sesion = request.getSession(false);. Esto, lo que creo que debería hacer es, si hay sesión abierta debería de tomar los datos de esa sesión, en el caso de que no exista sesión, no debería crear una nueva ya que le paso el parámetro false, correcto hasta ahí?

Posteriormente compruebo si hay sesión mediante if(sesion != null), en el caso de que existiera sesión debería ejecutar el contenido del if y si no hay ejecutar la part else y mostrar el mensaje de "No hay sesion activa".

Lo que me ocurre, es que siempre que ejecute este JSP me crea una sesión nueva y es lo que no entiendo porque paso el parámetro false. Si pasara true o ningún parámetro si entendería que crerara sesión porque hago sesion.invalidate() al final del if.

Alguien puede por favor explicarme por qué siempre me crea sesion aún con false. Seguro que debe de ser un fallo tonot, disculpad pero es la primera vez que me pego con manejo de sesiones.

Muchas gracias por vuestra colaboración.

Un saludo.


Nombre
Apellidos
Correo
Comentarios