Sessions

的使用和处理

Session

的发明是填补HTTP协议的局限，请注意HTTP协议是怎样工作的－用户发出请求，服务端作出响应，这种用户端和服务端之间的联系就是离散的，非连续的。

在HTTP协议中没有什么能够允许服务端来跟踪用户请求。在服务端完成响应用户请求后，服务端不能持续与该浏览器保持连接。从网站的观点上看，每一个新的请求都是单独存在的，因此，HTTP协议被认为是stateless协议，在用户在多个主页间转换时，你就根本无法知道他的身份。

Sessions

的引用就是弥补了这个缺陷。利用Sessions，你就可以在一个用户在多个主页间切换的时候也能保存他的信息。这样很多以前根本无法去做的事情变得简单多了。

注意

现在还有很多浏览器不能支持Cookies，如果想要具体了解这些，看后面的相关部分。

开始Session信息

Active Server Pages

的Sessions非常好用，你能够利用Session对象来对session全面控制，如果你需要在一个用户session中存储信息，你只需要简单的直接调用Session对象就可以了，下面是个例子：

<HTML>

<HEAD><TITLE>Session

示例</TITLE></HEAD>

<BODY>

<%

Session(

“Greeting”)=“欢迎!”

Response.Write(Session(

“Greeting”))

%>

</BODY>

</HTML>

当Active Server Page执行时，浏览器上显示出”欢迎!”的字段，脚本第一行是给Greeting赋值为”欢迎!”，第二行将这个字段显示出来。

不过，这种操作没什么大不了的，但是，可以假象一个同样的用户进入另一个主页，例如，下面这个Active Server Pages:

<HTML>

<HEAD><TITLE>

另一页</TITLE></HEAD>

<%=Session(

“Greeting”)%>

</Body>

</html>

当他进入这页，同样的”欢迎!”又显示出来了，注意这一页没有赋值操作，这个Greeting变量的值是前面那页赋值的。

你无法用普通的脚本变量来进行这种处理，因为一般的变量只在一个单独主页内有效，而Session变量在用户离开网站前一直存在生效。

要理解的很重要的一点是Session变量是针对特定用户相联系的。针对某一个用户赋值的Session变量是和其他用户的Session变量完全独立的，不会存在相互影响。换句话说，这里面针对每一个用户保存的信息是每一个用户自己独享的，不会产生公享情况。例如下面这个例子(针对于注册表的例子)：

<%

Session(

“Myname”)=Response.form(“Username”)

Session(

“Mycompany”)=Response.form(“Usercompany”)

%>

很明显，对于不同的用户，Session的Myname变量和Mycompany变量各自是不同的，在每个人在网站的不同主页间浏览时，这种针对这个个人的变量会一直保留，这样作为身份认证是十分有效的。