sesiones - ¿Cómo se almacenan los objetos Java en HttpSession?
manejo de sesiones en spring mvc (4)
Así que estoy tratando de obtener un servlet para agregar un objeto Java a la sesión del usuario, cuando se solicita este servlet. Pero después de que el servlet redirecciona a la página siguiente y trato de recuperar el objeto, obtengo un objeto null
lugar.
Esto es lo que hago para agregar el objeto a la HttpSession (en el servlet):
request.setAttribute("object", obj);
Luego trato de recuperarlo por (en el JSP):
Object obj = request.getAttribute("object");
Entonces, ¿cómo conseguiría OBJ para no ser nulo?
Actualización: también he intentado esto sin nada:
HttpSession session = request.getSession();
session.setAttribute("object", obj);
con lo siguiente en el JSP:
Object obj = request.getSession().getAttribute("object");
Ambas formas aún devuelven nulo.
Agréguelo a la sesión , no a la solicitud .
HttpSession session = request.getSession();
session.setAttribute("object", object);
Además, no use scriptlets en el JSP. Use EL lugar; para acceder al object
todo lo que necesitas es ${object}
.
Una característica principal de la tecnología JSP versión 2.0 es su compatibilidad con un lenguaje de expresión (EL). Un lenguaje de expresión hace que sea posible acceder fácilmente a los datos de la aplicación almacenados en los componentes de JavaBeans. Por ejemplo, el lenguaje de expresión JSP permite que un autor de la página acceda a un bean con una sintaxis simple como
${name}
para una variable simple o${name.foo.bar}
para una propiedad anidada.
Aquí puede hacerlo utilizando HttpRequest
o HttpSession
. Y piensa que tu problema está dentro del JSP.
Si vas a usar el servlet interno haz lo siguiente,
Object obj = new Object();
session.setAttribute("object", obj);
o
HttpSession session = request.getSession();
Object obj = new Object();
session.setAttribute("object", obj);
y después de configurar su atributo mediante el uso de solicitud o sesión, use following para acceder a él en el JSP,
<%= request.getAttribute("object")%>
o
<%= session.getAttribute("object")%>
Entonces parece que tu problema está en el JSP.
Si desea usar scriptlets, debería ser el siguiente,
<%
Object obj = request.getSession().getAttribute("object");
out.print(obj);
%>
O puede usar expresiones de la siguiente manera
<%= session.getAttribute("object")%>
o puede usar EL como sigue, ${object}
o ${sessionScope.object}
El objeto de solicitud no es la sesión.
Desea usar el objeto de sesión para almacenar. La sesión se agrega a la solicitud y es si desea persistir los datos entre las solicitudes. La sesión se puede obtener de
HttpSession session = request.getSession(true);
Luego puede usar setAttribute o getAttribute en la sesión.
Un tutorial más actualizado sobre las sesiones de jsp es: http://courses.coreservlets.com/Course-Materials/pdf/csajsp2/08-Session-Tracking.pdf
No está agregando el objeto a la sesión, en cambio lo está agregando a la solicitud.
Lo que necesitas es:
HttpSession session = request.getSession();
session.setAttribute("MySessionVariable", param);
En Servlets tiene 4 ámbitos donde puede almacenar datos.
- Solicitud
- Sesión
- Solicitud
- Página
Asegúrate de entender esto. Para más información mira here