Necesito ayuda con mi proyecto final de carrera utilizando lenguaje de programación JSP y Java

Hola, estoy haciendo el proyecto fin de carrera con páginas JSP y servlets de Java, y necesito pasar una información desde una página a otra pero hay una entre medias. No se si me explico. Tengo una página de introducción de login y password, después mediante un servlet compruebo la validez de esos datos y si son válidos la redirecciono a otra página donde el usuario puede elegir otras opciones. Si elige la opción de consultar sus datos, con una página JSP quiero recuperar el login y el password que introdujo en la primera página para presentarle sus datos. He probado con Cookies pero me desaparece la Cookie de una página a otra y no dura hasta llegar a la página en que la necesito ¿Cómo puedo pasar datos entre páginas? ¿Cómo puedo solucionar mi problema?
Respuesta
1
Te comento:
Como tu bien dices, una de las formas de pasar información entre una página y otra es mediante las cookies, pero por alguna razón a ti no te funciona como debiera, esto se deberá seguramente a la forma en la que las has creado, pero no te preocupes, ya que una cookie se almacena en el cliente, y no todos los clientes quieren ver una cookie almacenada en su equipo...
Como consejo te diría que usases variables de sesión. Estas variables se almacenan en el servidor, por lo que es más limpio su manejo sin dejar rastros en el cliente, y ademas, el ámbito de las misma es la sesión, es decir, tendrás estas variables disponibles durante todo el tiempo que el usuario este conectado, este en la página que este, y se definen de una forma tan fácil como:
1.-Obtienes el identificador de la sesión
String id=session.getId
2.-Obtienes un valor almacenado en una variable de sesión
session.getValue("nombre la variable")
3.- POnes un nuevo valor en una variable de sesión
session.putValue("Nombre de variable",valor);
Otra forma en la que podrías hacerlo es mediante el uso de javaBeans, pero no se cuald e las formas te llama más la atención. Creo que es más sencillo el usar variables de sesión, pero si prefieres la otra opción házmelo saber y ya te lo explico con más detalle.
La propuesta que me haces me convence bastante, pero ¿para qué me sirve el Id de la sesión?.
Después, el getValue("nombre la variable") me lo propones, ¿para ver si hay alguna variable con el nombre que le quiero dar al valor que le quiero pasar y si es nulo, darle yo el nombre de la variable y el valor?
Parece ser que te he liado un poco, ya que te he dado los conceptos que necesitas, pero no en orden.
1.- El obtener el identificador de la sesión te sirve para identificar al usuario por si quieres almacenarlo en la base de datos, pero no es necesario que lo uses para este caso.
2.- El session. GetValue(), como bien dices, te da el valor que tienes almacenado en tu variable de sesión, pero lógicamente estará a NULL, hasta que le pongas un valor mediante el método session. Putvalue().
Nad más.

1 respuesta más de otro experto

Respuesta
1
Pues puedes solucionarlo e varias formas :).
* En primer lugar utilizando cookies como ya has hecho. Este sistema funciona, pero debes haber cometido un error de algun tipo. De todos modos no es recomendable que lo utilices, sobre todo si la información que vas a pasar es contraseña y usuario. Esto es asi porque dicha informacion sera enviada con cada peticion al servidor, lo que puede ser un agujero de seguridad.
* Otra posibilidad es guardar la informacion que desees como un atributo de la sesion. Dado que la sesion se almacena en el servidor esta info no viajara por la red, sino que sera almacenada, y accedida solo desde el servidor. Las sesiones serán diferentes para cada usuario que se conecte, de modo que cada usuario puede tener una serie de datos propios almacenados.
Para hacer esto cuentas con los siguientes elementos :
- HttpServletRequest.getSession() : Obtiene la sesion correspondiente a esta peticion.
- En la sesión, cuentas con
Object HttpSession.getAttribute(String nombre)
HttpSession.setAttribute(String nombre,Object Atributo)
Con estos puedes almacenar los datos que desees.
Por ejemplo, para tu caso. Para almacenar la informacion desde el servlet :
HttpSession sesion request.getSession();
sesion.setAttribute("login",request.getParameter("login"));
sesion.setAttribute("pass",request.getParameter("pass");
o incluso solo almacenar si la sesion se ha iniciado.
sesion.setAtribute("identificado",new Boolean(true));
Para recuperar esta inforamacion desde cualquier página puedes hacer (por ejemplo para el login que es una cadena) :
String login = (String)session.getAttribute("login");
* Hay más opciones, en caso de que no te sirva esta, dímelo y me extiendo más si hace falta :)
* Importante : Para que funcione cualquiera de ellas, cookies, atributo de sesion, etc. Es muy importante que las cookies esten habilitadas en el navegador. En caso de que no esten no funcionada de forma correcta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas