|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。上一讲中,我们进修了Request工具的Form数据汇合、QueryString数据汇合和ServerVariables数据汇合。在持续上面的进修之前,倡议你先放松一下,由于接上去要先容的Application工具绝对对照笼统,刚入手下手了解起来生怕会不辨器材。牢记:当你找不到北时,便不要过量思索Application工具究竟是甚么器材?仍是一句老话,先学会利用它。
1、懂得Application工具。为了提神,我们先看一个计数器的例程(你应当运转它以便于了解):
先编纂一个wuf16.htm文件:
<html>
<body>
纪录某个页面的点击数示例:<ahref="wuf17.asp">wuf17.asp</a>
</body>
</html>
wuf17.asp的代码以下:
<%@LANGUAGE=VBScript%>
<%wuf17.asp-纪录某一页面的会见数(计数器道理)
OptionExplicit
DimCountWeb
CountWeb=Request.ServerVariables("SCRIPT_NAME")
如许包管每一个页面都有一个独一的变量,制止凌乱
%>
<HTML><BODY>
<%
Response.WriteCountWeb&"<Br><Br>"&vbcrlf
Application.Lock请看解说
Application(CountWeb)=Application(CountWeb)+1累加器,点击数加1
Application.UnLock
Response.Write"WEB服务器封闭重启前该页的点击总数为:"&Application(CountWeb)
%>
</BODY></HTML>
运转这个程序时,对年夜部分的人来讲,只要一台呆板,既是Web服务器,又是客户端。那末你只能设想如许一种景况了:你的这两个主页文件放在很远的Web服务器上,而如潮流般的国际外用户正经由过程扫瞄器会见它们。每一个用户点击一次,Application(CountWeb)的值就加1,并且只需寄存文件wuf17.asp的服务器没有封闭,Application(CountWeb)就将一向累加下往。可是注重,假如服务器封闭后重启,则Application(CountWeb)将从头从0入手下手计数(我晕,我说我的页面会见数怎样总是一名数)。为了不这类永久从零入手下手的计数情形,你必需要在服务器封闭之前将Application(CountWeb)的值保留起来,下次必要时再掏出来,就可以够按次累计下往了,详细怎样做,且听N回后分化。
接上去的成绩,就是Application.Lock、UnLock是甚么意义?方才我们做了一个假定,大批的用户正在会见该页面,而每个用户的点击城市产生Application(CountWeb)加1,想一想看,如许不就乱套了(甚么!想不出,那一定是你的主页整天只要你一团体援助),以是得有个先来后到的划定规矩。当某一用户会见该页面,必要修正Application(CountWeb)的值时,利用Lock办法加锁,制止其他用户修正,修正完后,再解锁。
从上例中您是不是已看出,Application工具供应给一切用户共享信息(Application(CountWeb)),它所面向的是一切用户(每一个用户的会见城市招致计数器加1)。Application工具另有两个事务,Application_OnStart事务和Application_OnEnd事务(您可万万别晕,这只是面向工具编程言语中起步的观点),利用时语法以下:
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>
SubApplication_OnEnd
‘当WEB服务器封闭时,将激活Application_OnEnd事务
‘也就是程序将实行放在这里的代码
‘因而服务器封闭前我们能够在这里将wuf17.asp中Application(CountWeb)的值
‘保留起来,如放在一个文本文件中。
EndSub
SubApplication_OnStart
‘当第一个用户扫瞄ASP网页时,将激活Application_OnStart事务,而今后其他用户扫瞄时,就不产生这一事务了
‘也就是程序将实行放在这里的代码
‘因而可在这里读出保留在文本文件中Application(CountWeb)的值。
EndSub
</SCRIPT>
上面经由过程一个实例来讲明怎样利用事务,该程序的感化是统计站点一切页面的总点击数。
文件wuf18.asp的代码(站点内其他页面文件与这个文件相似):
<%@LANGUAGE=VBScript%>
<%OptionExplicit
‘站内一切页面文件都应包含这句<!--#includefile="wuf19.asp"-->%>
<!--#includefile="wuf19.asp"-->
<HTML><BODY>
在服务器封闭重启之前站点一切页面总点击数:<%=Application("CountAll")%>
</BODY></HTML>
文件wuf19.asp的代码:
<%wuf19.asp
Application.Lock
Application("CountAll")=Application("CountAll")+1
Application.UnLock
%>
文件wuf18.asp与wuf19.asp放在统一目次下。文件global.asa的代码:
注重:事务处置程序必需以名为“global.asa”的文本文件存盘,并且必需放在假造路径的根目次下(一样平常就是与index.htm或default.htm文件放在统一目次下,比方:以我的呆板为例,就相对路径而言,global.asa放在c:InetPubhome下,而wuf18.asp和wuf19.asp放在c:InetPubhomeasp下),统一假造路径只同意有一个global.asa文件存在。
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>
global.asa-wuf18.asp鄙人载包中的文件名为18global.asa,利用时要更名。
SubApplication_OnStart
‘当第一个用户扫瞄网页时,置计数器初值为0,
‘而今后其他用户扫瞄时,不再实行以下代码
Application.Lock
Application("CountAll")=0
Application.UnLock
EndSub
</SCRIPT>
扫瞄wuf18.asp检察运转了局。看来,仅仅学会利用Application工具其实不难。
2、熟悉Session工具。有了后面的Application工具做展垫,Session工具就简单多了。它与Application工具相似,只不外是仅仅用来纪录单个用户的相干信息,它面向单个用户,因而我们可使用Session工具存储某单个用户的信息。
与Application工具一样,Session工具也有两个事务:Session_OnStart事务和Session_OnEnd事务。利用语法与Application工具相似。
值得一提的是,利用Session工具前,必需确认扫瞄器的Cookie功效已启用(默许设置就能够了)。
上面举一个实例,文件global.asa的请求同上,因而上例中的global.asa将被本例中的global.asa掩盖。
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>
global.asa-wuf20.asp鄙人载包中文件名为20global.asa
SubSession_OnStart
Session("In")=Now‘函数Now获得以后工夫
EndSub
SubSession_OnEnd
Session("Out")=Now
Application.Lock
Application("Out")=Session("Out")
Application("In")=Session("In")
Application(“Out”).UnLock
EndSub
</SCRIPT>
文件wuf20.asp:
<%@Language=VBScript%>
<HTML>
<BODY>
<%wuf20.asp
Response.Write"默许Timeout设置:"&Session.Timeout&"分钟<Br>"
Session.Timeout=1
Response.Write"您进进本站的工夫:"&Session("In")&"<Br>"
Response.Write"请在1分钟后革新本页"&"<Br><Br>"
ifNotIsEmpty(Application("Out"))then
Response.Write"您前次进进本站的工夫:"&Application("In")&"<Br>"
Response.Write"您前次分开本站的工夫:"&Application("Out")&"<Br>"
Response.Write"扫瞄工夫(分钟):"&_
Datediff("n",Application("In"),Application("Out"))&"<Br><Br>"
EndIf
ifIsEmpty(Session("Out"))then
Response.Write"革新前和革新后Session(""Out"")的值都为空"&"<Br>"
EndIf
%>
</BODY>
</HTML>
当用户第一次扫瞄网页时,产生Session_OnStart事务,程序纪录用户本次进进网页的工夫,而此时不会产生Session_OnEnd事务,故Application("Out")值为空,程序不会显现扫瞄工夫。
我们晓得,Application工具的保存期为第一个用户扫瞄网页直至服务器封闭。而Session工具的保存期为用户第一次扫瞄网页(会话入手下手)直至会话停止。那甚么时分会话停止呢?详细到本例中,Session.Timeout=1设置会话超时为1分钟,即假如长达1分钟没有向Web服务器供应哀求,则会话超时,招致会话停止,产生Session_OnEnd事务,程序实行Session_OnEnd内的代码。在这里我们将进进和分开工夫分离放进Application("In")和Application("Out"),由于会话停止后,Session工具将不复存在,这点我们在代码的最初做了考证。
从这个例程,能够看出:
1.Application工具和Session工具的保存期分歧。
2.Session工具是针对单个用户的,它的值寄存在客户端,其他用户的扫瞄对该单用户的Session工具没有任何影响。单个用户只能读写本人Session工具的值(如:Session("In"))。
3.注重在Response.Write中显现双引号的暗示办法:(""Out"")。
4.出格提示:该程序没有有用性,仅供调试用(仅合用于只要一个用户扫瞄的情形),请思索这是为何?谜底见本文末。
提醒:请注重Application工具的特征。
3、一个典范的实例:怎样在网页上显现在耳目数
鄙人面的例子中,用Application("Online")来寄存在耳目数,用Application("CountAll")寄存总会见人数。
道理:当一个新用户扫瞄网页时,产生Session_OnStart事务,在耳目数加1,会见用户数也加1。当某用户分开时,会话超时后会产生Session_OnEnd事务,在耳目数减1。
Global.asa代码以下:
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>
Global.asa-wuf21.asp
SubApplication_OnStart
Application.Lock
在这里读出Application("CountAll")的初始值
Application.UnLock
EndSub
SubSession_OnStart
Application.Lock
Application("Online")=Application("Online")+1
Application("CountAll")=Application("CountAll")+1
Application.UnLock
EndSub
SubSession_OnEnd
Application.Lock
Application("Online")=Application("Online")-1
Application.UnLock
EndSub
SubApplication_OnEnd
Application.Lock
应当在这里将Application("CountAll")保留到文件中
Application.UnLock
EndSub
</SCRIPT>
Wuf21.asp代码以下:
<%@Language=VBScript%>
<HTML>
<BODY>
<%Session.Timeout=5%>
<P>在耳目数:<%=Application("Online")%></P>
<P>会见总人数:<%=Application("CountAll")%></P>
</BODY>
</HTML>
请注重将本例程与wuf17.asp对照,后者是盘算点击数,而前者是盘算会见人数。
谜底:因为Applicaton工具合用于一切用户,以是在多用户的情形下,其他用户的扫瞄也会改动Application(“In”)和Application(“Out”)的值asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般 |
|