zoukankan      html  css  js  c++  java
  • 第十节 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实现验证码

  • 相关阅读:
    开源数据库
    深度学习TensorFlow笔记——学习率
    深度学习TensorFlow笔记——损失函数
    深度学习TensorFlow笔记
    Oracle常用内置函数
    Oracle数据库自带表或者视图
    Oracle数据库查询所有关键字
    IP代理网址
    时间、日历(time、calendar、datatime)
    selenium常用操作
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2405343.html
Copyright © 2011-2022 走看看