应用程序与会话.ppt

上传人:牧羊曲112 文档编号:5723665 上传时间:2023-08-14 格式:PPT 页数:102 大小:723.50KB
返回 下载 相关 举报
应用程序与会话.ppt_第1页
第1页 / 共102页
应用程序与会话.ppt_第2页
第2页 / 共102页
应用程序与会话.ppt_第3页
第3页 / 共102页
应用程序与会话.ppt_第4页
第4页 / 共102页
应用程序与会话.ppt_第5页
第5页 / 共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 使用Coo

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

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

4、点的IP地址(在NT中可以为一台机器设置多个IP地址),显示如图:,1.创建Web站点,单击下一步,选择主目录(它将作为站点的起始目录,)如图所示。,1.创建Web站点,单击下一步,选择访问权限,如图所示。,1.创建Web站点,完成后单击窗口中的启动按钮,启动该站点,结果如图所示。,1.创建Web站点,注意:为了验证书中各例,你并不需要创建新的Web站点,只须使用默认Web站点即可。,2.创建应用程序,右击站点名称,选择添加,虚拟目录,通过向导依次输入虚拟目录别名,它将作为应用程序的名称,如图所示。,2.创建应用程序,选择目录路径,作为应用程序的起始目录,如图所示。单击下一步,选择权限后完成。

5、,3.在PWS中创建虚拟目录,在Windows 98中,通过PWS也可以创建一个基于Web的应用程序,只需要创建一个虚拟目录指向存放一组网页文件的目录即可。具体操作过程如下:创建一个子目录,用于作为应用程序的起始目录。如C:newApp。,3.在PWS中创建虚拟目录,双击状态栏上的个人Web管理器图标,打开个人Web管理器窗口,选择高级,显示如图:,3.在PWS中创建虚拟目录,单击添加,显示添加虚拟目录对话框,如图:,3.在PWS中创建虚拟目录,单击“浏览”,选择目录,如C:newApp,这一目录是实际存放网页文件的目录,它可以是本机上的任意目录。,3.在PWS中创建虚拟目录,别名框中输入虚拟

6、目录的别名,它将作为应用程序的名称,可以由数字、字母或中文符号构成。选中“执行”复选框,这样你的网页中就可以使用各种应用程序和扩展控件。如图所示。,3.在PWS中创建虚拟目录,单击确定,关闭对话框。可看到已经建立的虚拟目录。如图所示。,3.在PWS中创建虚拟目录,注意:在单击“添加”按钮时,要注意当前选中的是哪个目录,否则,可能建立的虚拟目录包含在其它虚拟目录中,给访问带来麻烦。另外,同一组文件可以创建不同的虚拟目录,从而构成不同的应用程序。,8.1.2 应用程序级变量,应用程序级变量是用于记录应用程序一级的信息的公共变量,如应用程序的点击次数,应用程序的版权信息等。它是访问应用程序的各用户间

7、实现交换信息的重要手段。以下分别讨论:1变量的定义 2锁定应用程序对象 3变量的使用,1变量的定义,定义应用程序级变量的形式如下:Application(“变量名”)=值其中变量名可以是一般的符号串。值可以是字符串或数值。例如:Application(“Hitcount”)=1000,2锁定应用程序对象,为了控制由于并发访问而可能产生的错误,在ASP中为Application对象设计了Lock和Unlock这两个方法。使用格式如下:Application.LockApplication.Unlock 使用Application 对象的Lock方法后,其它用户若要修改Application对象的

8、值,则只能等待。而Unlock方法则允许其他用户修改Application对象的值。,3变量的使用,有了Application对象的Lock和Unlock方法后,就可以改变应用程序级变量的值了。如将一个名为“abc”的应用程序级变量加1,可写成形式如下:Application.LockApplication(“abc”)=Application(“abc”)+1Application.Unlock,使用举例(1),网页点击计数欢迎光临本页被点击过次!,网页被访问一次或刷新一次,变量加一,显示变量值,使用举例(1),为了验证本例中的代码,有条件的可以在两台不同的机器上访问该网页。一般情况可以打开

9、两个浏览器窗口,并分别输入如下地址:Localhost/L8_1.aspL8_1.asp交替刷新后观察结果。,使用举例(1),为了测试本例的代码,你可以先单击“第一种地址”按钮,等出现浏览器窗口后,通过最小化回到本窗口。再单击“第二种地址”按钮,完成后,用Alt+TAB键切换到浏览器窗口,或通过停止放映后,再切换到浏览器窗口观察效果。,第一种地址,第二种地址,使用举例(2),显示所有应用程序变量 变量名 变量值,使用举例(2),显示所有应用程序变量,应用程序的变量集合,使用举例(2),代码中,使用了一个for each循环,逐个输入Application对象的contents集合中的所有元素的

10、名称和对应的值。浏览结果如图所示。,单击测试,8.1.3 应用程序对象的事件,系统为应用程序对象设计了两个事件,即 Application_onStart和Application_onEnd通过编写相应的事件过程,可以实现必要的控制。以下分别讨论:1应用程序开始事件Application_OnStart 2应用程序结束事件Application_OnEnd 3Global.asa文件,1应用程序开始事件,应用程序的开始事件是在应用程序起始目录下的第一个文件被浏览器访问时发生的,通过这一事件过程,我们可以为一些应用程序级变量设置初值。形式如下:Sub Application_OnStart 应用

11、程序启动时所需执行的一些初始化操作代码 End Sub,1应用程序开始事件,例如:若要将应用程序级变量“NumHits”初始化为0,可使用如下的事件过程。Sub Application_OnStart Application.lock Application(“NumHits”)=0 Application.UnlockEnd Sub,2应用程序结束事件,当网站被关闭时,将发生应用程序的结束事件,可以利用这一事件过程,来保存应保存的一些信息,如当前的点击次数、访问者个数等,以便下次开机后装入。这一事件过程的一般形式:Sub Application_OnEnd 在应用程序结束时需执行的代码放在这

12、里End Sub,3Global.asa文件,在ASP中,为了存放以上各事件过程,专门设计了一个特殊的文件,名字为“Global.asa”,当应用程序开始时,该文件内容将被装入内存,这一文件的格式为:相应的事件过程,表示在服务器上运行,3Global.asa文件,将点击次数初始化为10000的global.asa文件。Sub Application_OnStart Application.lock Application(“NumHits”)=10000 Application.Unlock End Sub,3Global.asa文件,为了验证本例中的内容,可以先为子目录8下面的L8_3创建一

13、个虚拟目录,设名为LL,这样就可以使用如下地址访问:LocalhostLLL8_1.asp,单击测试,注意:如果你修改了Global.asa的内容,应该为这一目录创建另一个名称的虚拟目录,否则该文件不被重新装入内存。,3Global.asa文件,虚拟目录创建后,所在位置和其中包含的文件如图:,8.2 会话对象,会话对象能封装用户和服务器在一次会话期间的一些信息,用于保存用户的一些个人信息。以下分别讨论:8.2.1 会话 8.2.2 会话级变量 8.2.3 会话对象的属性和方法 8.2.4 会话对象的事件,8.2.1 会话,当用户打开浏览器窗口,并输入一个合理的地址,一个会话就创建了,其后,请求

14、的同一应用程序中的不同网页,都属于同一个会话。当服务器确认浏览器窗口已关闭,则会话结束。若浏览器窗口的内容由于长时间的不更新,超过了失效时间,也会自动结束会话。,8.2.2 会话级变量,会话级变量用于保存用户会话一级的个人数据。访问同一网页的不同用户,会话级变量有不同的取值。要在网页中定义一个会话级变量,可使用如下形式:session(“变量名”)=值 例如:session(“xm”)=“张三”,8.2.2 会话级变量,由于会话级变量是私有的,不会因为同一网页可能被同时访问而造成错误,所以和应用程序级变量不同,要改变会话变量的值,不需要进行锁定操作。对会话变量numhits进行加1操作可写成:

15、session(“numhits”)=session(“numhits”)+1 可以使用session对象的contents集合设置和读取会话级变量的值,形式如下:session.contents(“numhits”),会话级变量使用例,显示当前设置的所有会话级变量 next%,会话级变量使用例,为了验证本例中的代码,输入并保存文件到指定目录,打开浏览器输入地址,显示结果会如图所示。,单击测试,会话级变量使用例,在没有关闭浏览器窗口时,试着修改文件中的代码,如可以将“username”改为“un”,保存后刷新浏览器窗口,观察其中的变化。若先关闭浏览器窗口,再修改文件内容,观察其中的区别。,8.

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

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

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

19、Sub Session_OnEnd 执行的语句End Sub,会话对象举例,网页的点击次数(本例需编辑两个文件)(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文件本网页的点击次数是:在本会话期间的点击次数是:,会话对象举例,验证本例时,同样应为相应目录创建虚拟目录,设为d

20、jcs,再以几种方式打开,结果如图:,第一种地址,第二种地址,会话对象举例,记录访问者个数(本例需编辑两个文件)(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,会话对象举例,网页的点击次

21、数(本例需编辑两个文件)(2)asp文件你是本站的第位访问者目前本站的总用户数为:,会话对象举例,验证本例时,同样应为相应目录创建虚拟目录,设为fwcs,再以几种方式打开,结果如图:,第一种地址,第二种地址,8.3 使用Cookie,当服务器接到一个用户请求时,常常希望知道该用户最近是否访问过本网站的其它网页,为此,浏览器的制造商提出了一种叫作cookie的概念。8.3.1 什么是Cookie 8.3.2 写入Cookie 8.3.3 读出Cookie 8.3.4 使用字典 8.3.5 Cookie的属性 8.3.6 检测浏览器Cookie的启用状态,8.3.1 什么是Cookie,Cooki

22、e是一些在客户端和服务器之间交换的小段信息,用于标识在服务器上请求多个页的客户。Cookie有两种形式:会话cookie和永久cookie。前者是临时性的,只在浏览器打开时存在;后者则永久性地存在于客户的硬盘上,并且在指定过期日期之前一直可用。由服务器将Cookie信息发送给浏览器或写入到浏览器端的硬盘中,其后,浏览器在向一些网站提出访问请求时将同时携带cookie信息。,8.3.2 写入Cookie,1.写入Cookie使用response对象的cookies集合,可以方便地将cookie信息发送到客户端。形式如下:response.cookies(“名称”)=值例如:response.co

23、okies(“xm”)=“张三”,8.3.2 写入Cookie,浏览器将没有过期设置的cookie保存在内存中。若要写入客户端的硬盘中,必须设置cookie的过期时间,形式如下:response.cookies(“名称”).Expires=日期值,写入Cookie举例,网页内容cookie设置完成例中设置了一个名称为“xm”的Cookie,它的值为“张三”,并设置该cookie的失效时间为365天,即一年。,8.3.2 写入Cookie,2 观察Cookie文件从windowsCookies目录中可以找到所有保存在客户端的cookie文件。Cookie被保存成简单的文本文件(扩展名为txt),

24、其名称由用户名和Web站点名组成。Cookie文件的内容包括:域名、过期时间、安全信息以及路径信息。,8.3.2 写入Cookie,打开文件后可以看到一些文字信息和一些不可读的字符和数据。上例中生成的Cookie文件内容如图所示。,“xm”为设置的Cookie名称,,“%D5%C5%C8%Fd”为该Cookie的值,8.3.3 读出Cookie,可以使用request对象的Cookies集合来读取已经设置的Cookie值,形式如下:同样,可以使用循环来读取所有已经设置的Cookie内容。,读出Cookie举例,显示所有的Cookie 目前有如下Cookies存在:next%,存放所有cooki

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

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

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

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

29、字典型cookie的情况下,通过该属性可以得到某一指定名称的cookie是否是字典的信息。,属性使用举例,检索所有的Cookie Else For Each key In Request.Cookies(cookie)Response.Write cookie,如果不是字典显示单个cookie,是字典时对每个关键字循环输出,属性使用举例,检索所有的Cookie Response.Write(&key&)Response.Write=Response.Write Request.Cookies(cookie)(key)Response.Write&vbCrLfNextEnd If Next%,显

30、示字典中对cookie的名称,关键字和值,属性使用举例,为了验证本例,应该首先运行前面几例的脚本,最后再运行本例。结果如图:,运行前面例子,运行前面例子,测试本例,8.3.6 检测浏览器Cookie的启用状态,要正确使用Cookie,需要正确设置浏览器的相应属性。本小节来讨论以下有关内容:1禁止写入cookie 2检查客户端的cookie启用状态,1禁止写入cookie,客户可以通过设置,不让服务器将Cookie写入到硬盘。设置过程如下:,(1)在浏览器的菜单中找到Internet选项,或右击桌面上的浏览器图标,选择属性。,1禁止写入cookie,(2)选择安全选项卡,显示结果如图所示。,在低

31、版本的浏览器上,设置Cookie的启用状态在高级选项卡中。,1禁止写入cookie,(3)单击自定义级别按钮,在出现的对话框中选择,禁止存储在计算机上的Cookies和禁止每个会话Cookies。,1禁止写入cookie,(4)单击确定,显示确认对话框后,单击图中的应用,并关闭窗口。,2检查客户端的cookie启用状态,当客户端设置成不允许写入cookie时,许多网页可能不能正常浏览,为此,必须告诉客户不能浏览的原因。这里,需要首先检测出客户端是否启用了cookie。由于会话级变量是通过cookie来实现的,可以通过先设置一个会话级变量,再读取该变量来判断客户端是否启用了cookie。,2检查

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

33、 Then strQS=?try=Cookie&strQS,重新调用自身,设置会话变量,2检查客户端的cookie启用状态,网页内容 Else strQS=?try=Cookie End If Response.Redirect Request.ServerVariables(SCRIPT_NAME)&strQS End If End If%你的浏览器是接受cookies的!,重定向到自身,2检查客户端的cookie启用状态,浏览结果若浏览器接受cookies的,则显示如图:,2检查客户端的cookie启用状态,浏览结果若浏览器不接受cookies的,则显示如图:,测试本例,本章小结,本章讨论

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号