Session
对象
Application
对象的作用域是全局的,而Session
对象用于将特定用户的信息存储在服务器的内存中,并且只针对单一网站使用者,不同的客户端无法互相访问。Session
对象在网站超时或者自主关掉浏览器时就会自动释放和关闭。
Session
对象的基本使用
与Application
对象相同,它也是通过键/值
对的方式来保存数据的,格式:
Session["varName"] = 值;
其中varName
为变量名,例如将TextBox
控件的文本存储到Session["varName"]
中:
Session["varName"] = TextBox.Text;
反之,将Session["varName"]
的值存储到TextBox
中:
TextBox.Text = Session["varName"].ToString();
使用Session
对象保存用户的登录信息
某个用户登录一个网站,会保存其登录信息,这些信息是其他用户不可见的,并且不可访问,所以用Session
对象存储。
1、新建一个网站,在项目中创建一个Login.aspx
登录页面,添加以下控件:
或者也可以利用以下代码,添加这四个控件:
<table>
<tr><td>用户名:</td><td><asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>(wzq)</td></tr>
<tr><td>密码:</td><td><asp:TextBox ID="txtPwd" runat ="server" TextMode="Password"></asp:TextBox>(wzq)</td></tr>
<tr><td colspan="2">
<asp:Button ID="btnLogin" runat="server" Text="登录" OnClick="btnLogin_Click" />
<asp:Button ID="btnCancel" runat="server" Text="取消" />
</td></tr>
</table>
2、用户双击“登录”按钮,触发btnLogin_Click
事件,在该事件中记录用户名及用户登录的时间,并跳转到Welcome.aspx
页面(新建一个名为Welcome
的Web
窗体),代码如下:
protected void btnLogin_Click(object sender, EventArgs e)
{
if (txtUserName.Text == "wzq" && txtPwd.Text == "wzq")
{
Session["UserName"] = txtUserName.Text;
Session["LoginTime"] = DateTime.Now;
Response.Redirect("~/Welcome.aspx");
}
else
{
Response.Write("<script>alert('登录失败!请返回查找原因');location='Login.aspx'</script>");
}
}
3、在新建的Welcome.aspx
页面的Page_Load
方法中,显示接收的用户ID和他当时登录的时间:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("欢迎用户" + Session["UserName"].ToString() + "登录本系统<br>");
Response.Write("您登陆的时间是" + Session["LoginTime"].ToString());
}
执行程序,效果如下:
后台管理系统
设计一个登录页面,登录后在后台首页中使用Session
对象判断用户登录状态:如果成功,则绑定欢迎语并显示页面内容,否则返回登录页面。
效果展示:
Login.aspx
页面关键代码展示:
CSS:
<style type="text/css">
.auto-style1{
width:369px;
height:137px;
}
.auto-style2{
height:42px;
}
body{
width:100%;
height:100%;
background-color:aqua;
}
</style>
HTML:
<div>
<table align="center" class="auto-style1">
<tr style="text-align:center;">
<td Width="80" class="auto-style2">用户名</td>
<td Width="200" class ="auto-style2"><asp:TextBox ID="UserName" runat="server" Width="190"></asp:TextBox></td>
</tr>
<tr style="text-align:center;">
<td Width="80" class ="auto-style2">密 码</td>
<td Width="200"><asp:TextBox ID="UserPwd" TextMode="Password" runat="server" Width="190"></asp:TextBox></td>
</tr>
<tr style="text-align:center;"><td colspan="2">
<asp:Button ID="btnLogin" runat="server" Text="登录" Height="30px" Width="95px" OnClick="btnLogin_Click" /></td></tr>
</table>
</div>
Login.aspx.cs
代码展示:
protected void btnLogin_Click(object sender, EventArgs e)
{
string name = this.UserName.Text.Trim();
string pwd = this.UserPwd.Text.Trim();
if (name == "admin" && pwd == "admin")
{
Session["NickName"] = "管理员";
Response.Redirect("~/Welcome.aspx");
}
else
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Login", "alert(\"用户名或密码错误,请重试\")", true);
}
}
Welcome.aspx
页面代码:
CSS
<style>
body{
margin:0px;
padding:0px;
}
#myhead{
height:40px;
line-height:40px;
background-color:aquamarine;
color:#fff;
font-size:14px;
}
table tr th{
height:30px;
}
table tr td{
height:25px;
text-align:center;
}
</style>
HTML:
<div>
<div id="myhead" runat="server"></div>
<div id="mybody" runat="server">
<table align="center" width="100%" height="100%">
<tr><th>id</th><th>姓名</th><th>性别</th><th>年龄</th></tr>
<tr><td>1</td><td>张三</td><td>男</td><td>23</td></tr>
<tr><td>2</td><td>甲一</td><td>女</td><td>20</td></tr>
<tr><td>3</td><td>王五</td><td>女</td><td>21</td></tr>
<tr><td>4</td><td>李四</td><td>男</td><td>20</td></tr>
<tr><td>5</td><td>甲二</td><td>女</td><td>23</td></tr>
<tr><td>6</td><td>乙三</td><td>男</td><td>24</td></tr>
</table>
</div>
</div>
Welcome.aspx.cs
页面代码:
protected void Page_Load(object sender, EventArgs e)
{
object obj = Session["NickName"];
string NickName = null;
if (obj != null && (NickName = obj.ToString()) != "")
{
this.myhead.InnerHtml = "<span>&<nbsp>; 您好" + NickName + ",欢迎登录后台系统。</span>";
}
else
{
Response.Redirect("~/Login.aspx");
}
}