用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 程序开发教程 > ASP教程 > ASP基础教程 > 文章正文
ASP系列讲座(十九)管理会话
iTbulo.COM 2006-1-16 未知()


通过对 Session 对象中的命名项赋值,可将变量存储在 Session 对象中。例如,以下命令将两个新变量存储在 Session 对象中:

<%
Session("FirstName") = "Jeff"
Session("LastName") = "Smith"
%>
通过访问该命名项可从 Session 对象中获取信息。例如,显示 Session("FirstName") 的当前值:

Welcome <%= Session("FirstName") %>
可以在 Session 对象中存储用户的首选项,然后通过访问首选项来决定将哪一页发送给用户。例如,可以允许用户在您的应用程序的第一页中指定纯文本版本的内容并将这一选择应用到用户此后对该应用程序的所有页的访问上。

<% If Session("ScreenResolution") = "Low" Then %>
This is the text version of the page.
<% Else %>
This is the multimedia version of the page.
<% End If %>
您也可以在 Session 对象中存储一个对象实例,但这样做会影响服务器的性能。

管理 Web Farm 的会话
ASP 会话信息存储在 Web 服务器中。浏览器必须向 Web 服务器请求页才能获得用来访问会话信息的脚本。在 Web Farm(其中许多 Web 服务器共同承担响应用户申请的责任)中,用户的请求并不总是被路由到同一个服务器,而是由一个被称为“负载平衡”进程的特殊软件对此 URL 站点的申请分配任意一个空闲的服务器。负载平衡进程使在 Web Farm 中保存会话信息变得更加困难。

为了在一个负载被平衡的站点上使用 ASP 会话管理,必须保证用户会话的所有请求都被定向到同一个 Web 服务器。一种做法是编写一个 Session_OnStart 过程,此过程使用 Response 对象将浏览器重定向到运行该用户会话的 Web 服务器。如果在您的应用程序页中的所有链接都是相对的,那么以后对某一页的所有请求都将被路由到同一个服务器。

例如,某用户要通过请求某一站点的通用 URL:http://www.microsoft.com 来访问一个应用程序。负载平衡进程将申请路由到服务器 server3.microsoft.com。ASP 在此服务器上生成了一个新的用户会话。在 Session_OnStart 过程中,浏览器被重定向给指定的服务器:

<% Response.Redirect("http://server3.microsoft.com/webapps/firstpage.asp") %>
浏览器将请求指定的页,并且以后的所有请求都将被路由到同一个服务器。

使用 Cookie
cookie 是 Web 服务器嵌在用户的 Web 浏览器中,用来代表用户的令牌。当下次同一浏览器请求一页时,它将发送从 Web 服务器收到的 cookie。 cookie 允许有一组信息与用户关联。 ASP 脚本使用 Response 和 Request 对象的 Cookies 集合,可以获取和设置 cookie 的值。

设置 cookie
要设置 cookie 的值,可使用 Response.Cookies。如果 cookie 不存在,Response.Cookies 将创建新的 cookie。例如,要向浏览器发送一个有关联值 ("Mars") 的 cookie 名 ("planet"),可使用下列命令,这些命令必须出现在您的 Web 页的 <HTML> 标记前:

<% Response.Cookies("planet")="Mars" %>
如果您只希望 cookie 在当前的用户会话中被使用,则只需向浏览器发送 cookie。但是,如果要在用户已经终止或重新启动浏览器之后确认用户,就必须强制浏览器将 cookie 存储在计算机的硬盘上。要保存 cookie,可使用 Response.Cookies 的 Expires 属性并将日期设置为此后的某一天:

<%
Response.Cookies("planet") = "Mars"
Response.Cookies("planet").Expires = "January 1, 1999"
%>
cookie 可有多个值;这样的 cookie 被称为一个带索引的 cookie。每个 cookie 值都被赋予一个关键字;您可以设置一个特定的 cookie 关键字的值。例如:

<% Response.Cookies("planet")("Mars")="SpaceMissions" %>
如果某个现有的 cookie 具有关键字值但 Response.Cookies 未指明一个关键字的名称,则该关键字值将被删除。类似的,如果某个现有的 cookie 没有关键字值但 Response.Cookies 指明了关键字的名称和值,则现有的 cookie 值将被删除,并生成新的 key-value 对。

获取 cookie
要获取 cookie 的值,可使用 Request.Cookies 集合。例如,如果用户的 HTTP 请求设置了 planet=Mars,则下列语句将获取值 Mars:

<%= Request.Cookies("planet") %>
相似的,要从带索引的 cookie 中获取关键字值,可使用关键字名。例如,如果用户发出下列的 HTTP 请求:

planet=Mars&Mars=SpaceMissions
下列脚本将返回值 SpaceMissions:

<%= Request.Cookies("planet")("Mars") %>
设置 cookie 路径
由 ASP 存储在用户的 Web 浏览器中的每个 cookie 都包含路径信息。当浏览器请求的文件的位置与在 cookie 中指定的路径相同时,浏览器自动将 cookie 转发给服务器。默认情况下,cookie 路径与包含最初生成 cookie 的 .asp 文件的应用程序名对应。例如,如果在名为 UserApplication 的应用程序中的 .asp 文件生成了一个 cookie,那么每当用户的 Web 浏览器在此应用程序中获取文件时,除其他在路径 /UserApplication 下的 cookie 外,浏览器还要将该 cookie 转发给服务器。

上一页  [1] [2] [3] 下一页

文章搜索
相关资讯
相关文章 相关下载
ASP系列讲座(二十三)编写跨平台应用程序
ASP系列讲座(二十二)使用国际站点
ASP系列讲座(二十一)创建事务性脚本
ASP系列讲座(二十)维护 ASP 应用程序的安全
ASP系列讲座(十八)管理应用程序
焦点信息