La cookie JSESSIONID se crea / envía cuando se crea la sesión. La sesión se crea cuando su código llama request.getSession()
o request.getSession(true)
por primera vez. Si solo desea obtener la sesión, pero no crearla si no existe, use request.getSession(false)
: esto le devolverá una sesión o null
. En este caso, no se crea una nueva sesión y no se envía la cookie JSESSIONID. (Esto también significa que la sesión no se crea necesariamente en la primera solicitud ... usted y su código tienen el control cuando se crea la sesión)
Las sesiones son por contexto:
SRV.7.3 Alcance de la sesión
Los objetos HttpSession deben tener un alcance a nivel de aplicación (o contexto de servlet). El mecanismo subyacente, como la cookie utilizada para establecer la sesión, puede ser el mismo para diferentes contextos, pero el objeto al que se hace referencia, incluidos los atributos en ese objeto, nunca debe ser compartido entre contextos por el contenedor.
( Especificación Servlet 2.4 )
Actualización: cada llamada a la página JSP crea implícitamente una nueva sesión si aún no hay sesión. Esto se puede desactivar con la session='false'
directiva de página, en cuyo caso la variable de sesión no está disponible en la página JSP.
request.getSession()
orequest.getSession(true)
, obtiene una sesión existente o nueva. Sin embargo, si su código llamarequest.getSession(false)
, entonces obtiene una sesión existente o nula, si no existe una sesión.Aquí hay información sobre una fuente más de la
JSESSIONID
cookie:Estaba depurando un código Java que se ejecuta en un servidor Tomcat. No estaba llamando
request.getSession()
explícitamente a ninguna parte de mi código, pero noté queJSESSIONID
todavía se estaba configurando una cookie.Finalmente eché un vistazo al código Java generado correspondiente a un JSP en el directorio de trabajo en Tomcat.
Parece que, te guste o no, si invocas un JSP desde un servlet, ¡
JSESSIONID
se creará!Agregado: Acabo de encontrar eso al agregar la siguiente directiva JSP:
puede deshabilitar la configuración de
JSESSIONID
un JSP.fuente
CORRECCIÓN: Vote por la respuesta de Peter Štibraný, ¡es más correcta y completa!
Un "JSESSIONID" es la identificación única de la sesión http - vea el javadoc aquí . Allí encontrarás la siguiente oración
Entonces, cuando accedes por primera vez a un sitio, se crea una nueva sesión y se vincula al SevletContext. Si implementa varias aplicaciones, la sesión no se comparte.
También puede invalidar la sesión actual y, por lo tanto, crear una nueva. Por ejemplo, al cambiar de http a https (después de iniciar sesión), es una muy buena idea crear una nueva sesión.
Espero que esto responda a su pregunta.
fuente
¡Tenga cuidado si su página incluye otros .jsp o .jspf (fragmento)! Si no configuras
en ellos también, la página principal terminará iniciando una nueva sesión y configurando la cookie JSESSIONID.
Para las páginas .jspf en particular, esto sucede si configuró su web.xml con dicho fragmento:
para habilitar scriptlets dentro de ellos.
fuente
Para los enlaces generados en un JSP con etiquetas personalizadas, tuve que usar
en el JSP
Y
en la acción Struts
fuente