应用程序与会话.ppt

上传人:wuy****n92 文档编号:66028966 上传时间:2022-12-11 格式:PPT 页数:102 大小:723.50KB
返回 下载 相关 举报
应用程序与会话.ppt_第1页
第1页 / 共102页
应用程序与会话.ppt_第2页
第2页 / 共102页
点击查看更多>>
资源描述

《应用程序与会话.ppt》由会员分享,可在线阅读,更多相关《应用程序与会话.ppt(102页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第8章应用程序与会话主要内容在ASP中,为了保存与应用程序有关的一些公共信息,设置了应用程序对象;又为了保存访问应用程序的各用户的一些个人信息,设置了会话对象。本章主要讨论:应用程序的概念应用程序级变量的使用应用程序对象的事件会话的概念会话级变量的使用会话对象的属性和事件什么是Cookie怎样使用Cookie本章目录8.2.3会话对象的属性和方法8.1.1创建新的应用程序8.1.2应用程序级变量8.1.3应用程序对象的事件8.2.1会话8.2会话对象8.2.4会话对象的事件方式发送的信息8.1应用程序对象本章小结习题8.3使用Cookie8.3.1什么是Cookie8.3.2写入Cookie8

2、.2.2会话级变量8.3.3读出Cookie8.3.4使用字典8.3.5Cookie的属性8.3.6检测浏览器Cookie的启用状态8.1应用程序对象基于Web方式的应用程序是指在一个目录下的一组网页文件,及网页文件中所有引用的其它文件的集合。ASP内置的Application对象,称为应用程序对象,它封装了有关应用程序的全部信息,通过它,可以实现让所有访问该站点的用户共享某些信息。以下分别讨论:8.1.1创建新的应用程序8.1.2应用程序级变量8.1.3应用程序对象的事件8.1.1创建新的应用程序NT上的每个应用程序都属于某个站点,你可以先创建一个站点,再在该站点中创建新的应用程序。为了建立

3、站点和应用程序,你可以先新建两个目录,一个作为站点的起始目录,另一个作为应用程序的起始目录,后者物理上可包含在前者之中。所有的网页文件将放在作为应用程序的目录中。1.创建Web站点在NT上建立站点及站点中的应用程序的操作过程如下:打开ISM(Internet Server Manager)。显示如图所示。1.创建Web站点右击计算机名,选择添加=Web站点。显示如图:1.创建Web站点单击下一步,输入站点说明(如网上教室),如图所示:1.创建Web站点单击下一步,选择站点的IP地址(在NT中可以为一台机器设置多个IP地址),显示如图:1.创建Web站点单击下一步,选择主目录(它将作为站点的起始

4、目录,)如图所示。1.创建Web站点单击下一步,选择访问权限,如图所示。1.创建Web站点完成后单击窗口中的启动按钮,启动该站点,结果如图所示。1.创建Web站点注意:为了验证书中各例,你并不需要创建新的Web站点,只须使用默认Web站点即可。2.创建应用程序右击站点名称,选择添加,虚拟目录,通过向导依次输入虚拟目录别名,它将作为应用程序的名称,如图所示。2.创建应用程序选择目录路径,作为应用程序的起始目录,如图所示。单击下一步,选择权限后完成。3.在PWS中创建虚拟目录在Windows 98中,通过PWS也可以创建一个基于Web的应用程序,只需要创建一个虚拟目录指向存放一组网页文件的目录即可

5、。具体操作过程如下:创建一个子目录,用于作为应用程序的起始目录。如C:newApp。3.在PWS中创建虚拟目录双击状态栏上的个人Web管理器图标,打开个人Web管理器窗口,选择高级,显示如图:3.在PWS中创建虚拟目录单击添加,显示添加虚拟目录对话框,如图:3.在PWS中创建虚拟目录单击“浏览”,选择目录,如C:newApp,这一目录是实际存放网页文件的目录,它可以是本机上的任意目录。3.在PWS中创建虚拟目录别名框中输入虚拟目录的别名,它将作为应用程序的名称,可以由数字、字母或中文符号构成。选中“执行”复选框,这样你的网页中就可以使用各种应用程序和扩展控件。如图所示。3.在PWS中创建虚拟目

6、录单击确定,关闭对话框。可看到已经建立的虚拟目录。如图所示。3.在PWS中创建虚拟目录 注意:在单击“添加”按钮时,要注意当前选中的是哪个目录,否则,可能建立的虚拟目录包含在其它虚拟目录中,给访问带来麻烦。另外,同一组文件可以创建不同的虚拟目录,从而构成不同的应用程序。8.1.2应用程序级变量应用程序级变量是用于记录应用程序一级的信息的公共变量,如应用程序的点击次数,应用程序的版权信息等。它是访问应用程序的各用户间实现交换信息的重要手段。以下分别讨论:1变量的定义 2锁定应用程序对象 3变量的使用1变量的定义 定义应用程序级变量的形式如下:Application(“变量名”)=值其中变量名可以

7、是一般的符号串。值可以是字符串或数值。例如:Application(“Hitcount”)=10002锁定应用程序对象 为了控制由于并发访问而可能产生的错误,在ASP中为Application对象设计了Lock和Unlock这两个方法。使用格式如下:Application.LockApplication.Unlock使用Application对象的Lock方法后,其它用户若要修改Application对象的值,则只能等待。而Unlock方法则允许其他用户修改Application对象的值。3变量的使用 有了Application对象的Lock和Unlock方法后,就可以改变应用程序级变量的值了

8、。如将一个名为“abc”的应用程序级变量加1,可写成形式如下:Application.LockApplication(“abc”)=Application(“abc”)+1Application.Unlock 使用举例(1)网页点击计数欢迎光临本页被点击过次!网页被访问一次或刷新一次,变量加一显示变量值使用举例(1)为了验证本例中的代码,有条件的可以在两台不同的机器上访问该网页。一般情况可以打开两个浏览器窗口,并分别输入如下地址:Localhost/L8_1.aspL8_1.asp交替刷新后观察结果。使用举例(1)为了测试本例的代码,你可以先单击“第一种地址”按钮,等出现浏览器窗口后,通过最小

9、化回到本窗口。再单击“第二种地址”按钮,完成后,用Alt+TAB键切换到浏览器窗口,或通过停止放映后,再切换到浏览器窗口观察效果。第一种地址第二种地址使用举例(2)显示所有应用程序变量 变量名 变量值使用举例(2)显示所有应用程序变量 应用程序的变量集合使用举例(2)代码中,使用了一个for each循环,逐个输入Application对象的contents集合中的所有元素的名称和对应的值。浏览结果如图所示。单击测试8.1.3应用程序对象的事件系统为应用程序对象设计了两个事件,即Application_onStart和 Application_onEnd通过编写相应的事件过程,可以实现必要的控

10、制。以下分别讨论:1应用程序开始事件Application_OnStart 2应用程序结束事件Application_OnEnd 3Global.asa文件1应用程序开始事件应用程序的开始事件是在应用程序起始目录下的第一个文件被浏览器访问时发生的,通过这一事件过程,我们可以为一些应用程序级变量设置初值。形式如下:Sub Application_OnStart应用程序启动时所需执行的一些初始化操作代码End Sub1应用程序开始事件例 如:若 要 将 应 用 程 序 级 变 量“NumHits”初始化为0,可使用如下的事件过程。SubApplication_OnStartApplication.

11、lockApplication(“NumHits”)=0Application.UnlockEnd Sub2应用程序结束事件当网站被关闭时,将发生应用程序的结束事件,可以利用这一事件过程,来保存应保存的一些信息,如当前的点击次数、访问者个数等,以便下次开机后装入。这一事件过程的一般形式:SubApplication_OnEnd在应用程序结束时需执行的代码放在这里End Sub3Global.asa文件 在ASP中,为了存放以上各事件过程,专门设计了一个特殊的文件,名字为“Global.asa”,当应用程序开始时,该文件内容将被装入内存,这一文件的格式为:相应的事件过程表示在服务器上运行3Glo

12、bal.asa文件 将点击次数初始化为10000的global.asa文件。Sub Application_OnStart Application.lock Application(“NumHits”)=10000 Application.Unlock End Sub 3Global.asa文件 为了验证本例中的内容,可以先为子目录8下面的L8_3创建一个虚拟目录,设名为LL,这样就可以使用如下地址访问:LocalhostLLL8_1.asp单击测试注意:如果你修改了Global.asa的内容,应该为这一目录创建另一个名称的虚拟目录,否则该文件不被重新装入内存。3Global.asa文件 虚拟

13、目录创建后,所在位置和其中包含的文件如图:8.2会话对象会话对象能封装用户和服务器在一次会话期间的一些信息,用于保存用户的一些个人信息。以下分别讨论:8.2.1会话8.2.2会话级变量8.2.3会话对象的属性和方法8.2.4会话对象的事件8.2.1会话当用户打开浏览器窗口,并输入一个合理的地址,一个会话就创建了,其后,请求的同一应用程序中的不同网页,都属于同一个会话。当服务器确认浏览器窗口已关闭,则会话结束。若浏览器窗口的内容由于长时间的不更新,超过了失效时间,也会自动结束会话。8.2.2会话级变量会话级变量用于保存用户会话一级的个人数据。访问同一网页的不同用户,会话级变量有不同的取值。要在网

14、页中定义一个会话级变量,可使用如下形式:session(“变量名”)=值例如:session(“xm”)=“张三”8.2.2会话级变量由于会话级变量是私有的,不会因为同一网页可能被同时访问而造成错误,所以和应用程序级变量不同,要改变会话变量的值,不需要进行锁定操作。对会话变量numhits进行加1操作可写成:session(“numhits”)=session(“numhits”)+1 可以使用session对象的contents集合设置和读取会话级变量的值,形式如下:session.contents(“numhits”)会话级变量使用例显示当前设置的所有会话级变量%session(usern

15、ame)=xwl session.contents(numhits)=100 for each item in session.contents response.write item&=&session.contents(item)&next%会话级变量使用例为了验证本例中的代码,输入并保存文件到指定目录,打开浏览器输入地址,显示结果会如图所示。单击测试会话级变量使用例在没有关闭浏览器窗口时,试着修改文件中的代码,如可以将“username”改为“un”,保存后刷新浏览器窗口,观察其中的变化。若先关闭浏览器窗口,再修改文件内容,观察其中的区别。8.2.3会话对象的属性和方法ASP内置的会话对

16、象sessione有一些属性,通过读取这些属性值,可以了解和会话有关的一些信息,另外,通过对某些属性的设置,可以为用户会话创建一个较合适的环境。会话对象有如下主要的属性:1CodePage属性2LCID属性3SessionID属性4Timeout属性1CodePage属性session对象的CodePage属性用于设定使用的服务器代码页。一旦在网页中设置了某一代码页,则以后内容将使用该代码页中的字符显示。形式如下:session.codepage=936其中:936使用gb2312字符集也可以在网页开始位置使用如下形式的一行指定缺省的代码页。2LCID属性LCID是Local indentif

17、ier(本地标识符)的缩写,常见的值有3081(澳大利亚英语)、4105(加拿大英语)、2057(英国英语)、1033(美国英语)、1036(法语)、1031(德语)、1041(日语)、1049(俄语)等。该属性设置不同的值会影响日期时间的显示形式。3SessionID属性SessionID属性返回当前会话的标识值,只要Web服务器没有重新启动,该值是连续编号的。通过该属性,可以很方便地判断出是否产生了新的会话。4Timeout属性Timeout属性用于设定应用程序会话状态的超时时限。当网页打开后,由于用户长时间不发出新的请求,会话过程会自动终止,通过设置Timeout属性的值,可以指定在考虑

18、终止会话之前等待用户的时间。会话对象的属性使用例会话标识和超时时间 设置会话的超时值为1分钟,并显示当前会话的标识值。会话对象的属性使用例使用如图所示的两种方式打开窗口会得到不同的结果。第一种地址第二种地址8.2.4会话对象的事件Session对象也具有开始和结束事件。当用户第一次请求ASP页时,发生开始事件;当会话超时或调用Abandon方法时,发生结束事件。Session对象的开始和结束事件过程也是放在文件Global.asa中,形式如下:Sub Session_OnStart 执行的语句End SubSub Session_OnEnd 执行的语句End Sub 会话对象举例网页的点击次数

19、(本例需编辑两个文件)(1)Global.asa Sub Application_OnStart Application.lock Application(numhits)=0 Application.Unlock End Sub Sub Session_OnStart session(SessionHits)=0 End Sub 会话对象举例网页的点击次数(本例需编辑两个文件)(2)asp文件本网页的点击次数是:在本会话期间的点击次数是:会话对象举例验证本例时,同样应为相应目录创建虚拟目录,设为djcs,再以几种方式打开,结果如图:第一种地址第二种地址会话对象举例记录访问者个数(本例需编辑两

20、个文件)(1)Global.asaSub Application_OnStart Application.Lock Application(User)=0 Application.UnLockEnd SubSub Session_OnStart Application.Lock Application(User)=Application(User)+1 session(User)=Application(User)Application.UnlockEnd Sub 会话对象举例网页的点击次数(本例需编辑两个文件)(2)asp文件你 是 本 站 的 第 位 访 问 者目前本站的总用户数为:会话对

21、象举例验证本例时,同样应为相应目录创建虚拟目录,设为fwcs,再以几种方式打开,结果如图:第一种地址第二种地址8.3使用Cookie当服务器接到一个用户请求时,常常希望知道该用户最近是否访问过本网站的其它网页,为此,浏览器的制造商提出了一种叫作cookie的概念。8.3.1什么是Cookie8.3.2写入Cookie8.3.3读出Cookie8.3.4使用字典8.3.5Cookie的属性8.3.6检测浏览器Cookie的启用状态8.3.1什么是CookieCookie是一些在客户端和服务器之间交换的小段信息,用于标识在服务器上请求多个页的客户。Cookie有两种形式:会话cookie和永久co

22、okie。前者是临时性的,只在浏览器打开时存在;后者则永久性地存在于客户的硬盘上,并且在指定过期日期之前一直可用。由服务器将Cookie信息发送给浏览器或写入到浏览器端的硬盘中,其后,浏览器在向一些网站提出访问请求时将同时携带cookie信息。8.3.2写入Cookie1.写入Cookie使用response对象的cookies集合,可以方便地将cookie信息发送到客户端。形式如下:response.cookies(“名称”)=值例如:response.cookies(“xm”)=“张三”8.3.2写入Cookie浏览器将没有过期设置的cookie保存在内存中。若要写入客户端的硬盘中,必须设

23、置cookie的过期时间,形式如下:response.cookies(“名称”).Expires=日期值写入Cookie举例网页内容cookie设置完成例中设置了一个名称为“xm”的Cookie,它的值为“张三”,并设置该cookie的失效时间为365天,即一年。8.3.2写入Cookie2 观察Cookie文件从windowsCookies目录中可以找到所有保存在客户端的cookie文件。Cookie被保存成简单的文本文件(扩展名为txt),其名称由用户名和Web站点名组成。Cookie文件的内容包括:域名、过期时间、安全信息以及路径信息。8.3.2写入Cookie打开文件后可以看到一些文字

24、信息和一些不可读的字符和数据。上例中生成的Cookie文件内容如图所示。“xm”为设置的Cookie名称,“%D5%C5%C8%Fd”为该Cookie的值8.3.3读出Cookie可以使用request对象的Cookies集合来读取已经设置的Cookie值,形式如下:同样,可以使用循环来读取所有已经设置的Cookie内容。读出Cookie举例显示所有的Cookie目前有如下Cookies存在:%for each item in request.cookies response.write item&=&request.cookies(item)&next%存放所有cookie的集合读出Cook

25、ie举例验证本例时可先运行前一例,浏览结果如图:单击测试单击运行前一例8.3.4使用字典有时,希望同时保存多个内容,如用户的姓名、口令等,这时,如果使用多个Cookie,则在逻辑意义上显得不完整,对此,在ASP中可以使用字典型Cookie,即在一个Cookie中存放多个值,而用不同的关键字来识别不同的内容。字典的使用形式如下:response.cookies(“名称”)(“关键字”)=值8.3.4使用字典例如:response.cookies(“user”)(“name”)=”张三”response.cookies(“user”)(“password”)=”abc”为了让字典型Cookie长期

26、保存在客户端磁盘上,也要设置一个失效时间,形式如下:response.cookies(“名称”).Expires=日期值对于字典,在读出时也要使用类似的形式:request.cookies(“名称”)(“关键字”)使用字典举例把来自表单的输入信息写入到Cookie中%if request.servervariables(CONTENT_LENGTH)0 then xm=request.form(username)kl=request.form(password)response.cookies(user)(xm)=xm response.cookies(user)(kl)=kl respons

27、e.cookies(user).expires=dateadd(m,1,Now()response.write 提交的姓名和口令已保存 else%请输入下列信息写入名为“user”的字典型cookie中,使用字典举例把来自表单的输入信息写入到Cookie中 form action=method=POST用户姓名:口令:调用自身来接收表单中输入的信息,使用字典举例本例网页第1次被访问时,将显示一个表单供用户填写信息,如图所示 使用字典举例当用户填写内容后提交时,显示“提交的姓名和口令已保存”,如图所示。浏览后可用前例代码显示结果 单击测试单击运行前一例8.3.5Cookie的属性Request对

28、象的Cookies集合有以下属性可供使用:1Expires属性 2Domain属性 3Path属性 4Secure属性 5HasKeys属性1Expires属性该属性指出写入到客户端硬盘上的cookie信息什么时间失效,即什么时间之后,用户来访问该站点时,不再携带该cookie信息。2Domain属性当服务器有多个域时,通过此属性指出用户访问哪个域时携带该Cookie信息。3Path属性同Domain属性类似,通过此属性指出用户访问哪个路径下的文件时才携带该Cookie信息。注意:这里的路径是区分大小写的。4Secure属性Secure属性指出Cookie本身是否加密5HasKeys属性当既有

29、单个cookie,又有字典型cookie的情况下,通过该属性可以得到某一指定名称的cookie是否是字典的信息。属性使用举例检索所有的Cookie%Dim cookie,keyFor Each cookie In Request.CookiesIf Not Request.Cookies(cookie).HasKeys Then Response.Write cookie&=&Request.Cookies(cookie)&Else For Each key In Request.Cookies(cookie)Response.Write cookie如果不是字典显示单个cookie是字典时对

30、每个关键字循环输出属性使用举例检索所有的Cookie Response.Write(&key&)Response.Write =Response.Write Request.Cookies(cookie)(key)Response.Write&vbCrLfNextEnd If Next%显示字典中对cookie的名称,关键字和值属性使用举例为了验证本例,应该首先运行前面几例的脚本,最后再运行本例。结果如图:运行前面例子运行前面例子测试本例8.3.6检测浏览器Cookie的启用状态要正确使用Cookie,需要正确设置浏览器的相应属性。本小节来讨论以下有关内容:1禁止写入cookie 2检查客户端

31、的cookie启用状态 1禁止写入cookie 客户可以通过设置,不让服务器将Cookie写入到硬盘。设置过程如下:(1)在浏览器的菜单中找到Internet选项,或右击桌面上的浏览器图标,选择属性。1禁止写入cookie(2)选择安全选项卡,显示结果如图所示。在低版本的浏览器上,设置Cookie的启用状态在高级选项卡中。1禁止写入cookie(3)单击自定义级别按钮,在出现的对话框中选择,禁止存储在计算机上的Cookies和禁止每个会话Cookies。1禁止写入cookie(4)单击确定,显示确认对话框后,单击图中的应用,并关闭窗口。2检查客户端的cookie启用状态当客户端设置成不允许写入

32、cookie时,许多网页可能不能正常浏览,为此,必须告诉客户不能浏览的原因。这里,需要首先检测出客户端是否启用了cookie。由于会话级变量是通过cookie来实现的,可以通过先设置一个会话级变量,再读取该变量来判断客户端是否启用了cookie。2检查客户端的cookie启用状态网页内容%Dim strQS Response.Expires=0 If Session(Cookies)set then strQS=Request.ServerVariables(QUERY_STRING)If Request.QueryString(try)=Cookie Then strQS=Mid(strQS

33、,Len(try=Cookie&)+1)If strQS Then strQS=?&strQS End If%检查会话变量是否设置,条件为真时表示第1次访问或客户不接受Cookies条件为真表示不是第1次访问2检查客户端的cookie启用状态网页内容 你的浏览器是不接受cookies,但本站点需要使用Cookie.请重新设置后 a href=单击这里%Response.End Else Session(Cookies)=set If strQS Then strQS=?try=Cookie&strQS 重新调用自身设置会话变量2检查客户端的cookie启用状态网页内容 Else strQS=?

34、try=Cookie End If Response.Redirect Request.ServerVariables(SCRIPT_NAME)&strQS End If End If%你的浏览器是接受cookies的!重定向到自身2检查客户端的cookie启用状态浏览结果若浏览器接受cookies的,则显示如图:2检查客户端的cookie启用状态浏览结果若浏览器不接受cookies的,则显示如图:测试本例本章小结本章讨论了应用程序的概念、应用程序的创建,以及如何使用应用程序级变量来保存访问该应用程序的各个用户间共享的一些信息。另外,为了设置应用程序开始时的一些初始状态,以及保存应用程序结束时

35、需要保存的一些信息,本章中讨论了应用程序对象的事件。本章小结为了保存用户访问某一应用程序期间的一些个人信息,以便在应用程序的各网页间传递,本章中讨论了会话对象,介绍了会话的概念、会话的开始和结束标志,会话级变量的使用方法。同样,为了设置会话开始时的一些初始状态和保存会话结束时的一些状态,本章讨论了会话的有关事件。本章小结Cookie是客户端和服务器间传递的小段信息,它能较好地识别客户,记录与客户有关的信息,但客户端可能认为它是不安全的而关闭该功能。为此,本章中讨论了用网页识别客户端是否启用了Cookie。习题1从例8-3执行结果,你看出session(“numhits”)和session.contents(“numhits”)完全等价吗?2试验证以下形式的代码:%session(userlanguage)=中文 session.codepage=1252 session.contents(numhits)=100 for each item in session.contents response.write item&=&session.contents(item)&next%结果是什么?如果把第1行的%和第2行的%删除,结果会怎样。习题3请分析,例8-12中测试的是会话型cookie,还是永久cookie。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com