《asp基础实用教程(DOC格式)》第14章


可以在Session对象中存储用户的首选项,然后通过访问首选项来决定将哪一页发送给用户。例如,可以允许用户在您的应用程序的第一页中指定纯文本版本的内容并将这一选择应用到用户此后对该应用程序的所有页的访问上。
This is the text version of the page。
This is the multimedia version of the page。
您也可以在Session对象中存储一个对象实例,但这样做会影响服务器的性能。详细信息,请参阅设置对象作用域。
管理WebFarm的会话
ASP会话信息存储在Web服务器中。浏览器必须向Web服务器请求页才能获得用来访问会话信息的脚本。在WebFarm(其中许多Web服务器共同承担响应用户申请的责任)中,用户的请求并不总是被路由到同一个服务器,而是由一个被称为负载平衡进程的特殊软件对此URL站点的申请分配任意一个空闲的服务器。负载平衡进程使在WebFarm中保存会话信息变得更加困难。
为了在一个负载被平衡的站点上使用ASP会话管理,必须保证用户会话的所有请求都被定向到同一个Web服务器。一种做法是编写一个Session_OnStart过程,此过程使用Response 对象将浏览器重定向到运行该用户会话的Web服务器。如果在您的应用程序页中的所有链接都是相对的,那么以后对某一页的所有请求都将被路由到同一个服务器。
例如,某用户要通过请求某一站点的通用URL:http://microsoft。来访问一个应用程序。负载平衡进程将申请路由到服务器server3。microsoft。。ASP在此服务器上生成了一个新的用户会话。在Session_OnStart过程中,浏览器被重定向给指定的服务器:
浏览器将请求指定的页,并且以后的所有请求都将被路由到同一个服务器。
使用Cookie
cookie是Web服务器嵌在用户的Web浏览器中,用来代表用户的令牌。当下次同一浏览器请求一页时,它将发送从Web服务器收到的cookie。cookie允许有一组信息与用户关联。ASP脚本使用Response和Request对象的Cookies集合,可以获取和设置cookie的值。 
设置cookie
要设置cookie的值,可使用Response。Cookies。如果cookie不存在,Response。Cookies将创建新的cookie。例如,要向浏览器发送一个有关联值(”Mars”)的cookie名(”planet”),可使用下列命令,这些命令必须出现在您的 Web页的标记前:
如果您只希望cookie在当前的用户会话中被使用,则只需向浏览器发送cookie。但是,如果要在用户已经终止或重新启动浏览器之后确认用户,就必须强制浏览器将cookie存储在计算机的硬盘上。要保存cookie,可使用Response。Cookies的Expires属性并将日期设置为此后的某一天:
cookie可有多个值;这样的cookie被称为一个带索引的cookie。每个cookie值都被赋予一个关键字;您可以设置一个特定的 cookie关键字的值。例如:
如果某个现有的cookie具有关键字值但Response。Cookies未指明一个关键字的名称,则该关键字值将被删除。类似的,如果某个现有的cookie没有关键字值但 Response。Cookies指明了关键字的名称和值,则现有的cookie值将被删除,并生成新的key…value对。
获取cookie
要获取cookie的值,可使用Request。Cookies集合。例如,如果用户的HTTP请求设置了planet=Mars,则下列语句将获取值Mars:
相似的,要从带索引的cookie中获取关键字值,可使用关键字名。例如,如果用户发出下列的HTTP请求:
planet=Mars&Mars=SpaceMissions
下列脚本将返回值SpaceMissions:
设置cookie路径
由ASP存储在用户的Web浏览器中的每个cookie都包含路径信息。当浏览器请求的文件的位置与在cookie中指定的路径相同时,浏览器自动将cookie转发给服务器。默认情况下,cookie路径与包含最初生成cookie的。ASP文件的应用程序名对应。例如,如果在名为UserApplication的应用程序中的 。ASP文件生成了一个cookie,那么每当用户的Web浏览器在此应用程序中获取文件时,除其他在路径/UserApplication 下的cookie外,浏览器还要将该cookie转发给服务器。
要给cookie声明一个不同于默认的应用程序路径的路径,可以使用ASP的Response。Cookies集合的Path属性。例如,下列脚本将路径SalesApp/Customer/Profiles/赋予名为Purchases的cookie:
每当包含Purchasescookie的Web浏览器请求位于路径/SalesApp/Customer/Profiles/或其子目录的文件时,浏览器将cookie转发给服务器。
许多Web浏览器,包括Microsoft Internet Explorer 4。0和Netscape浏览器,保留cookie路径的大小写。也就是说,如果一个被请求的文件的大小写与保留的cookie路径不同,那么浏览器是不会向服务器转发cookie的。例如,对于ASP,虚拟目录/TRAVEL和/travel是相同的ASP应用程序,而对于保留URL的大小写的浏览器而言,/TRAVEL和/travel则是两个不同的应用程序。应确保。ASP文件的所有URL具有相同的大小写,以保证用户的浏览器能够转发存储的cookie。
如果需要,可使用下列语句设置cookie路径,使得无论应用程序或路径是什么,只要用户的Web浏览器向您的服务器请求文件,就会转发cookie:
Response。Cookies(”Purchases”)。Path = ”/”
但是,请注意,在不区分应用程序的情况下向服务器发送cookie,如果cookie包含不应被指定应用程序以外的程序访问的敏感信息,就可能产生安全性问题。
不使用cookie而保留状态
并不是所有的浏览器都支持cookie。即便使用支持cookie的浏览器,有些用户也可能喜欢关闭cookie支持。如果您的应用程序需要响应不支持cookie的浏览器,就必须使用ASP会话管理。
如果您不使用ASP会话管理,就必须编写您自己的机制以便在您的应用程序页之间传递信息。有两种常规的方法可完成该任务:
向 URL 的查询字符串添加参数。例如:
http://MyServer/MyApp/start。asp?name=Jeff
但是,某些浏览器,在表格被以GET方法提交的情况下会丢弃查询字符串中传递的显式参数。
向表格中添加隐含值。例如,以下的HTML表格包含一个隐含的控件。此控件在真正的表格中不出现,而且对用户的Web浏览器是不可见的。通过HTTP POST方法,表格除了传递用户提供的信息外,还传递用户标识。
小说推荐
返回首页返回目录