Red de conocimiento informático - Problemas con los teléfonos móviles - La diferencia entre los métodos comunes de sesión y solicitud y ServletContext

La diferencia entre los métodos comunes de sesión y solicitud y ServletContext

Primero, hablemos de cómo se utiliza la sesión. De hecho, es muy simple. El primer paso es obtener el objeto de sesión y el segundo paso es agregar, eliminar y obtener datos.

Primero hablemos de la duración de la sesión. La duración de la sesión se puede configurar en web.xml y la unidad es minutos. Por ejemplo, si la vida útil es de 120 minutos, si el mismo cliente no vuelve a visitarnos dentro de los 120 minutos posteriores a la última visita, se cerrará la sesión. Es decir, si el cliente visita dentro de los 120 minutos, continuará. durante otros 120 minutos.

Obtener la sesión:

Debido a que la sesión es administrada automáticamente por el servidor, la sesión no se puede obtener directamente mediante nueva, sino que se debe obtener mediante la solicitud o el método servletcontext, generalmente:

HttpSession session=request.getSession();

De esta forma obtendrás la sesión. Sabemos que diferentes clientes tienen sus propias sesiones. Esto no tiene ningún efecto siempre que utilicemos el método anterior, podemos obtener la sesión de la solicitud a la que se accede actualmente.

Uso de sesión:

El uso de sesión es similar al uso de Map, que almacena datos en forma de valor clave.

Los métodos principales son estos: setAttribute(nombre de cadena, valor de objeto), getAttribute(nombre de cadena), removeAttribute(nombre de cadena)

Estos tres métodos son para agregar (modificar)) valor, obtener valor, eliminar valor.

Existe otro método: invalidate() que se utiliza para cerrar la sesión del usuario. Después de cerrar la sesión, el usuario obtendrá una nueva sesión la próxima vez que envíe una solicitud.

A continuación, se enumeran todos los métodos de HttpSession: debido a la capacidad limitada del inglés, se conservan las explicaciones en inglés.

Objeto getAttribute(String name)

Devuelve el objeto vinculado con el nombre especificado en esta sesión, o nulo si no hay ningún objeto vinculado bajo el nombre

. Obtenga el valor del atributo con nombre como clave, el valor de retorno es objeto

Enumeración getAttributeNames()

Devuelve una enumeración de objetos String que contiene los nombres de todos los objetos vinculados a esta sesión

Obtiene un objeto iterador que contiene todas las claves

long getCreationTime()

Devuelve la hora en que se creó esta sesión, medida en milisegundos desde la medianoche del 1 de enero. 1970 GMT

Obtiene la hora de creación de esta sesión, el valor de retorno es una hora GMT larga

String getId()

Devuelve una cadena que contiene. identificador único asignado a esta sesión

Obtiene el jsessionid de esta sesión

long getLastAccessedTime()

Devuelve la última vez que el cliente envió una solicitud asociada con esto. sesión, como el número de milisegundos desde la medianoche del 1 de enero a las 1970 GMT, y marcado por la hora en que el contenedor recibió la solicitud.

Obtiene la hora del último acceso de este cliente. El valor de retorno es un tiempo GMT largo

int getMaxInactiveInterval()

Devuelve el intervalo de tiempo máximo, en segundos, que el contenedor de servlets mantendrá abierta esta sesión entre accesos de cliente <. /p>

p>

Obtenga el valor máximo de vida de la sesión. El valor de retorno es un int, la unidad son segundos.

ServletContext getServletContext()

Devuelve el ServletContext al que pertenece esta sesión

Obtiene el objeto ServletContext de este proyecto.

HttpSessionContext getSessionContext()

En desuso. A partir de la versión 2.1, este método está en desuso y no tiene reemplazo. Se eliminará en una versión futura de la API de Servlet de Java. p>

p>

Este método ha sido eliminado.

Objeto getValue(String name)

En desuso. A partir de la versión 2.2, este método se reemplaza por getAttribute(java.lang.String).

Este método. Ha sido reemplazado por el método getAttribute.

String[] getValueNames()

En desuso A partir de la versión 2.2, este método se reemplaza por getAttributeNames()

Este método ha sido reemplazado por getAttributeNames( ) método en su lugar.

void invalidate()

Invalida esta sesión y luego desvincula cualquier objeto vinculado a ella

Cierra sesión en esta sesión.

boolean isNew()

Devuelve verdadero si el cliente aún no conoce la sesión o si el cliente elige no unirse a la sesión

Cuando el. client Devuelve verdadero cuando el cliente aún no conoce el ID de la sesión o no solicita la sesión.

Esto suele ocurrir cuando el cliente accede a ella por primera vez.

void putValue(nombre de cadena, valor de objeto)

En desuso A partir de la versión 2.2, este método se reemplaza por setAttribute(java.lang.String, java.lang.Object)

Este método ha sido reemplazado por setAttribute

void removeAttribute(String name)

Elimina el objeto vinculado con el nombre especificado de esta sesión

<. p> Eliminar el valor con el nombre como clave.

void removeValue(String name)

En desuso. A partir de la versión 2.2, este método se reemplaza por removeAttribute(java.lang.String)

Este método tiene Reemplazado por el método removeAttribute.

void setAttribute(Nombre de cadena, Valor del objeto)

Vincula un objeto a esta sesión, usando el nombre especificado

Agrega un objeto con nombre como nombre. en la sesión Un conjunto de datos con clave como valor.

void setMaxInactiveInterval(intervalo int)

Especifica el tiempo, en segundos, entre las solicitudes del cliente antes de que el contenedor de servlets invalide esta sesión.

Establece la sesión actual. Vida útil, la unidad es segundos.

Ahora hablemos de las diferencias entre sesión, solicitud y ServletContext.

La sesión, la solicitud y ServletContext (también llamado aplicación) se utilizan para guardar y transferir datos.

La principal diferencia entre los tres reside en su alcance y ciclo de vida.

El tiempo del ciclo de vida de la sesión generalmente se establece en web.xml.

El ciclo de vida de la solicitud es de una visita. Es decir, el acceso de un cliente al servidor emitirá una solicitud, y esta solicitud continuará hasta que el programa del servidor complete todo el procesamiento de esta solicitud.

El ciclo de vida de ServletContext es el proceso completo de esta aplicación. Es decir, ServletContext se carga desde el momento en que se inicia la aplicación del servidor y luego se destruye cuando se apaga el servidor. La aplicación aquí puede entenderse como un proyecto durante el desarrollo, lo que significa que un proyecto tiene solo un ServletContext.

En términos de alcance,

El alcance de la sesión es para un cliente, y el objeto de la sesión y el cliente tienen una correspondencia uno a uno.

El alcance de la solicitud es una solicitud de un cliente.

El alcance de ServletContext es todo el proceso de inicio del servidor y está dirigido a todos los clientes.

En resumen, cuando un cliente accede al servidor durante el ciclo de vida de la sesión, obtiene la misma sesión cada vez. Cuando un cliente solicita acceder al servidor al mismo tiempo, no importa cuántos servlets y jsps estén involucrados en este acceso, el objeto de solicitud es el mismo. No importa cuántos clientes accedan a la misma aplicación de servidor, ServletContext es el mismo objeto cuando la aplicación de servidor procesa datos.