第十节 16ASP.NetSession原理 简单

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AspNetSession1.aspx.cs" Inherits="AspNetSession1" %>

<!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>
    
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
            Text="设置Session" />
        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" 
            Text="读取Session值" />
    
    </div>
    </form>
</body>
</html>

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class AspNetSession1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //每次服务器处理Page_Load都会执行
        if (!IsPostBack) //直接进入的时候才给session里的value设置初值 
        {
            Session["第一个值"] = 0;
            Session["第二个值"] = 0;
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //session放入的值是一个object的对像,所以我们可以放入任意的数据
        Session["第一个值"] = DateTime.Now.ToString();
        Session["第二个值"] = 300;
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        string s1 = Convert.ToString(Session["第一个值"]);
        string s2 = Convert.ToString(Session["第二个值"]);

        Response.Write("s1:"+s1+", s2:"+s2);
    }
}

  

/* Session的原理
* private int i =0;
* 每次请求来的都会new一个新的实现了IHttpHandler接口的类"变量1"的实例进行处理,用完了就GC掉,所以不会保存上次的值
*
* Cookie不能存储过多信息,如果想保存大量的数据,可以保存一个Guid和Cookie中,然后在服务器中建立一个以Guid为Key,复杂数据为Value全局的Dictionary
* static字段对于不同用户也只有一份,因此用static现多用户共享数据,代码见备注
*
* ASP.net已经内置了session机制,把上面的例子用Asp.netsession重写,不要放太多的对像到session
* session会有超时销毁的机制,发帖(服各国器不可能知道浏览器是否在开着,什么时间关闭),发贴计时,在线时间统计
*
* 可以看到session的机制并不是httP协议规定的,是asp.net实现的,现在php,jsp等大部份服务端技术都实现了session,原理都差不多
*
* 案例,用session实现验证码

原文地址:https://www.cnblogs.com/xiangxiaodong/p/2405343.html