El objeto Session, nos permite crear sesiones de usuarios, que tiene un tiempo de validez antes de expirar, por default su tiempo es de 20 minutos. El mismo tiene varios usos y no sólo el de crear sesiones, su uso es típico en aplicaciones con carritos de compra, en foro para establecer un tiempo mínimo para poder votar o volver a escribir un mensaje.
El mismo se almacena en el servidor, y es administrado por él. En el siguiente ejemplo escrito en C#veremos una similación precaria de un formulario que va cargando Productos en un ArrayList, y lo envía al servidor para almacenarlo en una variable de sesión, luego abriendo incluso otra ventana el mismo puede ser recuperado y listado. El diseño de la primer pagina sigue asi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sesion.aspx.cs" Inherits="Examples_Sesion" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <table style="width:100%;"> <tr> <td> Producto</td> </tr> <tr> <td> <asp:TextBox ID="txtProducto" runat="server"></asp:TextBox> <asp:Button ID="btnAgregar" runat="server" onclick="btnAgregar_Click" Text="Agregar" /> </td> </tr> </table> </div> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Examples/Productos.aspx">HyperLink</asp:HyperLink> </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using System; using System.Collections; public partial class Examples_Sesion : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnAgregar_Click(object sender, EventArgs e) { ArrayList productos; if (Session["s_producto"] != null) productos = (ArrayList)Session["s_producto"]; else productos = new ArrayList(); productos.Add(this.txtProducto.Text.ToString()); Session["s_producto"] = productos; } } |
En la primer página vemos un link quer redirecciona a esta página que construiremos ahora
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Productos.aspx.cs" Inherits="Examples_Productos" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using System; using System.Collections; public partial class Examples_Productos : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ArrayList productos = new ArrayList(); if (Session["s_producto"] != null) { productos = (ArrayList)Session["s_producto"]; foreach (string item in productos) Response.Write(item + "<br/>"); } else { Response.Write("No cargo ningun producto"); } } } |








en
en
en
Buenisimo el articulo, bien presentado
Tambien podes mencionar que se puede definir que los datos del objeto Session pueden ser guardados en otros proveedores de persistencia, especificamente SQLServer por defecto se guarda InProc (w3c.exe se incha como sapo jejeje) Eso para aplicaciones chicas y si tu servidor tiene poco RAM y mucho trafico ^_^
Un saludo GeekZero
Tenes razón, se me paso eso.. Me queda de tarea
como hacer eso y en que casos conviene usar uno u otro.
Saludos.-