新手站长论坛

 找回密码
 注册会员

QQ登录

只需一步,快速开始

查看: 12229|回复: 79

asp教程---ASP内建对象Application和Session 第八讲--2

  [复制链接]
发表于 2010-9-24 17:19 | 显示全部楼层 |阅读模式
与 Application 对象具有相近作用的另一个非常实用的 ASP 内建对象就是 Session。我们可以使用 Session 对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

   通过向客户程序发送唯一的 Cookie 可以管理服务器上的 Session 对象。当用户第一次请求 ASP 应用程序中的某个页面时,ASP 要检查 HTTP 头信息,查看是否有在报文中有名为 ASPSESSIONID 的 Cookie 发送过来,如果有,则服务器会启动新的会话,并为该会话生成一个全局唯一的值,在把这个值作为新 ASPSESSIONID Cookie 的值发送给客户端,正是使用这种 Cookie,可以访问存储在服务器上的属于客户程序的信息。Session 对象最常见的作用就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。另外其还经常被用在鉴别客户身份的程序中。要注意的是,会话状态仅在支持 cookie 的浏览器中保留,如果客户关闭了 Cookie 选项,Session 也就不能发挥作用了。

  一、属性

  1、SessionID

  SessionID 属性返回用户的会话标识。在创建会话时,服务器会为每一个会话生成一个单独的标识。会话标识以长整形数据类型返回。在很多情况下 SessionID 可以用于 WEB 页面注册统计。

  2、TimeOut

  Timeout 属性以分钟为单位为该应用程序的 Session 对象指定超时时限。如果用户在该超时时限之内不刷新或请求网页,则该会话将终止。

  二、方法

  Session 对象仅有一个方法,就是 Abandon,Abandon 方法删除所有存储在 Session 对象中的对象并释放这些对象的源。如果您未明确地调用 Abandon 方法,一旦会话超时,服务器将删除这些对象。当服务器处理完当前页时,下面示例将释放会话状态。

  < % Session.Abandon %>
  
  三、事件

  Session 对象有两个事件可用于在 Session 对象启动和释放是运行过程。

  1、Session_OnStart 事件在服务器创建新会话时发生。服务器在执行请求的页之前先处理该脚本。Session_OnStart 事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。

  尽管在 Session_OnStart 事件包含 Redirect 或 End 方法调用的情况下 Session 对象仍会保持,然而服务器将停止处理 Global.asa 文件并触发 Session_OnStart 事件的文件中的脚本。

  为了确保用户在打开某个特定的 Web 页时始终启动一个会话,就可以在 Session_OnStart 事件中调用 Redirect 方法。当用户进入应用程序时,服务器将为用户创建一个会话并处理 Session_OnStart 事件脚本。您可以将脚本包含在该事件中以便检查用户打开的页是不是启动页,如果不是,就指示用户调用 Response.Redirect 方法启动网页。程序如下 :

  < SCRIPT RUNAT=Server Language=VBScript>
  Sub Session_OnStart
  startPage = "/MyApp/StartHere.asp"
  currentPage = Request.ServerVariables("SCRIPT_NAME")
  if strcomp(currentPage,startPage,1) then
  Response.Redirect(startPage)
  end if
  End Sub
  < /SCRIPT>
  
  上述程序只能在支持 cookie 的浏览器中运行。因为不支持 cookie 的浏览器不能返回 SessionID cookie,所以,每当用户请求 Web 页时,服务器都会创建一个新会话。这样,对于每个请求服务器都将处理 Session_OnStart 脚本并将用户重定向到启动页中。

  2、Session_OnEnd 事件在会话被放弃或超时发生。

  关于使用 Session 对象需要注意的事项 Application 对象相近,请参照前文。

  会话可以通过以下三种方式启动 :

  1、一个新用户请求访问一个 URL,该 URL 标识了某个应用程序中的 .asp 文件,并且该应用程序的 Global.asa 文件包含 Session_OnStart 过程。

  2、用户在 Session 对象中存储了一个值。

  3、用户请求了一个应用程序的 .asp 文件,并且该应用程序的Global.asa 文件使用 < OBJECT>标签创建带有会话作用域的对象的实例。

  如果用户在指定时间内没有请求或刷新应用程序中的任何页,会话将自动结束。这段时间的默认值是 20 分钟。可以通过在 Internet 服务管理器中设置“应用程序选项”属性页中的“会话超时”属性改变应用程序的默认超时限制设置。应依据您的 Web 应用程序的要求和服务器的内存空间来设置此值。例如,如果您希望浏览您的 Web 应用程序的用户在每一页仅停留几分钟,就应该缩短会话的默认超时值。过长的会话超时值将导致打开的会话过多而耗尽您的服务器的内存资源。对于一个特定的会话,如果您想设置一个小于默认超时值的超时值,可以设置 Session 对象的 Timeout 属性。例如,下面这段脚本将超时值设置为 5 分钟。

  < % Session.Timeout = 5 %>
  
  当然你也可以设置一个大于默认设置的超时值,Session.Timeout 属性决定超时值。你还可以通过 Session 对象的 Abandon 方法显式结束一个会话。例如,在表格中提供一个“退出”按钮,将按钮的 ACTION 参数设置为包含下列命令的 .asp 文件的 URL。

  < % Session.Abandon %>
  
  今天,我们学习了两个在 WEB 页面特别是基于 WEB 的 BBS 或 Chat 上经常使用 ASP 内建对象,由于这两个对象在实际运用中很实用,因此在下一篇中作者将运用至此我们所学过的 4 个 ASP 内建对象,给大家演示一个完整的 ASP 应用程序,相信通过这个练习,能大大加深你对 ASP 应用程序的理解和掌握。敬请关注“动态网站设计十八般武艺 --ASP 篇 (9)”。
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-3-15 11:00 | 显示全部楼层
不错 学习中 支持
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-4-13 16:46 | 显示全部楼层
难度 挑战啊 呵呵
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-6-10 19:52 | 显示全部楼层
牛牛牛牛
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-6-10 20:55 | 显示全部楼层
一个鸡蛋去茶馆喝茶,结果它变成了茶叶蛋;
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-7-16 00:35 | 显示全部楼层
要成功先发疯
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-8-3 11:18 | 显示全部楼层
是转的把 ,说得不错 再看一次
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-8-11 15:07 | 显示全部楼层
(*^__^*) 嘻嘻……
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-8-21 23:48 | 显示全部楼层
路过顶一下。。。。。。
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-9-2 21:45 | 显示全部楼层
一直想学asp,写的很详细,高手真的很高!
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-9-5 14:42 | 显示全部楼层
分享了学了不少东西
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-9-14 04:30 | 显示全部楼层
各位坛友,我是新手 请大家多多关照小弟我啊
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-9-28 23:41 | 显示全部楼层
来学习下
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-9-29 18:48 | 显示全部楼层
说的好,一定回复~
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2011-9-30 17:34 | 显示全部楼层
学习了,不错
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2012-3-7 16:38 | 显示全部楼层
顶你一下吧
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2012-3-7 18:46 | 显示全部楼层
呵呵,加油!
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2012-3-7 19:01 | 显示全部楼层
你加油吧!!!
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2012-3-8 19:13 | 显示全部楼层
鉴定完毕!
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
发表于 2012-3-14 01:15 | 显示全部楼层
我来了~~~嘿嘿~~
欢迎你和我在新手站长论坛(http://www.cnzhanzhang.com)上相互交流和学习。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

基础教程 HTML(网页制作基础课) Dreamweaver(网页制作课程) CSS基础知识视频教程 Photoshop(作图基础课) 进阶教程 SEO教程 PHP教程 ASP教程 JavaScript
分步教程: 域名注册教程 空间购买教程 域名解析教程 网站备案教程 域名绑定教程 上传下载教程 思路方法: 菜鸟起步教程 通用建站思路 新手建站过程 本地免费空间
实例教程 Discuz(论坛) Phpwind(论坛) ECshop(网店) Shopex(网店) Dedecms(文章资讯) PHP168(文章资讯) 114la(网址导航) uchome(交友) Wordpress(博客) | 更多
特色板块: 新手站长交流(注册后即可发帖) 数据百度大课堂授课内容 cnzhanzhang学院 站长在线答疑(建站问题免费解答) 建站教程学习区 发外链 发广告 seo交流站长群

QQ|广告报价|Archiver|手机版| 新手站长网 ( 豫ICP备14019290号 )

Powered by Discuz! X3.2

© 2007-2016 新手站长论坛 Inc.

快速回复 返回顶部 返回列表