Ayuda JSP y Cookies

Iniciado por RedWarrior, 12 Diciembre 2013, 20:11 PM

0 Miembros y 1 Visitante están viendo este tema.

RedWarrior

Que tal amigos del foro!

tengo un problema con lo que es JSP y Cookies, les comento que es lo que sucede:

tengo el siguiente código el cual me ayuda ha recibir datos de un formulario
y  a poner esos datos en elementos ocultos.

<%
     
       String usr = request.getParameter("USER");
       String sess = request.getParameter("SESSION_ID");
       String name = request.getParameter("NOMBRE");
       String clave = request.getParameter("CLAVE");


       out.println("<form>");
       out.println("<input type='hidden' id='USER' name='USER' value='" + usr + "' />");
       out.println("<input type='hidden' id='NOMBRE' name='NOMBRE' value='" + name + "'>");
       out.println("</fonm>");
       
   %>


el problema de esto es que cuando refresco la pagina logicamente se pierden los datos por lo que opte por utilizar cookies,



<script language="javascript">

       function getCookie(c_name)
       {
           var c_value = document.cookie;
           var c_start = c_value.indexOf(" " + c_name + "=");
           if (c_start == -1)
           {
               c_start = c_value.indexOf(c_name + "=");
           }
           if (c_start == -1)
           {
               c_value = null;
           }
           else
           {
               c_start = c_value.indexOf("=", c_start) + 1;
               var c_end = c_value.indexOf(";", c_start);
               if (c_end == -1)
               {
                   c_end = c_value.length;
               }
               c_value = unescape(c_value.substring(c_start, c_end));
           }
           return c_value;
       }

       function setCookie(c_name, value, expire)
       {
           var exdate = new Date();
           exdate.setDate(exdate.getDate() + expire);
           var c_value = escape(value) + ((expire == null) ? "" : "; expires=" + expire.toGMTString());
           document.cookie = c_name + "=" + c_value;
       }
</script>




Estas son mis dos funciones get y set de las cookies hasta aqui todo bien puesto que no tengo problemas con estas dos funciones ya que si guardan y recogen las cookies.

el siguiente codigo es el que me ayuda a crear las cookies con los datos que quiero guardar y también a recoger esas coogies con los mismo datos



var expira = new Date();
   
  expira.setMinutes(expira.getMinutes() + 30);

    var username = getCookie("user");

       if (username == null || username == "")
       {
           username = document.getElementById("USER").value;

           if (username != null || username != "")
           {

               setCookie("user", username, expira);

           }

       }



como podran observar aca guardo una cookie que me ayuda a almacenar el nombre del usuario que entra dentro de el sistema.
esta cookie la recupero de la siguiente forma



<font style='font-size: 25px;'>Bienvenido</font><script languge="javascript">document.write("<label>" + getCookie("user") + getCookie("name") + "</label");</script>



La segunda cookie se llama name esta cookie la utilizo para almacenar el nombre del usuario y es aqui donde tengo el problema jejeje el codigo donde creo la cookie  es el siguiente

con el siguiente codigo tambien pierdo el valor de la cookie no al refrescar con f5, si no ma bien al dar enter en donde capturamos el url.


var name = getCookie("name");
         
       if (name != null || name != "")
       {
            name = document.getElementById("NOMBRE").value;
           
           if (name != null || name != "")
           {

               setCookie("name", name, expira);

           }

       }



lo tenia de la siguiente forma pero si lo pongo asi como en este segundo caso  no me guardara nada.
me parece que no se esta respetando la condicion



var name = getCookie("name");
         
       if (name == null || name == "")
       {
            name = document.getElementById("NOMBRE").value;
           
           if (name != null || name != "")
           {

               setCookie("name", name, expira);

           }

       }



con ayuda de un alert en esta segunda condicion mande el valor name cuando este recibe el valor de la cookie en la primera linea, me di cuenta que tenia un valor null entonces si el valor es null por que no entra a la condicion ?

Bueno amigos este es el problema que tengo seguire buscando y probando para dar una solucion, espero y alguien de ustedes me pueda ayudar.

El conocimiento humano pertenece al mundo

EFEX

Solo queria proponerte un modo mas facil de hacer esto con html5 quizas si te animas a utilizar localStorage(los datos intactos incluso si se cierra el navegador) o sessionStorage (los datos se eliminan al cerrar el navegador).

Para leer: http://rolandocaldas.com/html5/localstorage-en-html5
GITHUB 

RedWarrior

Me parece una muy buena propuesta todo aquello que represente una nueva idea es buena propuesta:

bueno con la novedad que he probado los localStorage y pasa los mismo si yo doy un refresh desde la url dando enter se pierden los datos este es el codigo


var valor= document.getElementById('NOMBRE').value;
       alert(valor); // lo imprimo para revisar que el valor sea diferente de nulo
   
   
if(valor != null ){ //si el valor obetnido es diferente de nulo entonces entra a la condicion
        localStorage.setItem('name', valor);// enviamos el valor al localstorage el cual tiene el nombre name con el valor que se recupera del input.
        valor = localStorage.getItem('name');// aca recupero el valor del localstorage
        alert(valor); // mensaje que muestra el valor de localstorage
    }



el problema se presenta al refrescar la pagina con un enter en la url, es cuando el valor del input se convierte en null y se supone que si es null no puede entrar a la condicion, el problema es que si entra cuando no deberia y es cuando el localstorage se convierte en null y pierde el valor anterior.
El conocimiento humano pertenece al mundo

RedWarrior

Pues bien amigos del foro buscando en internet me enocntre con HttpSession la cual nos ayuda a manejar sesiones en JSP, lo que hize fue crear una JSP que guardara las variables que necesito y posteriosmente me redirecciona a mi portal aca les dejo el codigo:

Encontre tambien que las cookies son un tanto inseguras puesto que puedes ser modificadas jejejeje.


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <%

        HttpSession Objsession = request.getSession(true); //Declaracion de Objeto Httpsession

        String name= request.getParameter("NOMBRE") ;//Valor resivido del form
        String usr= request.getParameter("USER");//Valor resivido del form
        Objsession.setAttribute("user", usr);valor// guardando valor obtenido en objeto HttpSession el cual tiene nombre de user
        Objsession.setAttribute("name", name);
       
response.sendRedirect("Portal.jsp"); // Redireccionamiento al Portal
        %>
       
    </head>
    <body>
        Cargando...
    </body>
</html>


Aca les muestro como recuperar los valores:

Estos tienen que se recuperados en otra JSP


font style='font-size: 25px;'>Bienvenido</font>
<%

HttpSession Objsession = request.getSession(false); //Declaramos Objeto tipo HttpSession
String names= (String)Objsession.getAttribute("name"); //Recuperamos los valores y los guardamos en varibles
String user = (String)Objsession.getAttribute("user");
out.println(names); // imprimiemos los resultados
out.println(user);

%>
           



Pues bueno eso es todo lo que hize  por el momento ya no he tenido problemas al momento de refrescar las paginas, ya solo es de afinar detalles con respecto a la salida de session ;)
El conocimiento humano pertenece al mundo