什么是session:
HTTP是一种无状态协议,它不能通过页面和客户端保持连接。Session提供了一个在服务器端保存信息的方案。他能支持任何类型对象和用户对象信息作为对象保存起来。Session为每一个客户端都独立地保存,这意味着Session数据存储着每个客户端的基础信息。
Session是作为ASP一共内建了7个对象,有Session、Application、Cookie、Response、Request、Server等。Session是保存在服务器端的用户变量。
用在什么场景:
可以在一个页面中对Session进行值,然后在另一个页面里访问它。
如何给session赋值(初始化):
第一种方法:
intuserId = 12345678;
string userName ="test";
string userPwd ="e10adc3949ba59abbe56e057f20f883e"
Session["userId"]= userId;
Session["userName"]= userName;
Session["userPwd"]= userPwd;
或者是使用Session的Add方法:
Session.Add("userId",userId);
Session.Add("userName",userName);
Session.Add("userPwd",userPwd);
如何获取session值:
lblUserName.text=Session["UserName"].tostring();
List<User>userList=(List<User>)Session["User"];//强制类型转换
如何对session判空:
获取session值赋值给其他变量之前,应该先判空,否则会报错。
我们已经知道session["UserName"]的数据类型是object。所以判空语句用if(Session["UserName"] ==null)来进行。
session失效时间设置:
在web.config中设置sessionState
session是否可用设置:
在.aspx页面中设置session失效时间是否可用。
session优缺点:
优点是:
1、能在整个应用中帮助维护用户状态和数据。
2、能让我们简单地实现存储任何类型的对象。
3、独立地保存客户端数据。
4、对于用户来说,Session是安全的、透明的。
缺点是:session会消耗服务器的内存资源,用户量大会影响性能。
session使用原理:
在发出请求的时候,服务器会生成一个理论上唯一的sessionID,一同响应到客户端,并用Cookie临时保存,当再发出请求时,再将此id一并发送到服务器,服务器会较此id是否在服务器上存在,如果存在说明不是第一次请求,否则,再创建一个session。
目前对原理还不太明白,先做做例子,再来说原理吧。
推荐两个 session 学习资料:
ASP.NET SessionState:https://www.youtube.com/watch?v=Zg1P97J12Rk
ASP.NET中的Session怎么正确使用:http://www.cr173.com/html/24780_1.html