帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程 >
Session 物件
作者:佚名 发布时间:2005-04-02 来源:不详
 


    Session 对象的功能和Application 对象一样,都是用来储存跨网页程序的变量或是对象,但Session 对象和Application 对象变量有些特性不太一样。Session 对象变量只针对单一网页使用者,也就是说各个联机的机器有各自的Session 对象变量,不同的联机无法互相取。Application对象变量中止于停止IIS 服务,但是Session 对象变量终止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定Session 变量对象的有效时间时,Session 对象变量就会消失。Session 对象正确的对象类别名称是HttpSessionState,Application 对象一样是属于Page对象的成员;所以可以直接使用。Session 对象的使用方式和Application 对象变量相当类似,其使用语法如下:

Session("变量名")="内容"

    Session 也可以存放COM 组件,其使用语法如下:

Session("名称")=Server.CreateObject(ProgId)

    下表为Session 对象常用的属性:



    下表为Session 对象常用方法:



    Session 对象变量最常应用在存放使用者的状态。例如在使用者登入的页面上,我们可以将代表使用者登入网页的成功与否状态储存到一个变量中,然后在其它网页加入判断使用者是否登入成功与否的程序代码。如果登入成功才可以浏览某些网页,如果登入失败则限制或拒绝使用者的浏览。下列范例使用者必须成功通过登入网页EX16.aspx 的验证,才可以浏览EX17.aspx 网页。其验证的程序从会员数据表中判断使用者所填入的名称及密码是否正确,如下所示:

Sub btnSubmit_Click(Sender As Object,e As Eventargs)
Dim strConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:InetPubwwwrootCRCH08MyWeb.mdb"
Dim strComStr As String = "Select * From Members Where UserId = '" &
txtID.Text & "' And UserPwd = '" & txtPassword.Text & "'"
Dim dscA As ADODataSetCommand = New
ADODataSetCommand(strComStr,strConStr)
Dim dsDataSet As DataSet = New DataSet()
dscA.FillDataSet(dsDataSet, "Members")
If dsDataSet.Tables("Members").Rows.Count=1 Then
Session("Id")=txtID.Text
Session("IsPassed")="True"
Page.Navigate("EX17.aspx") '将连结导向至EX17.aspx
Else
Label1.Text="验证失败! 请重新输入"
End If
End Sub
Sub btnReset_Click(Sender As Object,e As Eventargs)
txtID.Text=""
txtPassword.Text=""
End Sub
</Script>
</Html>

    上述范例我们将使用者所输入的使用者名称及密码转成SQL 查询叙述,并存放于变量strComStr中;如下所示:

Dim strComStr As String = "Select * From Members Where UserId = '" & _
txtID.Text & "' And UserPwd = '" & txtPassword.Text & "'"

    倘若使用者输入的账号及密码分别为「rex」以及「sewq」,则strComStr 的内容为「Select * FromMembers Where UserId = 'rex' And UserPwd = 'sewq'」。由于SQL 的语法规定字符串必需被单引号「'」包围,所以请特别注意单引号的部分。我们将上述SQL 陈述的执行结果填入DataSet对象中,并且判断DataTable 对象Rows 集合的Count 属性,如果为1 就表示有找到该使用者;如下程序代码片段所示:

If dsDataSet.Tables("Members").Rows.Count=1 Then
Session("Id")=txtID.Text
Session("IsPassed")="True"
Page.Navigate("EX17.aspx") '将连结导向至EX17.aspx
Else
Label1.Text="验证失败! 请重新输入"
End If

    上述程序代码若使用者通过验证,则将Session 对象的Id 变量以及IsPassword 变量的值分别填入使用者所数入的账号以及True,然后将网页连结导向EX17.aspx。我们就可以在EX17.aspx在Page_Load 事件程序中取回Session 对象中IsPassed 变量,如下程序所示:

<Html>
您的输入已经通过验证.
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object,e As Eventargs)
If Session("IsPassed")=Nothing Or Session("IsPassed")<>"True" Then
Response.Redirect("EX16.aspx")
End If
End Sub
</Script>
</Html>

    如果我们通过验证,就可以成功的浏览EX17.aspx 网页。倘若我们尝试直接利用浏览器直接浏览EX17.aspx 网页时,因为Session("IsPassed") 变量内并没有内容,所以网页会自动导向EX16.aspx 登入网页。


 
 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·设定Session 对象变量的有效期限  (2005-04-02)
 ·Session 和Cookie 的关系  (2005-04-02)
 ·JSP由浅入深(9)—— JSP Session  (2005-04-02)
 ·Servlet中如何捕获Session事件  (2005-04-02)
 ·如何定义一个session 数组?  (2005-03-12)
 ·ASP内建对象Application 和 Sess  (2005-03-12)
 ·Session对象在各浏览器中的有效范  (2005-03-12)
 ·Global.asa 参考(三) - Session   (2005-03-12)
 ·浅谈session_onend的调试  (2005-03-12)
 ·让Session对象在不同域名下实现共  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统