ASP.NET的内置对象-Session

Session

    最灵活,最方便
    当用户访(浏览器实例)问web服务器时,会被分配一个SessionID
    会话状态 , 结束和超时会被自动释放 SessionID
    没有存储类型限制,存储大小只受内存限制
    在编程的时候为用户存储Session的时候,一般都在100k左右,否则服务器内存不够时数据会丢失

Session的工作机制
    客户端:分配到 SessionID -->Cookie
    服务器:客户端的数据 -->SessionID

Session的存储机制(了解即可)
SessionID由24个字符组成的随机字符串 存放于Cookie(默认)
Session 实际内容存放在Web服务器内存中 InProc(默认),也可存放在 StateServer(Windows服务进程中)/SQLServer数据表中

优缺点:
    1    web进程中/InProc,速度最快,最容易丢失
    2    状态服务器/StateServer,较快的速度,不易丢失
    3    SqlServer服务器/SqlServer,速度最慢,不会丢失
注意:在web.config文件里设置,<SessionState mode="InProc/StateServer/SQLServer" />

Session的操作:
新建
     Session["KeyName"] = ... ;
     // Session.Add("KeyName",objectValue);
    ( 可以使任何类型的数据 )
修改
     Session["KeyName"] = ... ;
    ( KeyName是唯一的,如果存在则覆盖,否则新建 )
存储
     String str = Session["str"].toString();
     int i= (int)Session["i"];
     TextBox txt = (TextBox)Session["txt"];
清除
     Session.Remove("KeyName");    //清除某个Session
     Session.Abandon();    //清除所有Session语句
     注意:  如果是在按钮中清除Session,由页面的生命周期我们知道,
                PageLoad事件中仍能读到清除之前的Session的值
                最简单的办法,清除后再一次获取 Response.redirect (当前url)
                相当于点击了两次按钮
遍历
     foreach ( String _key in Session.keys ) { ... }

如何获取当前Url
    调用Request的Url.LocalPath的属性: Request.Url.LocalPath.toString();

Session对象实例

登录界面的应用

流程:
    1,  对文本框校验是否有输入
            使用JavaScript 进行检测,在客户端完成,减轻服务端的压力
    2,  登录按钮事件
            设置 session["uid"]记录用户名
            用 Server.Transfer 跳转到登录后的页面 ( 隐藏Url )
    3, 退出登录按钮,清除 session["uid"],重定向到登录页面
    4, 检测是否存在 session["uid"],不存在的话强制退出到登录界面

相关代码:

login_aspx:
     <asp:Button ID="btn_Login" runat="server" Text="登录" onClientClick="return isempty()" />
( // onClientClick="return isempty(); 执行点击时,返回 JavaScript 的判断函数 isempty(),为true时继续执行服务端的 Click 事件,为false 时不执行服务端代码 )

login_aspx:
    <script type="text/javascript">
        function isempty() {
                var _id = document.getElementById("txt_id");
                if (_id.value == "") {
                    alert("请输入ID");
                    return false;
                } else {
                    return true;
                }
        }
    </script>

default.aspx:
    btn_Login_Click()
    {
        Session["uid"] = txt_id.Text;
        Server.Transfer("default.aspx");
    }

default.aspx.cs:
    Page_Load()
    {
        if( Session["uid"]==null ) Response.Redirect("login.aspx");
        else Response.Write("欢迎"+Session["uid"].ToString() );
    }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值