ASP网页编程之ASP编程进门进阶(十):Global.asa文件...
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。编程我们已晓得Application和Session工具的OnStart、OnEnd事务的剧本,都必需是在Global.asa文件中声明的。那事实Global.asa是甚么样的一个文件?它的感化有何?又该怎样使用呢?且听我渐渐道来。起首.asa是文件后缀名,它是ActiveServerApplication的首字母缩写。Global.asa文件能够办理在ASP使用中两个十分刻薄的工具:Application、Session。
它实际上是一个可选文件,程序编写者能够在该文件中指定事务剧本,并声明具有会话和使用程序感化域的工具。该文件的内容不是用来给用户显现的,而是用来存储事务信息和由使用程序全局利用的工具。该文件必需寄存在使用程序的根目次内。每一个使用程序只能有一个Global.asa文件。
关于Global.asa文件最多见的毛病观点是它能为一样平常的利用的函数和子程序用作书库。Global.asa文件仅能用于创立工具的援用和俘获启动,和停止Application工具和Session工具。
Global.asa文件次要基于会话级事务被会见,在以下三种情形下被挪用:
1,当Application_OnStart或Application_OnEnd事务被触发。
2,当Session_OnStart或Session_OnEnd事务被触发。
3,当援用一个在Global.asa文件里被实例化的工具(Object)。
Global.asa的尺度文件格局以下:
<SCRIPTLANGUAGE="VBScript"RUNAT="Server">SubApplication_OnStartApplication_OnStart当任何客户初次会见该使用程序的首页时运转EndSubSubSession_OnStartSession_OnStart当客户初次运转ASP使用程序中的任何一个页面时运转EndSubSubSession_OnEndSession_OnEnd当一个客户的会话超时或加入使用程序时运转EndSubSubApplication_OnEndApplication_OnEnd当该站点的WEB服务器封闭时运转EndSub</SCRIPT>
1、Session_onStart
先看一个把持用户进进页面的代码:
1,Global.asa(放在被调试的假造目次的根目次上面)
<SCRIPTLANGUAGE="VBScript"RUNAT="Server">SubSession_OnStart只需是用户第一次登录本站,则会跳转到首页response.redirect("htp://www.cnbruce.com/")EndSub</SCRIPT>
然后调试以后假造目次下的任何文件,你会发明一切页面都跳转向htp://www.cnbruce.com/
经由过程此“强迫进进某页”的例子,能够设想当首页必要被存眷的时分长短常有需要的。
上面就以一个“在耳目数”的例子来持续察看Session_OnStart和Session_OnEnd事务。
2、Session_onEnd
2,Global.asa(放在被调试的假造目次的根目次上面)
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>SubApplication_onStart初始值为0Application("OnLine")=0EndSubSubSession_onStart一个用户会见举行记数加1Application.LockApplication("OnLine")=Application("OnLine")+1Application.UnlockEndSubSubSession_OnEnd一个用户历程的停止,记数减1(P.S.假如没有该事务程序,则实行的就是页面会见程序了。)Application.LockApplication("OnLine")=Application("OnLine")-1Application.UnlockEndSub</SCRIPT>
3,online.asp
<%ifrequest.querystring("logout")="true"thensession.Abandon()response.endendif%>以后共有<%=Application("OnLine")%>在线<ahref="online.asp?logout=true">加入</a>
你发明在该页中只要一个Application("OnLine",并且仍是被显现援用的。那末其值来自何方?这恰是Global.asa文件的关头地点。
你能够在本机顺次翻开个窗口,举行举行封闭窗口或加入两种办法的调试。
3、持续细化一下
下面的程序你会发明:当举行“加入”毗连后封闭窗口和间接封闭窗口效果是纷歧样的。由于Session存在工夫的原因,当间接举行封闭窗口,其实不能触发Session_OnEnd事务,以是该怎样完成这个几近不成能的设法呢?
人人都晓得,当网页举行封闭的时分能够连带一个onunload事务,那末该onunload只需能实行Session的刊出功效不就我们必要的吗?空话少说,将online.asp举行修正。
3,online.asp
<%ifrequest.querystring("logout")="true"thensession.Abandon()response.endendif%><bodyonunload=javascript:window.open("exit.asp")>以后共有<%=Application("OnLine")%>在线<ahref="online.asp?logout=true">加入</a>
注重,online.asp举行onunload的时分会翻开exit.asp,那只需在exit.asp中再设置_
session.Abandon()不就OK了。
4,exit.asp
<%session.Abandon()%><script>self.close()</script>
固然,加了段Script剧本,目标是举行Session的刊出今后当即举行封闭自己。
那如今基础一个在线统计的Web使用就能够了。
4、深切研讨Global.asa
从下面的调试中,触类旁通的你,必定会提出一个成绩:怎样把持注册用户在耳目数?
那上面几个文件一个一个看:
5,Global.asa(放在被调试的假造目次的根目次上面)
<SCRIPTLANGUAGE="VBScript"RUNAT="Server">SubApplication_OnStartapplication("online")=0EndSubSubSession_OnStartEndSubSubSession_OnEndifsession.contents("pass")then判别是不是为登任命户的Session_OnEndapplication.lockapplication("online")=application("online")-1application.unlockendifEndSubSubApplication_OnEndEndSub</SCRIPT>
由于一旦有效户会见服务器而不论用户是不是登录,城市发生OnStart事务,而如今必要的只是登任命户的在线,以是不克不及在OnStart事务里使Applicaiton("online"加1。
又由于不论是否是登任命户的会话停止城市发生OnEnd事务(假设有访客会见了服务器但其实不登录,他的会话停止后也会发生OnEnd事务),以是在Session_OnEnd事务里用了句if语句来判别是不是为已登任命户的OnEnd事务,假如是才将在耳目数减1。
而且值得注重的是:session.contents("pass"的利用,由于在OnEnd事务里克制利用Session工具,可是能够用Session工具的汇合来挪用session变量。也就是说不克不及间接写session("pass",而是必要写session.contents("pass"。
6,login.asp
<%ifrequest.querystring("logout")="true"thensession.Abandon()endifsubmitname=request.form("submit")ifsubmitname="submit"thenname=request.form("name")pwd=request.form("pwd")ifname="cnbruce"andpwd="cnrose"thensession("name")=namesession("pass")=trueelseresponse.write"</p>对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了, 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... Session:这个存储跟客户端会话过程的数据,默认20分钟失效
页:
[1]