您的位置:首页 > 编程语言 > ASP

ASP.NET的内置对象-Session

2014-09-24 11:42 375 查看
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() );
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: