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变量各自是不同的,在每个人在网站的不同主页间浏览时,这种针对这个个人的变量会一直保留,这样作为身份认证是十分有效的。