简介:
Session是什么呢?简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行 时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时 服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串。
概括目的:
1.Session是一种Web会话中的常用状态之一。
2.Session提供了一种把信息保存在服务器内存中的方式。他能储存任何数据类型,包含自定义对象。
3.每个客户端的Seesion是独立存储的。
4.在整个会话过程中,只要SessionID的cookie不丢失,都会保存Session信息的。
5.Session不能跨进程访问,只能由该会话的用户访问。应为提取Session数据的id标识是以Cookie的方式保存到访问者浏览器的缓存里的。
6.当会话终止,或过期时,服务器就清除Session对象。
7.Session常用于保存登录用户的ID.
8.Session保存的数据是跨页面全局型的。
代码:
//登陆
protected void Button1_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text == "admin" && this.TextBox2.Text == "123456")
{
//会话对象
Session["user"] = this.TextBox1.Text; //给Session赋值
Response.Write("<script>alert('登陆成功');</script>");
Response.Write("<script>location='index.aspx';</script>");
}
else
{
Response.Write("<script>alert('用户名或者密码错误')</script>");
}
}
原理:
一、session是怎么存储,提取的?
1.在服务器端有一个session池,用来存储每个用户提交session中的数据,Session 对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服务器建立连接的时候,服务器会给用户分发一个SessionID作为标识。 SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器, 这样Web服务器就能区分当前请求页面的是哪一个客户端,而这个SessionID是一cookie的方式保存的在客户端的内存中的,如果想要得到 Session池中的数据,服务器就会根据客户端提交的唯一SessionID标识给出相应的数据返回。
2.输入正确的账号密码,点击登录,页面就会输出 “admin --- 点击登录”
二、Session池中每个客户端的数据是怎么存储的?
1.存储在Session池中的数据是全局型的数据,可以跨页面访 问,每个SessionID中只存储唯一的数据,如:首先你这样设定:session["userName"]="admin",然后你在会话还没结束的 session还没过期的情况下,你又设定:session["userName"]="123";这样这个SessionID没变,然而Session 池中的数据则被覆盖。此时session["userName"]的值就是“123”,而不是其它。
2.Session池中的数据不能跨进程访问。如:打开 login.aspx页面写入session[“userName”]="admin";然后login页面不关闭,即此会话不结束,在这是你再在另外一 个浏览器中打开一个login.aspx页面则session["userName"]=null
3.输入账号密码,点击登录页面输出 “admin --- 点击登录” ,如果紧接着点击获取session按钮,则页面只输出"admin--- 点击获取session",如果页面不关闭,打开另外一个浏览器,点击获取session按钮,则页面没法应。