目录 |
网上购物车是顾客在进行网上购物时所必须使用的购物工具。它用来临时存储用户选择的商品,协助顾客从虚拟商场中选取商品、携带商品,并到虚拟的收银台结账。
网上购物车的实现并非像以上解释的那样简单,实际上,网上购物车脚本是较难建立的脚本。究其原因,得先看看一个基本的Web浏览事务后面的支持机制。其一,Web的设计是无状态的,即所有Web服务器以同样方式处理URL请求,与前面的任何请求无关;其二,浏览器也是以无状态方式操作,采用与前面请求无关的方法来处理新的URL。例如,当用户启动自己的浏览器并请求一个URL(或者是一个HTML页面,或是一个CGI脚本)时,浏览器会找到服务器,建立一个连接,然后请求该URL,服务器处理浏览器请求并返回所需信息后断开连接,就会忘记刚才用户访问的情况。用户与服务器联系时,就像从没访问过服务器一样,并且每个请求都有一个应答,这就是无状态连接(Stateless Connection)。服务器不会记住用户,并且不能识别这是用户第1次访问还是第1000次访问。这种无状态连接的方式使得Web服务器处理得更快、更有效,也不需要维护请求URL的浏览器的信息,但也会导致许多令人讨厌的问题——网上购物车就是一个主要的例子。当顾客选中某个商品,将它放人自己的虚拟网上购物车时必须记住是什么商品,最后到虚拟收银台时,才知道应付多少钱。由于服务器不会记住这些信息,同样也不能让用户每次看见一个新页面时都重新输入已选择商品的信息,只能让脚本自己记录所有前面用户选择的商品信息。
为了实现网上购物车系统,解决Web应用程序的无状态连接,从而保存浏览器端的Web页面状态信息(网上购物车内商品信息),目前已经有隐式窗体字段方式和HTTP协议使用的Cookie方式等多种实现方法。
网上购物车类型的脚本可通过隐式字段来解决无状态连接问题。这样当用户再次调用浏览器时,就能获得从上次调用后的隐藏信息。网上购物车中的所有商品都有三个属性:数量、价格和描述。当选中两斤橘子,每斤橘子1.5元,网上购物车将把“2/1.5/Orange;”字符串写入隐式字段,分号标志记录的结束,记录中的字段之间用斜杠分开,而且允许任意数量的记录汇集成一个长字符串。需要分离信息时,网上购物车简单地搜索分号和斜杠即可分解出选中商品的信息。隐式字段是不显示、用户无法修改的字段,网上购物车隐式字段窗体是由CGI程序处理其他窗体提交数据时动态创建的。服务器向浏览器发送信息时,CGI程序将所有商品信息以隐式字段方式写入脚本,用户提交包含隐式字段的窗体时,字段中原先存放的商品信息返回服务器,服务器分解出隐式字段中存放的商品信息,从而保存了用户网上购物车内的商品信息。
Cookie是持续保存状态信息和其他信息的一种方式,信息在不同浏览器对话期间保存。Cookie由响应浏览器URL请求的服务器程序发送的信息组成,根据CGI程序的URL,发送的Cookie将信息保存在浏览器本地的Cookies.txt文件中,这个URL可以根据Cookie中包含的其他信息进行统一化。浏览器从Web服务器请求一个URL时,浏览器检索Cookies.真xt文件,查看某个Cookie的URL请求是否符合请求的URL。然后,浏览器在URL请求中发送符合请求的Cookie中包含的信息给Web服务器。在网上购物车的实现过程中,当用户选择了要购买的商品并放入网上购物车时,系统采用Cookie方式处理,将选择商品的信息以文本串的形式写入浏览器本地机的Cookies.txt中,当下一次激活网上购物车时,Cookie方式会从浏览器本地机的Cookies.txt中读取相应文本串的信息,从而获得了购物车中已选择商品的信息。