libros - libro java web pdf
Preservar sesiĆ³n en Java con sendredirect (3)
Utilice RequestDispatcher
y configure su variable de nombre de usuario mediante request.setAttribute()
. En este caso, el despachador no creará una nueva solicitud, pero la misma solicitud se reenviará utilizando el método forward()
.
Estoy creando una aplicación de inicio de sesión en JAVA. Estoy haciendo la presentación en JSP y toda la lógica (conectividad de la base de datos) en Servlet [este no es un enfoque correcto, lo sé]. Compruebo el nombre de usuario Contraseña en Servlet y luego creo una variable de sesión. y agrega la sesión como esta
sess.setAttribute("username",oName);
Luego redirecciono al usuario a su página de inicio say student.jsp
response.sendRedirect("student.jsp");
Elimina la variable de sesión. Necesito una forma de preservar la variable de sesión y moverme a student.jsp. Intenté usar forwading, pero eso no funcionó.
RequestDispatcher dispatcher =
getServletContext()
.getRequestDispatcher("/student.jsp");
if (dispatcher != null) {
dispatcher.forward(request, response);
}
Reenvía la solicitud pero la dirección de la página no cambia a student.jsp, lo cual no es bueno. Cualquier ayuda en este sentido será apreciada Gracias
Para que la solicitud redirigida vuelva y se adjunte a la misma sesión, necesita una ID de sesión, que generalmente se transmite en una cookie JSESSIONID (u otro nombre) o en la URL como parámetro.
Esta cookie o parámetro de URL debe ser agregado por el contenedor de servlets y no debería tener que agregarlo usted mismo.
Si no ve la cookie en su navegador, y no está adjuntando el JSESSIONID a la URL, entonces está creando una nueva sesión con cada solicitud, y no está adjuntando a la misma sesión.
Intenta editar tu archivo tomcat context.xml
y reemplazar la etiqueta <Context>
por <Context useHttpOnly="false">
, esto me ayudó.