Saltar al contenido

Servlets: setAttribute en HttpServletRequest vs setAttribute en HttpSession

Te recomendamos que revises esta resolución en un ambiente controlado antes de enviarlo a producción, un saludo.

Solución:

El uno establece un attribute en el alcance de la solicitud y el otro establece un attribute en el alcance de la sesión. La principal diferencia está en la vida útil del alcance. El alcance de la solicitud finaliza cuando finaliza la respuesta asociada. El alcance de la sesión finaliza cuando el cliente o el servidor ha agotado el tiempo de espera de la sesión. Cuando un osciloscopio finaliza, entonces todos sus attributes se enviarán a la papelera y no estarán disponibles en una solicitud o sesión diferente.

Utiliza el alcance de la solicitud para almacenar datos que deben ser específicos de la solicitud HTTP (por ejemplo, los resultados de la base de datos basados ​​en una solicitud específica, los mensajes de éxito / error, etc.). Utiliza el alcance de la sesión para almacenar datos que deben ser específicos de la sesión HTTP (por ejemplo, el usuario que inició sesión, la configuración del usuario, etc.). Todas las solicitudes del mismo cliente comparten la misma sesión (por lo tanto, todas las diferentes pestañas / ventanas del navegador dentro de la misma sesión de cliente compartirá la misma sesión de servidor).

Ver también:

  • Creación de instancias de servlet y variables de sesión

si usa httpServletRequest.setAttribute (); entonces attribute se vinculará a ese objeto de solicitud,

mientras en httpServletSession.setAttribute(); enlazará attr. en sesión.

Entonces, si desea que el alcance de esos datos se use en la sesión session o si necesita el alcance de esos datos solo para solicitar el uso request

Por ejemplo:

El nombre de usuario del usuario que inició sesión debe compartirse en todas las sesiones, así que manténgalo en session

mientras, el mensaje de error que le está dando al usuario mientras considera el caso de falla de autenticación, es necesario para esta solicitud solo después de eso, no lo necesitamos, así que manténgalo en request

Cuando estableces un attribute en el objeto Solicitud, la variable está disponible solo en el alcance de la solicitud. Se puede acceder a esa variable mediante otros jsp / resources que usted reenvía como parte de esta solicitud.

Mientras configura un attribute el alcance de la sesión estará disponible para todas las solicitudes en la sesión del usuario (a menos que lo elimine de la sesión).

Entonces, la principal diferencia que se reduce es el alcance / vida del attribute.

Siempre intente usar variables de alcance de solicitud a menos que necesite usarlas en la sesión de usuario, por ejemplo, como roles de usuario. Mantener más datos en la sesión con más usuarios concurrentes puede provocar problemas de memoria insuficiente. Además, si está utilizando el uso compartido de sesiones respaldado por una base de datos (como puede hacer en websphere), provocará problemas de rendimiento.

Puntuaciones y comentarios

Si te animas, tienes la libertad de dejar una reseña acerca de qué te ha impresionado de este tutorial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *