欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
深入研究Application和Session對象
深入研究Application和Session對象
用ASP編寫(xiě)虛擬社區、網(wǎng)上購物等程序時(shí),Application和Session對象具有舉足輕重的作用,能夠靈活合理地運用這兩個(gè)對象是提高程序質(zhì)量的關(guān)鍵。下面讓筆者根據自己在這方面的經(jīng)驗,向大家深入介紹一下ASP的這兩個(gè)內建對象。
  一、Application對象的成員概述
  Application對象成員包括Application對象的集合、方法和事件。
 ?、盇pplication對象的集合
  Contents集合:沒(méi)有使用<OBJECT>元素定義的存儲于A(yíng)pplicaiton對象中的所有變量的集合
  StaticObjects:使用<OBJECT>元素定義的存儲于A(yíng)pplication對象中的所有變量 的集合
  例:在default.asp中有如下賦值
  application("a")="a"
  application("b")=128
  application("c")=false
  則有contents集合
  application.contents(1)="a" "也可寫(xiě)為application.contents("a")="a"
  application.contents(2)=128 "也可寫(xiě)為application.contents("b")=128
  application.contents(3)=false "也可寫(xiě)為application.contents("c")=false
  在此筆者推薦你在調用時(shí)使用類(lèi)如application.contents("a")的方法,因為這樣更為直觀(guān),如果用序號來(lái)表示的話(huà)則要考慮賦值的先后順序。
 ?、睞pplication對象的方法
  Contents.Remove("變量名"):從Application.Contents集合中刪除指定的變量
  Contents.RemoveAll() :把Application.Contents集合中的所有變量刪除
  Lock() :鎖定Application對象,使得只有當前的ASP頁(yè)對內容能進(jìn)行訪(fǎng)問(wèn)
  Unlock() :解除對Application對象的鎖定
  例:在default.asp中:
  application("a")="a"
  application("b")=128
  application("c")=false
  response.write application.contents(1)&"<br>"
  response.write application.contents(2)&"<br>"
  response.write application.contents(3)&"<br>"
  response.write "After Remove b:"
  application.contents.remove("b")
  response.write application.contents(1)&"<br>"
  response.write application.contents(2)&"<br>"
  執行結果:
  a
  128
  False
  After Remove b:
  a
  False
  如果要刪除集合中所有變量用application.contents.removeall即可,至于Lock和Unlock方法在實(shí)際中經(jīng)常用到,讀者也比較熟悉,在此就不在累贅。
 ?、矨pplication對象事件
  OnStart:第一個(gè)訪(fǎng)問(wèn)服務(wù)器的用戶(hù)第一次訪(fǎng)問(wèn)某一頁(yè)面時(shí)發(fā)生
  OnEnd :當最后一個(gè)用戶(hù)的會(huì )話(huà)已經(jīng)結束并且該會(huì )話(huà)的OnEnd事件所有代碼已經(jīng)執行完畢后發(fā)生,或最后一個(gè)用戶(hù)訪(fǎng)問(wèn)服務(wù)器一段時(shí)間(一般為20分鐘)后仍然沒(méi)有人訪(fǎng)問(wèn)該服務(wù)器產(chǎn)生。
  想要定義application對象的OnStart和OnEnd事件里做什么需要將代碼寫(xiě)在Global.asa這個(gè)文件里(下文有舉例),并且將該文件放在站點(diǎn)的根目錄下(一般是Inetpub\wwwroot\)
  二、Session對象的成員概述
  Session對象的成員比Application對象多一項屬性,即:集合、屬性、方法、事件
 ?、盨ession對象的集合
  Contents :沒(méi)有使用<OBJECT>元素定義的存儲于特定Session對象的所有變量的集合。
  StaticObject:使用<OBJECT>元素定義的、存儲于Session對象中的所有變量的集合。
  例:在default.asp中有如下賦值
  session("a")="a"
  session("b")=128
  session("c")=false
  則有contents集合
  session.contents(1)="a" "也可寫(xiě)為session.contents("a")="a"
  session.contents(2)=128 "也可寫(xiě)為session.contents("b")=128
  session.contents(3)=false "也可寫(xiě)為session.contents("c")=false
 ?、睸ession對象的屬性
  CodePage: 可讀/可寫(xiě)。整型。定義用于在瀏覽器中顯示頁(yè)內容的代碼頁(yè)。代碼頁(yè)是字符集的數字值,不同的語(yǔ)言使用不同的代碼頁(yè)。例如,ANSI代碼頁(yè)為1252,日文代碼頁(yè)為932,簡(jiǎn)體中文代碼頁(yè)為936。
  LCID : 可讀/可寫(xiě)。整型。定義發(fā)送給瀏覽器的頁(yè)面地區標識。LCID是唯一地標識地區的一個(gè)國際標準縮寫(xiě),例如,2057定義當前地區的貨幣符號是"£"。
  SessionID: 只讀。長(cháng)整型。返回本會(huì )話(huà)的會(huì )話(huà)標識符。每創(chuàng )建一個(gè)會(huì )話(huà),由服務(wù)器自動(dòng)分配一個(gè)標識符??梢愿鶕闹蹬袛鄡蓚€(gè)用戶(hù)是誰(shuí)先訪(fǎng)問(wèn)服務(wù)器。
  Timeout : 可讀/可寫(xiě)。整型。為會(huì )話(huà)定義以分鐘為單位的超時(shí)限定。如果用戶(hù)在這個(gè)時(shí)間內沒(méi)有刷新或請求任何一個(gè)網(wǎng)頁(yè),則該用戶(hù)產(chǎn)生的會(huì )話(huà)自動(dòng)結束。缺省值是20。
以上屬性在實(shí)際應用中作用不大,而且基本上不需要怎么修改,這幾個(gè)屬性也沒(méi)什么特殊的地方。
 ?、砈ession對象的方法
  Contents.Remove("變量名"): 從Session.contents集合中刪除指定的變量
  Contents.Removeall() : 刪除Session.contents集合中的所有變量
  Abandon() : 結束當前用戶(hù)會(huì )話(huà)并且撤消當前Session對象。
  Session對象的Contents.Remove("變量名")和Contents.Removeall()方法與Application對象的基本上沒(méi)什么區別,為幫助理解,大家可以參照上面的例子將Application改為Session。這里要說(shuō)明一下的是Contents.Removeall()和Abandon()的區別,執行這兩個(gè)方法都會(huì )釋放當前  用戶(hù)會(huì )話(huà)的所有Session變量,不同的是Contents.Removeall()單純地釋放Session變量的值而不終止當前的會(huì )話(huà),而Abandon()除了釋放Session變量外還會(huì )終止會(huì )話(huà)引發(fā)Session_OnEnd事件,希望大家注意兩者的區別。
 ?、碨ession對象的事件
  OnStart: 當ASP用戶(hù)會(huì )話(huà)產(chǎn)生時(shí)觸發(fā),一旦有任一用戶(hù)對本服務(wù)器請求任一頁(yè)面即產(chǎn)生該事件。
  OnEnd : 當ASP用戶(hù)會(huì )話(huà)結束時(shí)觸發(fā),當使用Abandon()方法或超時(shí)也會(huì )觸發(fā)該事件。
  這兩個(gè)事件和Application的OnStart、OnEnd事件一樣,也是必須放在Global.asa文件里,下面就重點(diǎn)和大家研究一下這四個(gè)事件的使用。
  三、Global.asa
  ASP的Application和Session對象體現了其他ASP內置對象所沒(méi)有的特征--事件。每一個(gè)訪(fǎng)客訪(fǎng)問(wèn)服務(wù)器時(shí)都會(huì )觸發(fā)一個(gè)OnStart事件(第一個(gè)訪(fǎng)客會(huì )同時(shí)觸發(fā)Application和Session的OnStart事件,但Application先于Session),每個(gè)訪(fǎng)客的會(huì )話(huà)結束時(shí)都會(huì )觸發(fā)一個(gè)OnEnd事件(最后一個(gè)訪(fǎng)客會(huì )話(huà)結束時(shí)會(huì )同時(shí)觸發(fā)Application和Session的OnEnd事件,但Session先于A(yíng)pplication)。
  OnStart和OnEnd這兩個(gè)事件一般應用在虛擬社區中統計在線(xiàn)人數、修改用戶(hù)的在線(xiàn)離線(xiàn)狀態(tài)等。要具體定義這兩個(gè)事件,需要將代碼寫(xiě)在Global.asa文件,并將該文件放在站點(diǎn)的根目錄下(缺省是\Inetpub\wwwroot\)。另外,Application和Session對象規定了在OnEnd事件里除了Application對象外其他ASP內置對象(Response、Request、Server、Session...)一概不能使用。以下舉一個(gè)虛擬社區統計在線(xiàn)人數的例子來(lái)說(shuō)明如何使用這兩個(gè)事件。
  文件說(shuō)明:
  global.asa 位于d:\Inetpub\wwwroot\目錄下
  default.asp 位于d:\Inetpub\wwwroot\目錄下,虛擬社區登錄頁(yè)面
  login.asp 位于d:\Inetpub\wwwroot\目錄下,用于檢測用戶(hù)輸入的用戶(hù)名及密碼
  index.asp 位于d:\Inetpub\wwwroot\目錄下,虛擬社區首頁(yè)
  bbs.mdb 位于d:\Inetpub\wwwroot\目錄下,存儲用戶(hù)信息的數據庫
  數據庫(ACCESS)結構:
   ===bbs表===
  id 用戶(hù)ID,長(cháng)整型
  name 用戶(hù)名,文本型
  code 密碼,文本型
  online 在線(xiàn)狀態(tài),是/否 
  ===global.asa===
 ?。約cript LANGUAGE="VBScript" RUNAT="Server">
  Sub Application_OnStart
   application("online")=0
  End Sub
  sub Application_OnEnd
  end Sub
  Sub Session_OnStart

 


  End Sub
  Sub Session_OnEnd
   if session.contents("pass") then "判斷是否為登錄用戶(hù)的Session_OnEnd
    application.lock
    application("online")=application("online")-1
    application.unlock
   end if
  End Sub
 ?。?script>
  ==============
  ===login.asp===
   ......"密碼驗證,連接數據庫,檢測用戶(hù)輸入的用戶(hù)名及密碼是否正確
  if 密碼驗證通過(guò) then
   session("name")=rs("name")
   session("id")=rs("id")
   session("pass")=true
  else
   rs.close
   conn.close
   response.write "密碼錯誤!"
   response.end
  end if
  application.lock
  application("online")=application("online")+1
  conn.Execute ("update bbs set online=1 where id="&session("id"))"將用戶(hù)的狀態(tài)設為在線(xiàn)
  application.unlock
  rs.close
  conn.close
  response.redirect "index.asp" "初始化數據后跳轉到社區首頁(yè)
  ===========
  在本例中,用application("online")變量記錄已經(jīng)登錄社區的在線(xiàn)人數,因為一旦有用戶(hù)訪(fǎng)問(wèn)服務(wù)器而不管用戶(hù)是否登錄,都會(huì )產(chǎn)生OnStart事件,所以不能在OnStart事件里使Applicaiton("online")加一。因為不管是否是登錄用戶(hù)的會(huì )話(huà)結束都會(huì )產(chǎn)生OnEnd事件(假如有訪(fǎng)客訪(fǎng)問(wèn)了服務(wù)器但并不登錄社區,他的會(huì )話(huà)結束后也會(huì )產(chǎn)生OnEnd事件),所以在Session_OnEnd事件里用了句if語(yǔ)句來(lái)判斷是否為已登錄用戶(hù)的OnEnd事件,如果是才將在線(xiàn)人數減一。
  這只是一個(gè)統計在線(xiàn)人數的簡(jiǎn)單例子,對于一個(gè)完整的虛擬社區來(lái)說(shuō),僅僅統計有多少人在線(xiàn)是不夠的,在本例中數據庫里有個(gè)online字段是用來(lái)記錄用戶(hù)的在線(xiàn)狀態(tài),用戶(hù)登錄的時(shí)候,在login.asp里將online設為1,但用戶(hù)離線(xiàn)時(shí)并沒(méi)有將online設為0,要完善它,就要修改一下Session_OnEnd事件,在該事件里將online設為0。
  ===global.sas===
 ?。約cript LANGUAGE="VBScript" RUNAT="Server">
  Sub Application_OnStart
   application("online")=0
   set application("conn")=Server.CreateObject("ADODB.Connection")
   application("db")=Server.MapPath("\bbs.mdb") "此處最好使用絕對路徑\bbs.mdb,下文有詳細介紹
  End Sub
  sub Application_OnEnd
   set application("conn")=nothing
  End Sub
   Sub Session_OnStart
  End Sub
  Sub Session_OnEnd
   if session.contents("pass") then "判斷是否為登錄用戶(hù)的Session_OnEnd
     application("con").open ="driver={Microsoft Access Driver (*.mdb)};dbq="&application("db")
      application.lock
      application("online")=application("online")-1
      application("con").Execute ("update friends set online=0 where id="&session.contents("id"))
      application.unlock
      application("con").close
   end if
  End Sub
 ?。迹痵cript> 
  至此,完整的代碼已經(jīng)完成了。因為在A(yíng)pplication和Session的OnEnd事件里不能使用Server對象,所以要將數據庫的連接及數據庫在服務(wù)器上的物理地址(d:\inetpub\wwwroot\bbs.mdb)存儲在application變量中,并在A(yíng)pplication_OnStart事件中預先處理。同理,在Session_OnEnd事件中不能用session("pass")來(lái)代替session.contents("pass")(以下有詳盡說(shuō)明)。
  四、本文實(shí)例中值得引起注意的兩點(diǎn)
 ?、監nEnd事件里的session.contents
  剛開(kāi)始接觸global.asa的朋友經(jīng)常會(huì )將上面Session_OnEnd事件里的
  if session.contents("pass") then 寫(xiě)成
  if session("pass") then,
  這樣的話(huà)系統不會(huì )提示錯誤,但是永遠也不會(huì )執行then后面的內容,這是因為在OnEnd事件里禁止使用Session對象,但是可以用Session對象的集合來(lái)調用session變量。因為IIS并沒(méi)提示任何錯誤信息,所以筆者曾經(jīng)在這上面浪費了很多時(shí)間。在此希望大家引以為鑒!
 ?、睞pplication_OnStart事件里用Server.MapPath獲取數據庫的物理地址時(shí)應使用絕對地址為了說(shuō)明這個(gè)問(wèn)題,大家可以做個(gè)實(shí)驗:將上面Application_OnStart事件里的
  application("db")=Server.MapPath("\bbs.mdb")改為:
  application("db")=Server.MapPath("bbs.mdb")
然后在d:\inetpub\wwwroot\目錄下建立一個(gè)test子目錄,寫(xiě)一個(gè)temp.asp在test目錄里。
  ====test.asp====
 ?。迹esponse.write application("db")%>
  ================
再將temp.asp拷貝一份放在根目錄下(d:\inetpub\wwwroot\)。用記事本打開(kāi)global.asa,再打開(kāi)兩個(gè)瀏覽器,瀏覽器A輸入地http://localhost/temp.asp,按回車(chē),將在瀏覽器上輸出:
  d:\inetpub\wwwroot\bbs.mdb
然后,在記事本的窗口上點(diǎn)"文件"菜單,選"保存"(使global.asa的修改時(shí)間改變,從而使IIS重啟動(dòng)所有服務(wù)),再在瀏覽器B輸入地http://localhost/test/temp.asp,按回車(chē),在瀏覽器上輸出的是:
  d:\inetpub\wwwroot\test\bbs.mdb
global.asa文件雖然是放在站點(diǎn)根目錄下,但是如果在server.mappath中使用的是相對地址,而觸發(fā)Application_OnStart事件的用戶(hù)第一次訪(fǎng)問(wèn)的頁(yè)面又不是屬于根目錄的話(huà),得到數據庫的物理地址將不會(huì )是期望的結果,希望大家要特別小心。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP編程入門(mén)進(jìn)階
ASP教程:第十篇 Global.asa文件的使用及Chat程序
Global.asa 參考----編程資料集中營(yíng)
《ASP建站十大常用程序》之五:計數器
ASP內建對象Application 和 Session和cookie的用法
ASP.NET Session的七點(diǎn)認識
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久