基于ASP的购物车
设计与实现基于ASP的购物车设计与实现ASP
1引言"购物车"在线购物类网站中是非常重要的功能.它是一个虚拟的购物篮,用户可以将自己喜爱的商品放入购物篮,同时也可以将不需要商品从你的购物篮中拿出去.它的出现使网上购物显得非常的简单,形象和人性化.2开发环境采用ASP技术开发购物车功能,数据库采用Access.配置ASP运行环境,即需要安装IIS,一般测试
程序时,不需要做任何的设置.要注意的是IIS有很多版本,不同的
系统基本上版本都不同,最好从原系统盘上安装.3购物车要想在网站上实现"购物车"功能,有好几种方法,比如用Session,Cookie或者数据表等.这里将重点介绍和比较Session,数据表实现"购物车"设计与实现."购物车"设计如图1所示.图1购物车3.1Cookie实现购物车简述3.1.1Cookie介绍Cookie是用户访问某些网站时,Web服务器在客户端磁盘上写入的一些小的由文本文件,用于记录浏览者的个人信息,浏览器类型,何时访问该网站以及执行过哪些操作等.ASP中可以采用Response对象的Cookies集合向客户端写入Cookie,采用Request对象的Cookies集合读取客户端的Cookie.3.1.2使用Cookie设计的优缺点Cookie是通过服务器端CGI,脚本或者客户端脚本把信息保存在客户机上的,为服务器或客户机再次使用这些信息提供方便.javascript中有一些用来对Cookie在进行操作的函数,如设置Cookie值的Setcookie(name,value),删除Cookie的Deletecookie(name)等.使用Cookie来保存"购物车"信息的优点是,即使当用户关闭了浏览器窗口,"购物车"中的信息也不会丢失,并且它占用很少的服务器端资源,缺点是必须要求用户端浏览器支持Cookie并且打开它.3.2使用Session+Dictionary实现"购物车"功能3.2.1Session,Dictionary介绍Session对象存储特定用户会话所需的信息.Session对象是在每一位访问者从Web站点或Web应用程序中首次请求一个ASP页时创建的,它将保留到默认的期限结束或通过脚本设置中止的期限.这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去.利用Session的功能,可以将购物信息(商品ID和购买数量)存储到Session变量中.为了更加灵活实现的"购物车",设计过程中可以引进Dictionary对象.Dictionary对象与关联数组是等价的,Dictionary对象用于数组,可以存储key/item数据对,其中key的值是惟一的,而item的值可以重复,且item项与key项相关联.这样key
可以用来存储购买商品的ID,而item则可以存储购买商品的数量.3.2.2设计与实现(1)放商品入"购物车"将商品ID和数量写入到Dictionary中,使用的方法是Add.该方法用于向Dictionary对象添加键和项目.格式:对象.Addkey,item判断是否存在Session("cart"),不存在则创建一个Session("cart")对象<%IfNotIsObject(Session("cart"))ThenSetSession("cart")=Server.CreateObject("Scripting.Dictionary")EndIf%>将Session("cart")展开一个本地副本调用.<%SetCart=Session("cart")%>如果该商品的ID不存在,则可以使用Dictionary对象的Add方法将商品的编号(ProductID)和购买的数量Num写入到Cart中.<%IfNotCart.Exists(ProductID)ThenCart.AddProductID,NumEndIf%>接着再将修改后的本地副本整体赋值给Session("cart")<%SetSession("cart")=Cart%>(2)查看"购物车"中商品将Session("cart")中的商品ID获取后,从商品表中获取相应商品信息.可以采用将Session("cart")中的数据组分别赋值给Keys商品ID组)Items(商品数量组)(和这2个变量.<%SetCart=Session("cart")Keys=Cart.keysItems=Cart.items%>接着可以使用循环语句显示用户购买的商品和数量以及总价等信息.<%ForI=0ToCart.Count-1%>Dimprodidprodid=keys(i)SetRs=Server.CreateObject("ADODB.Recordset")s
sql="SELECT*FROMproductsWHEREpid="&;int(prodid)Rs.Openssql,conn,1,3%>'显示Rs中的记录……<%Rs.CloseNext%>(3)修改"购物车"中商品数量
设计将商品的数量分别修改,这样就可以利用Session("cart")中存储的购买商品ID来进行修改用户购买商品的数量.编写一个函数用于获取数量和编号,然后重新
导航到修改数量程序文件.
修改数量实现程序:<%id=request.Querystring("id")num=request.Querystring("num")SetCart=Session("cart")IfCart.Exists(id)ThenCart.item(id)=Int(num)EndIfSetSession("cart")=cartResponse.Redirect"cart.asp"%>(4)删除"购物车"中的商品只需要知道被删除的商品的ID,就可以使用Dictionary对象的Remove方法实现删除.<%ProductID=Cstr(Request.Querystring("ProductID"))'获取要删除的商品IDSetCart=Session("cart")IfCart.Exists(ProductID)then'判断商品ID是否存在Cart.Remove(ProductID)'在Cart中删除该IDEndIfSetSession("cart")=cart%>如要清空"购物车"可以使用Dictionary对象的RemoveAll方法实现.<%Cart.Removeall()%>3.2.3用Session+Dictionary设计的优缺点Session+Dictionary实现"购物车"功能是分别充分使用了两对象的主要功能.创建一个Session("cart")对象实例,该对象中存储的数据允许用户在网站中的各页面跳转而不丢失,Dictionary对象可以很方便的存储用户购买的商品ID和商品的数量.使用Session+Dictionary实现"购物车"的优点是,对"购物车"的所有操作(添加,删除,修改和清空等)都在服务器上进行,与用户使用的浏览器无关.缺点是它占用很多的服务器端资源,用户关闭网站的所有窗口或一段时间没有更新,Session("cart")中的数据将丢失.3.3使用数据表实现"购物车"功能3.3.1数据表的建立