tutorial libros libro arquitectura java jsp java-ee servlets jspinclude

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ó.