La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Práctica 4 Estado de la sesión. Más sobre Eventos Universidad de Oviedo Comercio Electrónico.

Presentaciones similares


Presentación del tema: "Práctica 4 Estado de la sesión. Más sobre Eventos Universidad de Oviedo Comercio Electrónico."— Transcripción de la presentación:

1 Práctica 4 Estado de la sesión. Más sobre Eventos Universidad de Oviedo Comercio Electrónico

2 Comercio Electrónico (EUITIO) 2 IntroducciónIntroducción  Veremos los objetos RequestResponseCookies  Aprenderemos a mantener el estado de la sesión del usuario entre distintas peticiones de páginas Session

3 Comercio Electrónico (EUITIO) 3 El objeto Response  Permite enviar datos al cliente Normalmente, en las páginas en ASP tradicional, enviábamos contenido HTML al navegador a través de este objeto En ASP.NET sigue siendo posible hacerlo asíResponse.Write(string.Format( “La hora es: {0} ”, “La hora es: {0} ”, DateTime.Now.ToShortTimeString())); DateTime.Now.ToShortTimeString())); Pero no es lo habitual controles del lado del servidor –Lo normal es trabajar con controles del lado del servidor  Y generar el contenido dinámico en el código de la página, accediendo a las propiedades de dichos controles

4 Comercio Electrónico (EUITIO) 4 Redirigir a otra página  Éste sí sigue siendo otro uso habitual en ASP.NET  El objeto Response permite redirigir a otra página distinta En función de la lógica de la aplicación –Por ejemplo, para mostrar un error personalizado, para mostrar los detalles de un artículo seleccionado, para ver la cesta de la compra… Response.Redirect(“Bienvenido.aspx”); Response.Redirect(“Bienvenido.aspx”);

5 Comercio Electrónico (EUITIO) 5 CookiesCookies  Permiten mantener la sesión del usuario guardando datos en el cliente  Aunque no son lo bastante robustas como para guardar objetos complejos (conexiones a BD, objetos de negocio…) sí se pueden usar para guardar la información necesaria para luego crear esos objetos en el servidor Por ejemplo, mediante un identificador de usuario con el que luego recuperemos toda su información asociada mediante consultas a la base de datos

6 Comercio Electrónico (EUITIO) 6 Crear y enviar una ‘cookie’ HttpCookie cookie = new HttpCookie(“MiAplicacion”); cookie.Values.Add(“IDUsuario”, “1250”); Response.Cookies.Add(cookie);  Crearía una ‘cookie’ de sesión  Si quisiéramos una persistente: HttpCookie cookie = new HttpCookie(“MiAplicacion”); cookie.Expires = Convert.ToDateTime(“12/01/05 16:00”); cookie.Values.Add(“IDUsuario”, “1250”); Response.Cookies.Add(cookie);

7 Comercio Electrónico (EUITIO) 7 Leer el valor de una ‘cookie’ HttpCookie cookie = Request.Cookies[“MiAplicacion”]; if (cookie == null) // no se encontró la cookie // no se encontró la cookieelse{ string s = cookie.Values[“IDUsuario”].ToString(); string s = cookie.Values[“IDUsuario”].ToString(); if (s.Trim().Length == 0) if (s.Trim().Length == 0) // se encontró la cookie, pero está vacía // se encontró la cookie, pero está vacía else else // se encontró la cookie y tenía un valor // se encontró la cookie y tenía un valor}

8 Comercio Electrónico (EUITIO) 8 Colecciones QueryString y Form  Permiten recoger los parámetros enviados a una página.aspx mediante GET y POST, respectivamente Al igual que en ASP tradicional, o los Servlet/JSP, o CGI…  Son miembros de la clase HttpRequest Request Accesibles a través del objeto predefinido Request  No obstante, en ASP.NET no hay necesidad de leer las variables del formulario a través de estas colecciones Dado que estos valores están presentes en el código de la página como variables miembros (controles de ASP.NET) Lo normal es acceder a estos valores a través de los eventos generados –De hecho, en ASP.NET lo normal es que el formulario de la página se envíe a la misma página, no a otra distinta

9 Variables de sesión Veamos ahora otra forma de mantener la sesión sin usar ‘cookies’, por medio de la variable Session que provee ASP.NET y que almacena objetos en memoria en el servidor mientras dura la sesión.

10 Comercio Electrónico (EUITIO) 10 Variables de sesión  Permiten almacenar datos que persisten entre sucesivas peticiones de páginas Similar a las variables globales en una aplicación tradicional  ASP.NET provee el objeto predefinido Session  ¿Cómo funciona internamente? ID de sesión Cuando ASP.NET recibe la primera petición de página de un usuario, genera un ID de sesión único mediante un complejo algoritmo y lo guarda en una cookie en el navegador del cliente Session Para las siguientes peticiones, busca dicha cookie, recupera el ID de la sesión y lo usa para acceder al objeto Session de ese usuario –En ese objeto podemos guardar objetos y recuperar esa información en cualquier momento mientras dure la sesión

11 Comercio Electrónico (EUITIO) 11 Sección sessionState en el fichero Web.Config  En ese fichero puede configurarse el modo en que guarda ASP.NET la sesión del usuario Por ejemplo, podríamos decirle que no usase cookies –Si no, estamos obligando a que nuestros usuarios las tengan activadas (al menos las de sesión)  En principio, no necesitamos tocar nada ahí  Está dentro de la sección sessionState

12 Comercio Electrónico (EUITIO) 12 Guardar datos en sesión  Podemos hacerlo de una cualquiera de estas dos formas (hacen exactamente lo mismo): Session[“IDUsuario”] = CampoUsuario.Text;  o: Session.Add(“IDUsuario”, CampoUsuario.Text);  Podemos guardar un objeto de cualquier tipo object Es decir, un object

13 Comercio Electrónico (EUITIO) 13 Recuperar una variable de sesión  Basta con hacer lo siguiente: string s = (string) Session[“IDUsuario”];

14 Comercio Electrónico (EUITIO) 14 Ejercicio con variables de sesión  Crear una página que permita introducir un nombre en un campo de texto y que tenga un botón “Ir” Como la que se muestra a continuación

15 Comercio Electrónico (EUITIO) 15 Ejercicio: primera página

16 Comercio Electrónico (EUITIO) 16 ¿Qué pasa al pulsar el botón?  Se deberá llamar a otra página (recuérdese el Response.Redirect ) tras haber guardado previamente en el objeto Session el nombre introducido por el usuario  ¿Dónde hacemos eso? Click En el evento Click del botón ( ).aspx Basta con pulsar sobre el botón dos veces, en la vista de diseño de la página.aspx, y Visual Studio.NET creará el método para manejar el evento por nosotros  Esa otra página simplemente recuperará el valor del nombre almacenado y lo mostrará

17 Comercio Electrónico (EUITIO) 17 Resultado de pulsar el botón

18 Comercio Electrónico (EUITIO) 18 Algunas consideraciones  El objeto Session, en una aplicación Web empresarial, no debería usarse para guardar grandes cantidades de datos  En vez de eso, es mejor guardar sólo la información mínima necesaria para reconstruir esos objetos Por ejemplo, guardando una clave primaria que luego nos permita recuperar la información de la base de datos

19 Comercio Electrónico (EUITIO) 19 Otros métodos de Session  También tiene métodos para borrar variables de la sesión: RemoveRemoveAtRemoveAllClear  O para abandonar la sesión actual: Abandon

20 Más sobre eventos Aunque en la primera práctica sobre ASP.NET ya trabajamos con eventos, veremos ahora alguna cosa un poco más compleja: cómo diferenciar entre distintos generadores de un mismo evento.

21 Comercio Electrónico (EUITIO) 21 Averiguar quién generó el evento  Supongamos que queremos una lista de productos con un botón ( Button, LinkButton, ImageButton ) para mostrar los detalles de ese producto, o para añadirlo a la cesta de la compra… Si esos botones fuesen estáticos (añadidos en tiempo de diseño), no tendríamos ningún problema: Click –Programaríamos el evento Click de cada uno de ellos Pero, ¿qué pasa si son creados dinámicamente? –Es necesario distinguirlos (saber cuál se pulsó)

22 Comercio Electrónico (EUITIO) 22 CommandName y CommandArgument  Son dos propiedades que tienen los distintos tipos de botones string La primera es de tipo string object La segunda puede albergar cualquier tipo de objeto ( object )

23 Comercio Electrónico (EUITIO) 23 Evento Command  Además del evento Click, los botones tienen un evento Command, que también se lanza cuando son pulsados CommandEventArgsEventArgs La diferencia es que éste recibe un parámetro de tipo CommandEventArgs, en vez de EventArgs CommandNameCommandArgument A través de dicho parámetro podemos acceder a las propiedades CommandName y CommandArgument del botón que generó el evento private void BotonPulsado(object sender, System.Web.UI.WebControls.CommandEventArgs e) {... e.CommandName... e.CommandArgument }

24 Comercio Electrónico (EUITIO) 24 Ejemplo: DosBotones.aspx  Como prueba vamos a hacer una página que conste de dos botones, a los cuales vamos a asociarles el mismo evento Command  La página deberá mostrar qué botón se pulsó Click Esto es sólo para probar lo anterior, pero realmente éste es uno de esos casos en los que nos bastaría con tener un par de eventos Click, uno para cada botón, y programar cada uno de esos métodos manejadores como quisiéramos

25 Comercio Electrónico (EUITIO) 25 EjercicioEjercicio  Ahora vamos a ver un ejemplo más real, en el que los botones se generan dinámicamente  Sea una base de datos de artículos Por ejemplo, libros que tengan un código, un título, y un precio  Mediante un control Repeater, obtener un listado de los títulos de todos los libros y añadir algún tipo de botón al lado de cada título para “añadir el libro a la cesta de la compra” Label Realmente, lo que hará, por ahora, será simplemente mostrar el código del libro correspondiente en un control Label de la página  En este caso, se generará el evento Item_Command del control Repeater Púlsese dos veces sobre el control en la vista de diseño de la página.aspx y Visual Studio generará el método apropiado para responder a dicho evento

26 Comercio Electrónico (EUITIO) 26 Listado de los libros

27 Comercio Electrónico (EUITIO) 27 Al pulsar en uno…

28 Juntándolo todo…

29 Comercio Electrónico (EUITIO) 29 EjercicioEjercicio  Haciendo uso de lo que vimos hasta ahora, crear un pequeño sistema de registro de usuarios  Constará de: Base de datos de usuario –ID de usuario, Contraseña, Nombre, Apellidos Pantalla inicial –Pedirá el nombre de usuario y la contraseña –Al pulsar el botón se comprobará si existe un usuario con esa contraseña  Si es así, se mostrará la pantalla de bienvenida Guardando en sesión el ID de usuario  Si no, un pequeño mensaje de error en la misma página Pantalla de bienvenida –Accederá a la BD con el ID de usuario para mostrar su nombre

30 Comercio Electrónico (EUITIO) 30 Página inicial


Descargar ppt "Práctica 4 Estado de la sesión. Más sobre Eventos Universidad de Oviedo Comercio Electrónico."

Presentaciones similares


Anuncios Google