ASP Global.asa


ULASHISH

Global.asa fayli

Global.asa fayli — ixtiyoriy fayl bo‘lib, unda ASP ilovasidagi har bir sahifa murojaat qila oladigan obyektlar, o‘zgaruvchilar va metodlar e’lonlari bo‘lishi mumkin.

Global.asa ichida barcha yaroqli brauzer skriptlaridan (JavaScript, VBScript, JScript, PerlScript va h.k.) foydalanish mumkin.

Global.asa faylida faqat quyidagilar bo‘lishi mumkin:

  • Application hodisalari
  • Session hodisalari
  • <object> e’lonlari
  • TypeLibrary e’lonlari
  • #include direktivasi

Eslatma: Global.asa fayli ASP ilovasining ildiz katalogida saqlanishi kerak va har bir ilovada faqat bitta Global.asa fayli bo‘lishi mumkin.


Global.asa’dagi hodisalar

Global.asa faylida application va session obyektlariga ilova/sessiya boshlanganda nima qilish va ilova/sessiya tugaganda nima qilish kerakligini aytishingiz mumkin. Buning uchun kod hodisa ishlovchilariga (event handlers) joylashtiriladi. Global.asa faylida to‘rt turdagi hodisa bo‘lishi mumkin:

Application_OnStart - ASP ilovasidagi birinchi sahifani BIRINCHI foydalanuvchi chaqirganda yuz beradi. Bu hodisa veb-server qayta ishga tushirilgandan keyin yoki Global.asa fayli tahrirlangandan keyin yuz beradi. "Session_OnStart" hodisasi shu hodisadan so‘ng darhol yuz beradi.

Session_OnStart - Bu hodisa HAR SAFAR YANGI foydalanuvchi ASP ilovasidagi birinchi sahifasini so‘raganda yuz beradi.

Session_OnEnd - Bu hodisa HAR SAFAR foydalanuvchi sessiyani tugatganda yuz beradi. Foydalanuvchi sessiyasi foydalanuvchi belgilangan vaqt davomida hech bir sahifani so‘ramaganidan keyin tugaydi (standart holatda bu 20 daqiqa).

Application_OnEnd - Bu hodisa OXIRGI foydalanuvchi sessiyani tugatgandan keyin yuz beradi. Odatda bu hodisa veb-server to‘xtaganda yuz beradi. Bu protsedura Application to‘xtagandan keyin sozlamalarni tozalash, masalan, yozuvlarni o‘chirish yoki matnli fayllarga ma’lumot yozish uchun ishlatiladi.

Global.asa fayli taxminan quyidagicha ko‘rinishi mumkin:

<script language="vbscript" runat="server"> sub Application_OnStart 'qandaydir kod end sub sub Application_OnEnd 'qandaydir kod end sub sub Session_OnStart 'qandaydir kod end sub sub Session_OnEnd 'qandaydir kod end sub </script>

Eslatma: Global.asa fayliga skriptlarni joylash uchun ASP skript ajratgichlaridan (<% va %>) foydalana olmaganimiz sababli, subprotseduralarni HTML <script> elementi ichiga joylashtiramiz.



<object> e’lonlari

Global.asa faylida <object> tegi yordamida sessiya yoki ilova ko‘rinish sohasiga (scope) ega obyektlar yaratish mumkin.

Eslatma: <object> tegi <script> tegidan tashqarida bo‘lishi kerak!

Sintaksis

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}> .... </object>

Parametr Tavsif
scope Obyektning ko‘rinish sohasini (scope) belgilaydi (Session yoki Application)
id Obyekt uchun noyob id belgilaydi
ProgID Sinf identifikatori (class id) bilan bog‘langan identifikator. ProgID formati: [Vendor.]Component[.Version]

ProgID yoki ClassID dan biri ko‘rsatilishi shart.

ClassID COM sinf obyekti uchun noyob identifikatorni belgilaydi.

ProgID yoki ClassID dan biri ko‘rsatilishi shart.

Misollar

Birinchi misol ProgID parametri yordamida sessiya ko‘rinish sohasiga ega "MyAd" nomli obyekt yaratadi:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"> </object>

Ikkinchi misol ClassID parametri yordamida ilova ko‘rinish sohasiga ega "MyConnection" nomli obyekt yaratadi:

<object runat="server" scope="application" id="MyConnection" classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21"> </object>

Global.asa faylida e’lon qilingan obyektlardan ilovadagi istalgan skript foydalanishi mumkin:

GLOBAL.ASA: <object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"> </object> You could reference the object "MyAd" from any page in the ASP application: SOME .ASP FILE: <%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

TypeLibrary e’lonlari

TypeLibrary — COM obyektiga mos keladigan DLL fayli mazmuni uchun konteyner. Global.asa fayliga TypeLibrary’ga murojaatni qo‘shish orqali COM obyektining konstantalaridan foydalanish mumkin bo‘ladi, ASP kodi esa xatolar haqida yaxshiroq xabar bera oladi. Agar veb-ilovangiz tip kutubxonalarida (type library) ma’lumot tiplari e’lon qilingan COM obyektlariga tayansa, bu tip kutubxonalarini Global.asa faylida e’lon qilishingiz mumkin.

Sintaksis

<!--METADATA TYPE="TypeLib" file="filename" uuid="id" version="number" lcid="localeid" -->

Parametr Tavsif
file Tip kutubxonasiga absolyut yo‘lni belgilaydi.

file yoki uuid parametrlaridan biri talab qilinadi

uuid Tip kutubxonasi uchun noyob identifikatorni belgilaydi.

file yoki uuid parametrlaridan biri talab qilinadi

version Ixtiyoriy. Versiyani tanlash uchun ishlatiladi. Agar so‘ralgan versiya topilmasa, eng so‘nggi versiya ishlatiladi
lcid Ixtiyoriy. Tip kutubxonasi uchun ishlatiladigan lokal identifikatori (locale identifier)

Xato qiymatlari

Server quyidagi xato xabarlaridan birini qaytarishi mumkin:

Xato kodi Tavsif
ASP 0222 Tip kutubxonasi noto‘g‘ri ko‘rsatilgan
ASP 0223 Tip kutubxonasi topilmadi
ASP 0224 Tip kutubxonasini yuklab bo‘lmaydi
ASP 0225 Tip kutubxonasini o‘rab (wrap) bo‘lmaydi

Eslatma: METADATA teglari Global.asa faylining istalgan joyida (<script> teglari ichida ham, tashqarisida ham) kelishi mumkin. Biroq METADATA teglarini Global.asa faylining boshiga yaqin joylashtirish tavsiya etiladi.


Cheklovlar

Global.asa fayliga nimalarni qo‘shish mumkinligi bo‘yicha cheklovlar:

  • Global.asa faylida yozilgan matnni ko‘rsatib bo‘lmaydi. Bu fayl ma’lumotlarni ko‘rsata olmaydi
  • Application_OnStart va Application_OnEnd subprotseduralarida faqat Server va Application obyektlaridan foydalanish mumkin. Session_OnEnd subprotsedurasida Server, Application va Session obyektlaridan foydalanish mumkin. Session_OnStart subprotsedurasida istalgan o‘rnatilgan (built-in) obyektdan foydalanish mumkin

Subprotseduralardan qanday foydalanish

Global.asa ko‘pincha o‘zgaruvchilarni initsializatsiya qilish uchun ishlatiladi.

Quyidagi misol tashrif buyuruvchining veb-saytga birinchi marta kelgan aniq vaqtini qanday aniqlashni ko‘rsatadi. Vaqt "started" nomli sessiya o‘zgaruvchisida saqlanadi va "started" o‘zgaruvchisining qiymatiga ilovadagi istalgan ASP sahifasidan murojaat qilish mumkin:

<script language="vbscript" runat="server"> sub Session_OnStart Session("started")=now() end sub </script>

Global.asa sahifalarga kirishni boshqarish uchun ham ishlatilishi mumkin.

Quyidagi misol har bir yangi tashrif buyuruvchini boshqa sahifaga, bu holda "newpage.asp" nomli sahifaga qanday yo‘naltirishni ko‘rsatadi:

<script language="vbscript" runat="server"> sub Session_OnStart Response.Redirect("newpage.asp") end sub </script>

Global.asa fayliga funksiyalarni ham qo‘shishingiz mumkin.

Quyidagi misolda Application_OnStart subprotsedurasi veb-server ishga tushganda bajariladi. So‘ng Application_OnStart subprotsedurasi "getcustomers" nomli boshqa subprotsedurani chaqiradi. "getcustomers" subprotsedurasi ma’lumotlar bazasini ochadi va "customers" jadvalidan yozuvlar to‘plamini (record set) oladi. Yozuvlar to‘plami massivga yoziladi va unga ma’lumotlar bazasiga so‘rov yubormasdan istalgan ASP sahifasidan murojaat qilish mumkin bo‘ladi:

<script language="vbscript" runat="server"> sub Application_OnStart getcustomers end sub sub getcustomers set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=conn.execute("select name from customers") Application("customers")=rs.GetRows rs.Close conn.Close end sub </script>

Global.asa misoli

Bu misolda joriy tashrif buyuruvchilar sonini sanaydigan Global.asa faylini yaratamiz.

  • Application_OnStart server ishga tushganda "visitors" ilova o‘zgaruvchisini 0 ga tenglaydi
  • Session_OnStart subprotsedurasi har safar yangi tashrif buyuruvchi kelganda "visitors" o‘zgaruvchisiga bir qo‘shadi
  • Session_OnEnd subprotsedurasi har safar ishga tushganda "visitors" o‘zgaruvchisidan bir ayiradi

Global.asa fayli:

<script language="vbscript" runat="server"> Sub Application_OnStart Application("visitors")=0 End Sub Sub Session_OnStart Application.Lock Application("visitors")=Application("visitors")+1 Application.UnLock End Sub Sub Session_OnEnd Application.Lock Application("visitors")=Application("visitors")-1 Application.UnLock End Sub </script>

ASP faylida joriy tashrif buyuruvchilar sonini ko‘rsatish uchun:

<!DOCTYPE html> <html> <head> </head> <body> <p>There are <%response.write(Application("visitors"))%> online now!</p> </body> </html>

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!