亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

深入研究Application和Session對象(3)

2019-11-18 21:00:09
字體:
來源:轉載
供稿:網友
三、Global.asa

  aspapplicationsession對象體現了其他ASP內置對象所沒有的特征--事件。每一個訪客訪問服務器時都會觸發一個OnStart事件(第一個訪客會同時觸發Application和Session的OnStart事件,但Application先于Session),每個訪客的會話結束時都會觸發一個OnEnd事件(最后一個訪客會話結束時會同時觸發Application和Session的OnEnd事件,但Session先于Application)。

  OnStart和OnEnd這兩個事件一般應用在虛擬社區中統計在線人數、修改用戶的在線離線狀態等。要具體定義這兩個事件,需要將代碼寫在Global.asa文件,并將該文件放在站點的根目錄下(缺省是/Inetpub/wwwroot/)。另外,Application和Session對象規定了在OnEnd事件里除了Application對象外其他ASP內置對象(Response、Request、Server、Session...)一概不能使用。以下舉一個虛擬社區統計在線人數的例子來說明如何使用這兩個事件。

  文件說明:

  global.asa 位于d:/Inetpub/wwwroot/目錄下

  default.asp 位于d:/Inetpub/wwwroot/目錄下,虛擬社區登錄頁面

  login.asp 位于d:/Inetpub/wwwroot/目錄下,用于檢測用戶輸入的用戶名及密碼

  index.asp 位于d:/Inetpub/wwwroot/目錄下,虛擬社區首頁

  bbs.mdb 位于d:/Inetpub/wwwroot/目錄下,存儲用戶信息的數據庫

  數據庫(access)結構:

   ===bbs表===

  id 用戶ID,長整型

  name 用戶名,文本型

  code 密碼,文本型

  online 在線狀態,是/否

 
  ===global.asa===

  <script LANGUAGE="VBScript" RUNAT="Server">

  Sub Application_OnStart

   application("online")=0

  End Sub

  sub Application_OnEnd

  nd Sub

  Sub Session_OnStart

  End Sub

  Sub Session_OnEnd

   if session.contents("pass") then '判斷是否為登錄用戶的Session_OnEnd

    application.lock

    application("online")=application("online")-1

    application.unlock

   end if

  End Sub

 ?。?script>

  ==============

  ===login.asp===

   ......'密碼驗證,連接數據庫,檢測用戶輸入的用戶名及密碼是否正確

  if 密碼驗證通過 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"))'將用戶的狀態設為在線

  application.unlock

  rs.close

  conn.close

  response.redirect "index.asp" '初始化數據后跳轉到社區首頁

  ===========

  在本例中,用application("online")變量記錄已經登錄社區的在線人數,因為一旦有用戶訪問服務器而不管用戶是否登錄,都會產生OnStart事件,所以不能在OnStart事件里使Applicaiton("online")加一。因為不管是否是登錄用戶的會話結束都會產生OnEnd事件(假如有訪客訪問了服務器但并不登錄社區,他的會話結束后也會產生OnEnd事件),所以在Session_OnEnd事件里用了句if語句來判斷是否為已登錄用戶的OnEnd事件,如果是才將在線人數減一。

  這只是一個統計在線人數的簡單例子,對于一個完整的虛擬社區來說,僅僅統計有多少人在線是不夠的,在本例中數據庫里有個online字段是用來記錄用戶的在線狀態,用戶登錄的時候,在login.asp里將online設為1,但用戶離線時并沒有將online設為0,要完善它,就要修改一下Session_OnEnd事件,在該事件里將online設為0。

  ===global.sas===

  <script 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 '判斷是否為登錄用戶的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>

  ==============

  至此,完整的代碼已經完成了。因為在Application和Session的OnEnd事件里不能使用Server對象,所以要將數據庫的連接及數據庫在服務器上的物理地址(d:/inetpub/wwwroot/bbs.mdb)存儲在application變量中,并在Application_OnStart事件中預先處理。同理,在Session_OnEnd事件中不能用session("pass")來代替session.contents("pass")(以下有詳盡說明)。

  四、本文實例中值得引起注意的兩點

  ⒈OnEnd事件里的session.contents

  剛開始接觸global.asa的朋友經常會將上面Session_OnEnd事件里的

  if session.contents("pass") then 寫成

  if session("pass") then,

  這樣的話系統不會提示錯誤,但是永遠也不會執行then后面的內容,這是因為在OnEnd事件里禁止使用Session對象,但是可以用Session對象的集合來調用session變量。因為IIS并沒提示任何錯誤信息,所以筆者曾經在這上面浪費了很多時間。在此希望大家引以為鑒!

 ?、睞pplication_OnStart事件里用Server.MapPath獲取數據庫的物理地址時應使用絕對地址為了說明這個問題,大家可以做個實驗:將上面Application_OnStart事件里的

  application("db")=Server.MapPath("/bbs.mdb")改為:

  application("db")=Server.MapPath("bbs.mdb")

然后在d:/inetpub/wwwroot/目錄下建立一個test子目錄,寫一個temp.asp在test目錄里。

  ====test.asp====

 ?。迹esponse.write application("db")%>

  ================

再將temp.asp拷貝一份放在根目錄下(d:/inetpub/wwwroot/)。用記事本打開global.asa,再打開兩個瀏覽器,瀏覽器A輸入地址http://localhost/temp.asp,按回車,將在瀏覽器上輸出:

  d:/inetpub/wwwroot/bbs.mdb

然后,在記事本的窗口上點"文件"菜單,選"保存"(使global.asa的修改時間改變,從而使IIS重啟動所有服務),再在瀏覽器B輸入地址http://localhost/test/temp.asp,按回車,在瀏覽器上輸出的是:

  d:/inetpub/wwwroot/test/bbs.mdb

global.asa文件雖然是放在站點根目錄下,但是如果在server.mappath中使用的是相對地址,而觸發Application_OnStart事件的用戶第一次訪問的頁面又不是屬于根目錄的話,得到數據庫的物理地址將不會是期望的結果,希望大家要特別小心。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品亚洲热| 国产欧美日韩亚洲精品| 欧美最猛性xxxxx(亚洲精品)| 亚洲福利视频免费观看| 97精品国产91久久久久久| 欧美激情视频三区| 欧美中文字幕在线观看| 亚洲国产精品va在线看黑人动漫| 日韩在线免费观看视频| 久久精品精品电影网| 97色伦亚洲国产| 国产精品揄拍一区二区| 国产精品人成电影在线观看| 亚洲乱码一区二区| 欧美丝袜一区二区| 国产精品视频99| 国产精品扒开腿做爽爽爽的视频| 操91在线视频| 一区二区三区视频观看| 亚洲精品国精品久久99热一| 亚洲精品综合久久中文字幕| 欧美日韩免费区域视频在线观看| 亚洲一区精品电影| 91精品久久久久久久| 成人在线视频网| 成人免费淫片视频软件| 欧美精品在线观看| 精品免费在线视频| 性色av一区二区三区免费| 日日骚av一区| 久久97精品久久久久久久不卡| 91精品在线观看视频| 97国产suv精品一区二区62| 亚洲国产精品一区二区三区| 中文字幕日韩av综合精品| 国产日韩欧美电影在线观看| 亚洲欧美国产高清va在线播| 亚洲成年人在线播放| 日韩极品精品视频免费观看| 亚洲天堂网站在线观看视频| 亚洲人成网站999久久久综合| 久久成人国产精品| 精品国产区一区二区三区在线观看| 亚洲色图综合网| 欧美电影免费播放| 国模gogo一区二区大胆私拍| 国产精品九九久久久久久久| 懂色av一区二区三区| 日本亚洲欧洲色| 色综合久久悠悠| 亚洲欧美一区二区三区情侣bbw| 91精品国产自产在线老师啪| 精品久久久久久国产| 最好看的2019年中文视频| 久久精品99久久久久久久久| 久久精品国产精品亚洲| 国产成人一区二区三区小说| 国产精品高潮呻吟久久av野狼| 成人午夜高潮视频| 91九色国产社区在线观看| 亚洲色图偷窥自拍| 日韩禁在线播放| 高清欧美电影在线| yellow中文字幕久久| 国产一区香蕉久久| 成人久久一区二区| 国产激情视频一区| 国产精品黄色影片导航在线观看| 欧美超级免费视 在线| 精品国内亚洲在观看18黄| 久久香蕉国产线看观看av| 欧美精品在线观看91| 日韩av在线免费| 欧美精品精品精品精品免费| 国产精品福利在线| 欧美日本啪啪无遮挡网站| 国产精品成人一区| 欧美二区乱c黑人| 色青青草原桃花久久综合| 国产日韩在线亚洲字幕中文| 欧美日韩亚洲精品一区二区三区| 欧美日韩亚洲一区二区| 成人激情免费在线| 欧美激情影音先锋| 久久精品最新地址| 国产精品白丝av嫩草影院| 视频直播国产精品| 亚洲qvod图片区电影| 最近中文字幕mv在线一区二区三区四区| 欧美一级黑人aaaaaaa做受| 精品高清美女精品国产区| 超薄丝袜一区二区| 97成人超碰免| 91亚洲精品一区二区| 久久视频免费在线播放| 亚洲欧洲日韩国产| 最近2019年中文视频免费在线观看| 91超碰中文字幕久久精品| 国产97在线视频| 国产+成+人+亚洲欧洲| 日韩在线观看网站| 久久久免费精品视频| 91久久久亚洲精品| 国产亚洲精品激情久久| 久久伊人色综合| 欧美黄色片视频| 成人a级免费视频| 久久精品久久精品亚洲人| 成人免费观看a| 国产精品高清在线| 尤物九九久久国产精品的分类| 亚洲欧美资源在线| 亚洲午夜久久久久久久| 一区二区三区视频免费在线观看| 日韩美女中文字幕| 欧美精品www| 亚洲а∨天堂久久精品9966| 欧美精品中文字幕一区| 国产精品一区二区三区成人| 18性欧美xxxⅹ性满足| 国产精品久久久久久久久免费看| 78色国产精品| 亚洲欧美激情在线视频| 欧美一区在线直播| 国产日韩精品综合网站| 久久亚洲精品毛片| 亚洲精品成a人在线观看| 国产精品久久久久久久天堂| 国产精品爱啪在线线免费观看| 国产精品欧美风情| 精品五月天久久| 欧美精品一区二区三区国产精品| 北条麻妃一区二区在线观看| 亚洲另类激情图| 黑人狂躁日本妞一区二区三区| 亚洲欧洲日产国码av系列天堂| 欧美国产在线视频| 2019中文字幕在线免费观看| 国产日韩精品综合网站| 国产脚交av在线一区二区| 欧美日韩成人黄色| 欧美情侣性视频| 日本久久久久亚洲中字幕| 成人在线观看视频网站| 国产欧美精品xxxx另类| 成人免费福利在线| 黑人精品xxx一区| 亚洲国产天堂网精品网站| 91精品久久久久久久久中文字幕| 国产精品视频xxxx| 亚洲自拍欧美另类| 亚洲精品视频免费在线观看| 国产视频精品在线| 91中文精品字幕在线视频| 日韩精品中文字幕有码专区| 亚洲欧洲黄色网| 亚洲bt天天射| 国产午夜精品一区理论片飘花| 欧美黑人视频一区| 亚洲欧美福利视频| 国产精品久久久久aaaa九色| 久久露脸国产精品| 超碰97人人做人人爱少妇| 国产主播精品在线|