| Telif Hakları | Cem Yılmaz | Erotik Hikayeler | MP3 İndir ASP’nin Nesneleri | Açık bilgi paylsım alanı

ASP’nin Nesneleri

Masa, nesnedir. Notebook bilgisayarınız da nesnedir! Arkadaşınız da bir nesnedir. Tabiî bunu
onun yüzüne karşı söylemeseniz, iyi olur. Her nesnenin özellikleri vardır. Masa serttir. Su,
içine konulduğu nesnenin biçimi alır.

ASP tekniğinde de amacımız nesnelerin özelliklerini kullanarak, ya bu özellikleri belirlemek,
ya da değiştirmektir. Nesne Yönelimli Programlama (Object Oriented Programming, OOP)
kavramını daha önce çok duymuş olmalısınız. Bir önceki bölümde fonksiyonlarla, Sub’larla,
değişkenlerle tanıştık. Diyelim ki öğretmensiniz (ah, nerede o günler!) ve ASP programınızda
her öğrencinin notunu veritabanına işleyen, veritabanından notları alarak geçeni-kalanı
belirleyen veya öğrencilerle ilgili daha yapılması gereken bir çok işi yapan fonksiyonlarınız ve
Sub’larınız var; bunların kullandığı bir çok değişkeniniz var: demek ki sizin ASP
programınızda “öğrenci” diye bir nesneniz var. Ve siz bu nesneye yönelimli program
yapmışsınız!
Her “program nesnesi” iki unsura sahiptir:
Özellik (Property, Attribute): Bir nesnenin özellikleri, onun değişkenleridir. “Öğrenci”
nesnesinin “Öğrencinin Adı,” “Notları,” “Adresi” gibi değişkenleri, yani özellikleri vardır.
Metod (Method): Bir nesnenin işlemesi, çalışması için, kısaca kendisinden bekleneni yerine
getirebilmesi için çalışma yöntemlerine ihtiyacı vardır. Dolayısıyla bir ASP nesnesinin
fonksiyonları, onun metodlarıdır.
Fakat ASP’de nesneler sadece sizin öbekler halinde toplayacağınız fonksiyonlar ve
değişkenlerden ibaret değildir. Bir kere, ASP programında kullandığınız Script dilinin getirdiği
nesneler vardır. ASP sayfasını Javascript ile yazarsanız başka, VBScript ile yazarsanız başka
dil nesnelerine sahip olursunuz; ancak her ikisinde de ortak olan “Scripting” nesneleri vardır.
Bunlara birazdan ayrıntılı ele alacağız. Sonra Web Server’ın size hazır sunduğu nesneler
vardır. Bunları daha sonraki bölümde göreceğiz. Ve tabiî, Browser’ın bir HTML sayfasının
bölümlerini nesne sayarak oluşturduğu nesneler vardır. Bunlara da diğer nesneleri ele alırken
sırası geldikçe değineceğiz. (Tabiî bir de ASP programınızı Javascript ile yazarsanız,
VBScript’ten farklı olarak kendisi nesne-yönelimli bir dil olan Javascript’in oluşturmanıza
imkan vereceği nesneler vardır. Fakat bu nesneler, bu kitapçığın kapsamı dışında kalıyor.)
Nesneler nasıl oluşmuş olursa olsunlar, daima size bir değer verirler:
Nesne.Özellik = Değer
Bir nesnenin bir özelliğinin değeri, bizim için bir değişken değeri gibi önem taşır:
If Nesne.Özellik > Değer Then ...
Nesnelerin özelliklerinin değerlerini değişkenlere atayabiliriz; ancak bunu yaparken Nesne’nin
bir metoduna (fonksiyonu) göndermede bulunmamız ve gerekiyorsa bu fonksiyona kullanması
için veri göndermeliyiz (bir fonksiyona kullanması için gönderilen değere argüman/argument
denir):
Degisken = Nesne.Metod(argüman1, argüman2...)
Daha sonra bu değişkeni istediğimiz yerde kullanırız. Bu kadar teoriden sonra bir örnek nesne
oluşturursak, belki işin içinden daha kolay çıkabiliriz.Nesneler, diğer yararlarının yanı sıra, birbiri ile ilgili Sub’larımızı, fonksiyonlarımızı ve
değişkenlerimizi birarada tutmamızı sağlar. Şimdi VBScript ile bir nesne oluşturabiliriz:
<%
Class Ogrenci
Public Adi, Soyadi, No
Function AdiSoyadi
AdiSoyadi = Adi & “ “ & Soyadi
End Function
End Class
%>
Bir dakika! Nesne (object) adını verdik fakat Class (sınıf) oluşturduk! Bu grubun Object..End
Object olması gerekmiyor mu? Belki haklısınız; ama bir “sınıf” ancak VBScript tarafından
kullanılmaya başlanırsa Nesne olur. Dolayısıyla biz “sınıf” yazarız; VBScript onu Nesne haline
getirir. Peki, nesneyi oluşturduk; şimdi bunu nasıl kullanacağız. Çok kolay; önce bu nesneden
yeni bir olgu (instance) oluşturacağız; sonra.. Ama önce bunu nasıl yapacağımızı yazalım:
<%
Dim Ogr1
Set Ogr1 = New Ogrenci
Ogr1.Adi = “Necip”
Ogr1.Soyadi = “Fazıl”
Ogr1.No = “181”
Response.Write Ogr1.AdiSoyadi
%>
Her nesne, New (yeni) komutu ile yeni bir değişkene bütün özelliklerini verir. Burada Ogr1
değişkeni, yukarıda oluşturduğumuz Ogrenci nesnesinin bütün özelliklerini kazanmış oluyor.
Ogrenci nesnesinin “.Adi”, “.Soyadi” ve “.No” özellikleri olması gerekir; nitekim Ogr1’e bu
özelliklerini burada veriyoruz. Ogrenci nesnesinin bir de metodu (fonksiyonu) var; Ogr1 bunu
da kazanabilir mi? Tabiî; hem kazanır, hem de bunu ziyaretçinin Browser penceresine
yazdırabilir.
Nesne kavramını kavramak zordur. Fakat yukarıdaki örnekte görüldüğü gibi, ASP
sayfalarınızda nesne oluşturarak çalışmaya alıştığınız zaman bunun sağladığı kolaylıktan
kolayca vazgeçmeyeceksiniz.
///////////////KUTU////////////////////
Hata (Err) Nesnesi
Hangi dille olursa olsun program yazarken hata yapmak kaçınılmaz bir kuraldır. Dolayısıyla
kullandığınız programlama dili hatalarınızı kolayca yakalamanıza imkan vermelidir.
ASP programlarınızda yazım yanlışlığı, olmayan değişkene gönderme gibi Script hatası
olmaması gerekir. Bu tür hatalar, program Web’e gönderilmeden mutlaka ayıklanmalıdır.
Fakat programcı olarak öngöremeyeceğiniz, ve çoğu Web ziyaretçisinden veya ziyaretçinin
bilgisayarından kaynaklanan hata durumları olabilir. VBScript, şu standart komutla
beklenmedik hata durumlarında programın yoluna devam etmesini sağlayabilir:
<% On Error Resume Next %>
Bu komutla VBScript’e, hata halinde bir sonraki satırdan yoluna devam edecektir. Fakat
oluşan hata, programın daha sonra vermesi beklenen sonucu vermesini önleyebilir. VBScript,
Err (Hata) Nesnesi’nin bir çok özelliğinden özellikle hata sayısı (Number), tanımı
(Description) ve kaynak (Source) özellikleri ile size hatanın ne olduğunu ve nereden
kaynaklandığını söyleyebilir. Bu özellikleri kullanarak, programlarınızda, en azından
geliştirme aşamasında, örneğin,
If Err:Number = xx Then
şeklinde bir ifade ile hatanın türüne göre programın kazasız yürümesini sağlayabilirsiniz.
Burada xx yerine 108 ayrı hata numarası yapabilirsiniz. Hata numaraları, Microsoft’un
VBScript sitesinden edinilebilir.
////////////////////////////////KUTU BİTTİ//////////////
Nesneler hakkında aşağı yukarı bir fikir edindiğimize göre, şimdi kullanılmaya hazır
Nesne’lerden başlayarak, VBScript kullanırken, ASP sayfalarımızda yararlanabileceğimiz
Nesne’leri ele alabiliriz.
Dosya Sistemi Nesnesi
Dosya Sistemi Nesnesi (FileSystemObject), ASP programının, Web Sunucusunun sabit disk
sisteminde, sürücüleri, klasörleri ve dosyaları yönetmekte kullanacağımız temel araçtır.
Burada, ne denli güçlü bir araçtan söz ettiğimizi hemen görebilmek için şu kodu yazalım ve
dosya_yaz.asp adıyla kaydedelim:
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP ILE DOSYA YAZMA</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<%
Dim YaziFSO, yaz
Set YaziFSO = CreateObject("Scripting.FileSystemObject")
Set yaz = YaziFSO.CreateTextFile("c:\yazi_deneme.txt",True)
yaz.WriteLine("Bu bir denemedir.")
yaz.Close
%>
<H2><CENTER>Bu Web sayfası sabit diske yazı yazdırır!!
<BR>Şimdi C: sürücüsünde yazi_deneme.txt adlı bir dosya olması gerekir!
<BR>Lütfen bakar mısınız?</H2></CENTER>
</BODY>
</HTML>
Kodumuzun Dim satırında iki değişken belirlediğimizi görüyorsunuz. Fakat bu iki değişkeni
sistem nesnesi olan Scripting’in yeni bir olgusu olarak kullanacağımız için daha önce standart
değişkenlere değer atadığımız gibi değil, fakat Set komutundan yararlanıyoruz, ve YaziFSO
değişkeninde bir “Scripting.FileSystemObject” nesnesi oluşturulmasını sağlıyoruz. (ASP
uzmanları arasında gelenek, nesne değeri tutan değişkenlere, ilgili nesnenin baş harflerini
eklemektir. Böylece bir değişkenin adına bakarak, işlevini anlamak mümkün olur.)
“yaz” değişkeni YaziFSO’da yeni bir olgusunu oluşturduğumuz FileSystemObject’in
CreateTextFile (Düzyazı dosyası oluştur) metodunu kullanıyoruz; bu metod oluşturulacak
dosyanın adını ve eğer bu dosya varsa üzerine yazılmasına izin veren True (doğru) veya buna
izin vermeyen False (yanlış) kelimesini argüman olarak alır. “yaz” değişkeni şimdi kendisi bir
metod kullanabilecek şekilde, FileSystemObject’in bir örneğidir; nitekim WriteLine metodu ile
biraz önce oluşturulan dosyaya, argüman olarak verdiğimiz metni yazdırmaktadır. Bu kodu
çalıştırdıktan sonra, sabit diskinize bakarsanız, düzyazı dosyasını göreceksiniz:
<asp0009.tif>
Bugüne kadar Web tekniği olarak Browser’da bir sayfayı görüntüleyebileceğimizi sanıyor
idiysek, sistem nesneleri kullanarak çok daha farklı şeyler yapabileceğimizi görmüş olduk.
Şimdi FileSystemObject’i daha yakından tanıyabiliriz.
Bu nesne bize sabit diske erişme ve onun kaynaklarını kullanma imkanı verir. Bütün nesneler
gibi kullanılabilmesi için önce bir değişkenin bünyesinde oluşturulması gerekir:
<%
Dim DosyaSistemi
Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)
%>
Dosya Sistemi Nesnesi’nin 20’den fazla metodu vardır; fakat bunlardan önemlileri şöyle
sıralanabilir:
CopyFile (dosya kopyala), MoveFile (Dosya taşı), CopyFolder (klasör kopyala), MoveFolder
(klasör taşı), Create Folder (klasör oluştur), DeleteFile (dosya sil), DeleteFolder (klasör sil).
Şimdi bunlardan birinin nasıl kullanılabileceğine bir örnek verelim:
<%
Dim DosyaSistemi
Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)
DosyaSistemi.DeleteFile “c:\belgelerim\test.*”
%>
Bu program ile “Belgelerim” klasöründeki “test” isimli bütün dosyaları silmiş olursunuz. (Bu
programı çalıştırmadan önce bir kaç kez düşünmeniz, sanırım iyi olur; çünkü ASP yoluyla
sildiğiniz dosyalar, Geri Dönüşüm Kutusu’na gitmez!) Daha az zararlı bir diğer örnek ise şöyle
olabilir:
<%
 Dim DosyaSistemi
Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)
DosyaSistemi.CopyFile “c:\belgelerim\*.*”, “c:\yedekler\”
%>
Bu program “Belgelerim” dizinindeki bütün dosyaları “Yedekler” dizinine kopyalar.
FileSystemObject’in sadece bir özelliği (Property) vardır: Drives (sürücüler). Fakat bu özellik,
bir değil bir çok elemandan oluşan bir dizi-değişken gibi Kolleksiyon (Collection) sayılır.
Nede? Çünkü bir Web Server’da birden çok sürücü bulunur. Her sürücü, bu kolleksiyonun
üyesidir (FileSystem.Drives) ve her birinin sürücü harfi (.DriveLetter), disk adı
(.VolumeName), byte olarak boş alanı (.FreeSpace) özellikleri vardır. suruculer.asp adıyla
kaydedeceğiniz şu program, denediğiniz sistemin disk-disket-CD-ROM durumunu size
listeleyecektir.
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP ILE SÜRÜCÜ KOLLEKSİYONU</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<%
Dim DosyaSistemi, Surucu, Suruculer
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Set Suruculer = DosyaSistemi.Drives
For Each Surucu In Suruculer
%>
<b>Sürücü:</b> <%=Surucu.DriveLetter%><br>
<% If Surucu.IsReady = True Then%>
<b>Disk Adı:</b> <%=Surucu.VolumeName%><br>
<b>Boş alan:</b> <%=Surucu.FreeSpace%><br>
<% Else %>
<i>Sürücü hazır değil!</i><br>
<% End If
Next %>
</BODY>
</HTML>
Burada özelliklerini ve metodlarını DosyaSistemi adlı değişkene atadığımız Dosya suistemi
Nesnesi’nin sürücüler kolleksiyonunun dizi-değişken gibi olduğunu söylemiştik. For..Next akış
kontrolü ile bu kolleksiyonun bütün üyelerinin sırayla sürücü harfi, ve hazırsa disk adı ve boş
alanı bilgilerini alıyoruz. Drives kolleksiyonunun diğer özellikleri arasında toplam yüzey
genişliği (TotalSize), sürücü türü (DriveType; 0=bilinmiyor; 1=çıkartılabilir; 2=sabit; 3=ağ;
4=CD-ROM; 5= RAM-Drive), ve dosya sistemi (FileSystem; FAT, NTFS, CDFS), kök dizin
(RootFolder) vardır. Bu program bir PWS’da çalıştığında, şu sonucu alıyoruz:
<asp0010.tif>
VBScript açısından, her sürücüde klasörler (Folders) ve onların içinde alt-klasör (Subfolders)
ve dosya (Files) kolleksiyonları bulunur. (Her klasörün içinde içinde bir alt-klasör nesnesi
bulunduğu için ASP ile sonsuza kadar bütün klasörlere gönderme yapabilirsiniz. Klasör
nesnesinin bazı özellikleri şunlardır:
Adı (Name), oluşturulma (DateCreated), erişim (DateLastAccessed), değiştirme
(DateLastModified) tarihleri, içindeki dosyalar ve alt-klasörlerdeki dosyalarla birlikte boyutu
(Size), bulunduğu sürücü (Drive), içinde bulunduğu klasör (ParentFolder), alt-klasörler
(SubFolders), kök dizin olup olmadığı (IsRoot).
Klasör nesnesinin kopyala (Copy), sil (Delete) ve Taşı (Move) metodları vardır.
Dosya (File) nesnesinin de ad, oluşturma, erişim, değiştirme, boyut, sürücü ve içinde
bulunduğu sürücü özellikleri, ve kopyala, sil, taşı metodları vardır.
PWS’ınızın bulunduğu sistemde, söz gelisi C: sürücüsünün kök dizinindeki bütün dosyaların
listesini size veren bir kod şöyle yazılabilir (dosyalar.asp):
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP ILE KLASOR - DOSYA KOLLEKSİYONU</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<%
Dim DosyaSistemi, Surucu, Dosya, KokDizin, KokDosyalar, DosyaNesnesi
Dim SurucuHarfi
SurucuHarfi = "C:"
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Set Surucu = DosyaSistemi.GetDrive(SurucuHarfi)
Set KokDizin = Surucu.RootFolder
Set KokDosyalar = KokDizin.Files
For Each DosyaNesnesi In KokDosyalar
%>
<%=DosyaNesnesi.Name%><br>
<% Next %>
</BODY>
</HTML>
Burada SurucuHarfi değişkenin değerini değistirerek, arzu ettiğiniz disk/disket veya CDROMa
ulaşabilirsiniz. GetDrive metodu dikkatinizi çekmiş olmalı; bu metodla, VBScript,
fiilen disk/disket sistemine erişir.
Daha sonra yapacağımız ASP sayfalarında dosya sistemi nesnesinden ve disk sürücüleri
kolleksiyonundan yararlanacağız.
Metin (TextStream) Nesnesi
Dosya sistemi nesnesi bize disk sistemine, klasörlere ve dosyalara erişme imkanı verir ama
yeni dosyaları oluşturmak veya mevcutlara ek yapmak için yeterli özellik ve metoddan
yoksundur. Bunu TextSream nesnesi sağlar.
Bilgisayar işletim sistemlerinin anası, Unix’e aşina iseniz, klavyeden sabit diske kadar bir
bilgisayara girdi akımı bulunduğunu, bunlardan birinin de metinler olduğunu hatırlayacaksınız
(Aşina değilseniz, şimdi oldunuz!). Bir işletim sistemi, metin dosyalarını okurken, yazarken bir
metin akışı olur; TextStream nesnesinin adı da bunu anlatıyor: Metin Akımı. Web Server ve
dolayısıyla ASP açısından sabit diske bir metin yazarken, veya sabit diskten bir metin okurken,
bir metin akışı nesnesi oluşur. Bu nesnenin özellikleri ve metodlarını kullanarak, örneğin
ziyaretçilerin sitemize bırakacakları form bilgilerini Web Server’ın sabit diskine yazdırabiliriz.
Veya mevcut metinleri okuyabilir ve bunların içeriğini ziyaretçimize göndereceğimiz HTML
sayfanın etiketlerinin içeriği olarak kullanabiliriz. Metin dosyası okumak ve yazmak disk
sistemini ilgilendiren bir eylem olduğu için yine Scripting nesnelerinden FileSystemObject
nesnesinden yararlanacağız; fakat bu kez değişik metodlar kullanacağız.
Metin Dosyası Oluşturma (CreateTextFile)
Aslında biraz önce, ASP nesnelerinin neler yapabileceğine örnek olarak yazıp dosya_yaz.asp
adıyla kaydettiğimiz program, bir metin dosyasını yazdırma işlemiydi. Oradaki kodlara
yeniden göz atarsanız, CreateTextFile (metin dosyası oluştur) metodunu yardıma çağırıyor ve
bu metoda argüman olarak yeni metin dosyasının yolunu ve adını veriyorduk. Bu metod
TextStream nesnesinindir; ve otomatik olarak bu nesnenin diğer metodlarını kullanmamızı
sağlar. kullandığımız metodlar ise WriteLine (satır yaz: bir String’i sonuna yeni satır karakteri
koyarak dosyaya yazar) ve Close (kapat: açılan metin dosyasını kapatır).
TextStream’in burada kullandığımız ikisinin dışında iki metodu daha vardır:
Write (yaz): Bir String’i dosyaya yazdırır; satır sonuna yeni batır karakteri (Return kodu)
koymaz.
WriteBlankLines (boş satır yaz): Bir metin dosyasına argüman olarak vereceğiniz sayıda boş
satır yazdırır.
Varolan Metin Dosyasına Ek Yapma (OpenTextFile)
Metin yazdırma işlerinde sık sık uygulayacağımız bir senaryo, mevcut bir metin dosyasına ek
yapmak olacaktır. Örneğin bütün ziyaretçilerimizin sitemizdeki konuk defterine yazdıklarını,
bir metin dosyasında toplamak isteyebiliriz.
Bunu OpenTextFile metodu ile yapacağız. Bu metod, tahmin edeceğiniz gibi, açılacak
dosyanın yolunu ve adını isteyecektir. Örneğin, dosya_yaz.asp’nin ilgili satırı şöyle olacak:
Set yaz = YaziFSO.OpenTextFile("c:\yazi_deneme.txt",8,0)
Burada dosya yolunu ve adını veren birinci argümana ek olarak iki yeni argüman
görüyorsunuz: “8,0” şeklinde. Bunlardan birinicisi girdi/çıktı durumu (I/O Mode), ikincisi ise
biçim (Format) ile ilgilidir. I/O Mode parametreleri şunlardır:
1: okumak için aç
8: eklemek için aç
Açılacak dosyanın biçimini belirttiğimiz son argüman ise şu değerlerden birini alabilir:
0: ASCII dosyası olarak aç
-1: Unicode dosyası olarak aç (Örneğin içinde Türkçe karakterler varsa)
-2: Sistemin varsayılan dosya türü olarak aç
Buna göre, bir dosyayı salt okumak için açmak amacıyla “1,0” argümanlarını kullanmamız
gerekir. Diyelim ki bir dosyayı açtık. İçindekileri nasıl okuyabiliriz? Bir döngüyle. İşte örneği:
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP ILE DOSYADAN METİN OKUMA</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<%
Dim DosyaSistemi, MetinDosyasi, Satir
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Set MetinDosyasi = DosyaSistemi.OpenTextFile("c:\yazi_deneme.txt",1, 0)
Do
Satir = MetinDosyasi.ReadLine
%>
<%=Satir%>
<%
Loop Until MetinDosyasi.AtEndOfStream
MetinDosyasi.Close
%>
</BODY>
</HTML>
Burada kullandığımız metod dikkatinizi çekmiş olmalı: ReadLine. Bu, açılan metin
dosyasından bir satır okutmamızı sağlar. İkinci ve son satırları okutmamızı ise Do..Loop
kontrolü sağlıyor. Bu döngü ne kadar sürüyor? MetinDosyası nesnesi, AtEndOfStream (akımın
durumla karşılaştığı anda Do..Loop, yaptığı işi durdurup, bir sonraki komuta geçecektir.
Burada kullandığımız ReadLine metoduna ek olarak yararlanabileceğimiz diğer metodlar ise
şunlardır:
Read (oku): Bir sayı örgümanı ile çalışır ve verdiğiniz sayı kadar karakter okur.
ReadLine (satır oku): Bir satır okur ve String olarak verir.
ReadAll (tümünü oku): Bütün satırları okur ve tek String olarak verir.
Skip (atla): Bir sayı argümanı ile çalışır ve verdiğiniz sayı kadar karakteri atlar.
SkipLine (satır atla): Bir sonraki satıra atlar.
Bu metodlarla sağladığımız okuma işinin kontrolü amacıyla şu özellikleri de kullanabiliriz:
AtEndOfStream (akımın sonunda): Okutulan dosyanın sonuna gelinmesi halinde True (doğru)
olur.
AtEndOfLine (satırın sonunda): Okutulan satırın sonuna gelinmesi halinde True (doğru) olur.
Sunucu (Server) Nesneleri
Buraya kadar ele aldığımız nesneler bir anlamda bizim sadece tek tek sayfalarda
yararlanacağımız araçları sağlıyor. Oysa ASP’yi diğer CGI teknolojilerinden ayıran başlıca
özelliklerden biri tek tek Web sayfalarını sanki bir bilgisayar programının çeşitli pencereleri,
diyalog kutuları, mesaj kutuları, girdi kutuları gibi, birarada bir “uygulama programı” olarak
bağlayabilmesidir. Başka bir deyişle bize, ziyaretçinin sitemize bağlandığı ve ana sayfamızı
açtığı andan itibaren sitemizin bir program bütünlüğünde çalışmasını sağlayacak araçlar
gerekir. Bunu ancak Web Server’ın yardımıyla yapabiliriz.
ASP sayfalarımızda kullanacağımız ikinci grup nesne, Sunucu Nesneleri’dir. Bu grupta tabiî
önce Sunucu’nun kendisi yer alır; sonra ziyaretçi ile kurduğumuz ilişki gelir. Ziyaretçi ile
ilişkimizi iki yönlü trafiğe benzetebilirsiniz: ondan bize gelen talepler, bizim ona
karşılıklarımız.
Ziyaretçiden bize gelen trafiğe neden “Talep” diyoruz? Ziyaretçi, Browser’ının URL hanesine
yazdığı her adresle, veya formlardaki bir düğmeyi veya sayfalarımızdaki herhangi bir köprüyü
tıklamakla, Server’a “Bana şunu göndersene!” demiş olur. Bu taleptir. Ziyaretçi taleplerinin
tümü Talep Nesnesi ( R equest Object) olarak bir arada ele alınabilir. Server’ın bu taleplere
verdiği karşılıklar, yani ziyaretçinin Browser’ına gönderdiği sayfalar, resimler, sesler, videolar
ise karşılıktır ve ASP açısından Karşılık Nesnesi’ni (Response Object) oluşturur.
Bu bölümde bu nesneleri daha yakından tanıyacağız.
Server Nesnesi
Web Server, ASP için bir nesnedir, ASP’nin bir çok işini bu nesnenin özellikleri ve metodları
halleder. Server nesnesinin bir özelliği (ScriptTimeout) ve dört metodu ( C reateObject,
HTMLEncode, URLEncode, MapPath) vardır. Web Server çalıştığı bilgisayarın sizin siteniz
adına yönetiminden sorumludur; dolayısıyla bu kadar az özellik ve metodu var diye bu
nesneden çok yararlanmayacağımızı sanmayın. ActiveX ve COM bileşenlerini çalıştırmak
Server’ın görevidir.
ScriptTimeout Özelliği: Diyelim ki bir ASP Script’i ya bizim, ya ziyaretçinin, ya da Server’ın
bir hatası üzünden sonsuz döngüye girdi! Döngünün durması için gerekli şart asla yerine
gelmiyor ve Script bir türlü yapacağı işi yapıp, sonlandırmıyor. Bu durumlarda ziyaretçinin ve
gerekir. Bunu hemen hemen bütün Web server programlarının Script Timeout (Script süre
sınırı) diyalog kutusuna bir değer girilerek yapılır. Öreğin MS-Internet Information Server için
varsayılan Script Timeout süresi 90 saniyedir. Yani ISS, herhangi bir Script’in çalışıpdurmasını
90 saniye bekler; bu sürenin sonunda Script’in çalışması tamamlanmazsa ziyaretçiye
arzu ettiği sayfanın veya unsurun bulunamadığını bildirir. Bu süreyi (Server’ın varsayılan
değerinin altında) kısaltmak değilse bile uzatmak elimizdedir. Bunu ScriptTimeout özelliğini
kullanarak yaparız. ASP sayfasının herhangi bir yerine örneğin şu kodu koymak yeter:
<% Server.ScriptTimeout = 100 %>
Bu örneğe göre Server’ın varsayılan Script Timeout süresi 90 saniye ise 100 saniyeye çıkmış
olur.
Böyle bir şeyi neden yapmak isteyebiliriz? Script’iniz çok karmaşık veya başka bir Server’daki
veritabanından veri çekiyor, olabilir. Gerçi bu anlamda 90 saniye bilgisayar milleti için bir asır
anlamına gelir, ama yine de durdurulmasaydı işini başarıyla tamamlayacak bir Script, bu
sürenin kısalığı yüzünden Server tarafından durdurulabilir. ASP sayfalarınız çok karmaşıksa ve
sürekli Timeout hatası veriyorsa, hata aramadan önce bu süreyi uzatabilirsiniz.
C reateObject Metodu: İlk ASP kodunu yazdığımız andan beri bu metodu kullandığımızı
görüyorsunuz. C reateObject (nesne oluştur) olmasa idi, dört mevsim birbirini izleyebilir,
Dünya Güneş’in etrafında dönebilir miydi? Hiç sanmam. Fakat lütfen o C reateObject ile bu
C reateObject’i birbirine karıştırmayın. Yukarıda kullandıklarımız Scripting nesnesinin bir
metodu idi; bu Server nesnesine aittir. Diyelim ki sayfanızda reklam amaçlı banner grafiklerini
belirli zaman aralığı ile veya ziyaretçiye gönderdiğiniz Cookie (çerez) bilgilerine göre
değiştirmek istiyorsunuz. Bunun için diyelim ki MS-Web Server Programının AdRotator
bileşininden yararlanacaksınız; şöyle bir kod işinizi görebilir:
<% Set Reklam = Server.CreateObject (“MSWS.AdRotator”)%>
<%= Reklam.GetAdvertisement(“/reklamlar/buyukbanka.txt”)%>
Burada GetAdvertisement, Server’ın AdRotator bileşininin bir metodudur. Server’ın
C reateObject metodundan, veritabanına ulaşırken de yararlanacağız.
MapPath (Yolu belirle) Metodu: Web Server açısından “kök dizin” (root directory) Server’ın
bulunduğu bilgisayarın sabit diskinde, herhangi bir klasör olabilir. Örneğin IIS için bu
varsayılan değer olarak “C:\inetbup\wwwroot” klasörüdür. Özellikle ASP ile “program
niteliğinde siteler” yapmaya başladığımızda, sitenin ilgili bütün dosyalarının bulunduğu bir
dizin için yol belirlemek isteyebiliriz. Bunu Server nesnesinin MapPath (Yolu belirle) metodu
ile yapabiliriz:
WebDizini = Server.MapPath(“/benim_site”)
Bu komutla WebDizini değişkenin değeri muhtemelen şöyle olacaktır:
“C:\inetbup\wwwroot\benim_site\”
Fakat bu metodun sadece böyle duragan biçimde kullanılması gerekmez; bazen sayfalarımızda
ziyaretçi ile etkileşmenin sonucu olarak varsayılan Web dizinimizi değiştirmek isteyebiliriz.
Sözgelimi biri Türkçe, diğeri İngilizce iki sitemiz varsa, ve ana sayfamızda ziyaretçi Türkçe’yi
seçtiyse, o noktadan itibaren Web uygulamamız için Web kök-dizini, “/turkish/” olacak ve
mesela resimlerimiz için verdiğimiz “/resimler/” dizini kök dizinde değil, “/turkish/resimler/”
klasöründe aranacaktır. Web yolunu dinamik olarak, yani ziyaretçinin tercihine bağlı şekilde
değiştirebilmek için, önce ziyaretçiden gelecek bilgileri nasıl kullanacağımıza, yani Request
(talep) nesnesine değinmemiz gerekir.
HTMLEncode, URLEncode: İçinde HTML açısından kod parçası veya özel işaret sayılan
karakterler bulunan metinleri sayfamıza içerik olarak göndereceğimiz zaman Server’ın
işaretleri aynen metin gibi göndermesini sağlamak için, örneğin:
Server.HTMLEncode(“Değisken1 < Değisken2”)
yazarsak, ASP bu metni HTML kodu olarak yorumlamaz, metin olarak algılar.
Internet’te bazen özellikle sayfa adresleri belirtilirken bazı değerlerin “URL Kodu“ dediğimiz
şekilde kodlanmış olarak gönderilmesi gerekir. Bu kodlama türünde boşlukların yerine + işareti
konmuş olması şarttır. Bu tür bilgiler göndereceğimiz zaman:
Server.URLEncode(“kelime 1 kelime2 kelimeme2”)
şeklindeki bir kod Bunu hemen şu şekle sokacaktır:
kelime1+kelime2+kelime3
Talep (Request) Nesnesi
Web Server çok akıllı bir programdır; bir Web ziyaretçisi herhangi bir talepte bulunduğu, yani
bir sayfanın gönderilmesini istediği anda, bu talebi, bir nesne halinde ele alır; kolleksiyonlar
oluşturur. Bu kolleksiyonlar, HTTP protokolü ile iletişimin sonucu olarak ziyaretçinin
Browser’ından ve Internet’e giriş noktası olan ISS’in bilgisayarından başlayan ve Web
Server’dan derlenen bir dizi bilgidir. Bir anlamda, Request nesnesi, Web programımızın Girdi
(Input) bölümünü oluşturur.
Request nesnesi kendi içinde dört ana nesne barındırır:
QueryString ve Form
Web ziyaretçisinin bilgisayarından kalkıp Server’a gelen herşey, QueryString kolleksiyonunu
oluşturur. Bu ziyaretçinin Browser’ın URL adresi hanesine yazdığı bir basit HTML sayfası
yolu ve adı olabilir; bir Form’un Gönder düğmesini tıkladığında gelen bilgiler olabilir. Bu
bilgilerin şu özelliklerini kullanabiliriz:
Content_Length: Bir Form’dan gelen bilgilerin tümümün byte olarak
boyutudur.
Remote_Host: Ziyaretçinin IP adresini verir; ancak Internet’e çevirmeli ağ ile
bağlanan ziyaretçilerimiz her seferinde farklı bir IP bildirebilirler. Bu yüzden
bu bilgiyi ziyaretçinin kimliği sayamayız.
Request_Method: Form’da kullandığımız GET veya POST metodunu bildirir.
İki yöntemle gelen bilgi farklıdır. Form’un oluşturduğu bilgileri GET yöntemi
ile alırsak bu, çevre değişkenlerinden QUERY_STRING değişkeninin içine
yazılır. Başka bir ifade ile Form’daki bütün değişkenlerin adları ve bu
değişkenin içerdiği değer yumak yapılır (bu yumağın niteliğine ve nasıl
çözeceğimize geleceğiz!) ve Server’da QUERY_STRING değişkeninin değeri
olarak yazılır. Form’un bilgilerini POST yoluyla alıyorsak bunlar Request
nesnesinin Form kolleksiyonunun içinde Form’un değişken adları ve
ziyaretçinin bu değişkenler için sağladığı değerler olarak ayrı ayrı yazılır. GET
ile sınırlı, POST ile sınırsız bilgi alabiliriz.
Script_Name: O anda çalıştırılmakta olan ASP sayfasının adını verir.
 ServerVariables (Server Değişkenleri)
Request nesnesinin bir diğer kolleksiyonu, bizim kendi Web Server’ımızın o anda çalışmakta
olan ASP sayfası için oluşturduğu ortamın değişkenleridir. Bunların arasında ziyaretçinin
Browser’ına ilişkin bilgiler de vardır. Önvc şU kısa ASP sayfasını çalıştırarak kendi
Server’ımızın şu andaki değişkenlerini görelim; sonra bunları ayrıntılı ele alalım (SerDeg.asp):
<HTML>
<HEAD>
<TITLE>HTTP ServerDegişkenleri Kolleksiyonu</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY BGCOLOR=white>
<CENTER>
<H2>HTTP Server Değişkenleri Kolleksiyonu</H2>
</CENTER>
<TABLE BORDER=1>
<TR><TD><B>Değişkenin adı</B></TD> <TD><B>Değeri</B></TD></TR>
<% For Each key in Request.ServerVariables %>
<TR>
<TD><% = key %></TD>
<TD>
<%If Request.ServerVariables(key) = "" Then
Response.Write "&nbsp;"
Else
Response.Write Request.ServerVariables(key)
End If
Response.Write "</TD>"%>
</TR>
<% Next %>
</TABLE>
<p>
Sizin Host'unuzun adı:<B> <%=Request.ServerVariables("HTTP_HOST")%></B>
</BODY>
</HTML>
Bu sayfayı çalıştırdığımız zaman görüntülenecek tabloda, Bir HTTP Server’ın SerDeg.asp
sayfasını çalıştırdığı anda oluşturduğu ortama şekil veren bütün değişkenleri göreceksiniz. Bu
değişkenleri programlama yoluyla değiştiremeyiz; sadece okuyup, yararlanabiliriz. HTTP
Server Değişkenleri Kolleksiyonunun elemanları şöyle sıralanır:
D eğişkenin adı D eğeri
ALL_HTTP HTTP Header içinde yer alan bütün değişkenler ve
değerleri. Header adlarının önünde “HTTP_” öneki
vardır.
ALL_RAW HTTP Header içinde yer alan bütün değişkenler ve
değerleri. Header adları ve değerleri istemci Browser’ın
verdiği şekilde gösterilir.
APPL_MD_PATH Web Server’ın ISAPI.DLL dosyası için varsaydığı kök
dizin
APPL_PHYSICAL_PATH Web Server’ın varsaydığı kök dizinin gerçek yolu
AUTH_PASSWORD Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle
bağlanabiliyorsa, kullanılan parola
AUTH_TYPE Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle
bağlanabiliyorsa, kullanılan yetkilendirme yöntemi
AUTH_USER Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle
bağlanabiliyorsa, kullanıcı adı
CERT_COOKIE Kullanıcı siteye bağlanmak için yetkilendirme sertifikası
kullanıyorsa kendisine verilen kimlik (ID)
CERT_FLAGS Sertifikanın varlığını gösteren bit değeri
CERT_ISSUER Sertifika varsa veren kurum
CERT_KEYSIZE Secure Socket Layers kullanılıyorsa, bağlantı için
anahtar değeri
CERT_SECRETKEYSIZE Özel anahtar değeri
CERT_SERIALNUMBER Sertifika seri no.
CERT_SERVER_ISSUER Sertifikayı veren merci
CERT_SERVER_SUBJECT Server Sertifikasının “konu” alanı değeri
CERT_SUBJECT İstemci Sertifikasının konu alanı değeri
CONTENT_LENGTH İstemcinin gönderdiği bilgi yumağının boyutu
CONTENT_TYPE Ziyaretçiden gelen bilgilerin GET veya POST metoduna
göre edindiği tür
GATEWAY_INTERFACE Web Server’ın ziyaretçi ile etkileşim arayüzünün adı ve
sürümü. Genellikle: CGI/1.1
HTTPS Ziyaretçi ile bağlantı güvenli ise ON, değilse OFF
HTTPS_KEYSIZE Secure Sockets Layer için bağlantı anahtar sayısı
HTTPS_SECRETKEYSIZE Özel Server sertifikasının gizli anahtar sayısı
HTTPS_SERVER_ISSUER Özel Server sertifikasının veren merci
HTTPS_SERVER_SUBJECT Özel Server sertifikasının konusu
INSTANCE_ID Web Server’ın aynı anda kaç kere çalışmakta olduğu
INSTANCE_META_PATH Şu anda çalışmakta olan Web Server’ın Meta yolu
LOCAL_ADDR İstemcinin IP numarası
LOGON_USER İstemci Windows NT sisteminde ise oturum açma adı
PATH_INFO Çalışmakta olan ASP’nin göreli yolu ve adı
PATH_TRANSLATED Çalışmakta olan ASP’nin gerçek yolu ve adı
QUERY_STRING İstemcinin gönderdiği bilgi kümesi
REMOTE_ADDR İstemcinin Host’unun (ISS’inin) IP’si
REMOTE_HOST İstemcinin Host’unun (ISS’inin) adı
REMOTE_USER İstemcinin gerçek adı
REQUEST_METHOD İstemciden bilgi isteme yöntemi (GET veya POST)
SCRIPT_NAME Çalışmakta olan ASP’nin adı
SERVER_NAME Sunucu’nun adı
SERVER_PORT Sunucuya bağlantının geldiği TCP kapı numarası
SERVER_PORT_SECURE TCP kapısı güvenli ise 1, değilse 0
SERVER_PROTOCOL Server’ın çalıştırdığı HTTP’nin sürümü
SERVER_SOFTWARE Server programının adı ve sürümü
URL Şu anda geçerli URL
Cookie (Çerez)
Daha önce ne kadar çok olursa olsun tek-tek Web sayfalarından oluşan siteler yaptıysanız bile,
Cookie (Çerez) ile ilginiz olmamış olabilir. Ya da sadece Internet ziyaretçisi olarak
başkalarının size gönderdiiği Cookie’lere sinirlenmekle yetinmiş olabilirsiniz. Fakat şimdi ASP
ile Web Programı oluşturmaya hazırlanan kişi olarak Cookie’lerle daha yakından ilgilenmeniz
gerekiyor. Çünkü artık siz de başkalarına çerez göndereceksiniz!
Tabiî bunun için önce “Cookie neden gereklidir?” sorusunu yanıtlamak gerekir. HTTP ile
yapılan iletişim, belirgin olmayan durum bağlantısına dayanır: yani ne istemci sunucunun, ne
de sunucu istemcinin o anda hatta (on-line) olduğunu bilmek zorunda değildir; birbirlerinden
istedikleri ve gönderdikleri şeyleri karşı tarafından almaya hazır olduğunu bilmeden
gönderirler. Oysa sözgelimi elektronik alışveriş gibi ziyaretçinin bir yerlere birşeyler
kaydettiği, geçici değişkenler oluşturduğu durumlarda sitemizde kimin ne yaptığıını bilmek
zorundayız. Ziyeretçinin bir sayfada yaptığı tercihler diğer sayfalarda ona sunacağımız içeriği
etkileyebilir, belirleyebilir. Oysa aynı ziyaretçi bir sayfadan diğerine geçerken Server ile
ilişkisini kaybedebilir. Bunun için ziyaretçinin Internet’ten kopması gerekmez; sadece TCP/IP
protokolü gereği bizimle bağlantısı kesilebilir. Bunu ziyaretçi farketmeyebilir; ama Server
etmek zorundadır. Heryeni ilişkiye yeni bir “application” (uygulama programı) başlatamayız;
ziyaretçinin bir önceki sayfada yaptığı tercihlerin devam etmesi gerekir. Bu devamlılığı
ziyaretçiyi işaretleyerek yaparız; bu işareti de Cookie sağlar.
ASP tekniğiyle tasarladığımız sitede, ziyaretçilerimize Cookie göndermek zorunluktur
diyebiliriz. ASP açısından Cookie’ler bir nesne oluştururlar. Aslında, Cookie’ler ASP için iki
ayrı grup Cookie nesnesi oluştururlar: verilenler, ve hakkında bilgi alınan varolan Cookie’ler.
Birinci grup Request (talep) nesneleri, ikinci grup ise Response (karşılık) neslereni içinde ele
alınabilir. Cookie konusunun devamını Response nesnelerine değindiğimiz yere bırakalım.
Sertifika Nesnesi
Sertifika, HTTP bağlantısında “Ben filancayım!” diyen istemcinin, gerçekten filanca olup
olmadığını gösterir. Bir yazılımdan ibaret olan sertifikaları yetkili bir kurum veya şirket verir;
bir seri numarası olur. Şifreleme teknikleri gelişmiş olduğu için taklit edilmesi zordur. Sertifika
uygulaması için Web Server’ın Secure Socket Layers denen güvenli HTTP protokolünü
kullanması gerekir. Bu durumda Server’ın URL’i, http:// diye değil https:// diye yazılır.
ASP açısından sertifika ile ilgili her türlü bilgi ClientCertificate kolleksiyonunda durur.
Sözgelimi, bir ziyaretçinin gerçekten sitenize girmeye yetkili olup olmadığını anlamak için:
<%SertifikaNo = Request.ClientCertificate(SerialNumber) %>
sonra bu değişkenin değerini elinizdeki bir liste ile karşılaştırabilirsiniz.
Karşılık (Response) Nesnesi
Ve geldik Web Server’in Çıktı (Output) sağladığı istemciye giden karşılıkların oluşturduğu
nesneye. Server’dan Browser’a giden herşey karşılıktır. Bu bir ASP veya HTML sayfası
olabilir, sayfanın içindeki GIF, JPG veya PNG grafiği, bir Flash, video veya ses dosyası
olabilir. Böylesine zengin içeriği olmakla birlikte Response nesnesinin sadece bir kolleksiyonu
vardır: Cookie’ler. Buna karşılık Response nesnesinin kullanabileceğimiz çok sayıda özelliği
ve metodu bulunur. Önce Cookie kolleksiyonunu ele alalım; sonra önemli Response nesnesi
özellikleri ve metodları üzerinde duralım.
Cookie’ler
Request nesnesinin Cookie kolleksiyonuna değinirken, ziyaretçilerimizi Browser’larına Cookie
göndererek tabir yerinde ise işaretleriz, demiştik. Bu işaretleme, söz gelimi, ziyaretçinin bir
Form’a yazdığı adı ve soyadı ile elektronik posta adresini Cookie olarak onun bilgisayarına
kaydetmek şeklinde olur. Bir kişi sayfamızı talep ettiği anda, ASP programımız bu kişinin
bilgisayarında daha önce koyduğumuz Cookie’yi arar ve bulur; Cookie’den bu kişinin adını
öğrenir ve mesela sayfamız “Sayın Filanca, sitemize hoş geldiniz!” başlığını görüntüler.
Cookie’ler sadece böyle fiyaka amaçlı olarak kullanılmaz; ziyaretçinin daha önce sitemizde
ziyaret ettiği sayfaları veya elektronik ticaret sitemizden satın aldığı kitap türlerini Cookie’ye
kaydedebiliriz. Ziyaretçinin ikinci ziyaretinde ona önce bu sayfaların veya kitapların
köprülerini sunabiliriz.
Bir Cookie’nin adı ve anahtarları (key) ile bu anahtarlara karşılık değerler olur. Örneğin:
<% Response.Cookie(“Bizim_Cerez”)(“Adi_Soyadi”)= “Necip Fazıl” %>
Bu, ziyaretçinin Browser’ına (yani sabit diskine) “Bizim_Cerez” isimli bir Cookie gönderir; bu
Cookie’nin “Adi_Soyadi” adlı bir anahtarı vardır; bu anahtarın değeri ise “Necip Fazıl” olur.
Cookie kolleksiyonunun iki özelliği bulunur:
Expires (zaman aşamı süresi): Bir cookie’nin artık geçersiz olduğu tarihi gösterir.:
<% Response.Cookie(“Bizim_Cerez”).CookieExpires = “August 7, 2000” %>
Bu Cookie, 7 Ağustos 2000 tarihinden sonra kullanılmaz olacak demektir.
HasKeys: Cookie’nin String mi içerdiği yoksa anahtarları ve değerleri mi bulunduğunu belirtir,
“HasKeys = False” birinci, ““HasKeys = True” ise ikinci durumu belirtir. Bir Cookie’de birden
fazla anahtar ve değer bulunuyorsa, tümünü bir ASP kodu içinde yazmak, Cookie’nin
gönderilmesini kolaylaştırır
Metodlar
Response nesnesinin bir çok metodu vardır; bunlardan .Write’ı yukarıdaki örneklerde sık sık
kulandık:
<%
DIM Adi_Soyadi
Adi_Soyadi = “Necip Fazıl Dayanır”
Response.Write(“Merhaba, benim adım, “ & Adi_Soyadi)
%>örneği, ziyaretçinini Browser penceresine: “Merhaba, benim adım Necip Fazıl Dayanır”
yazdırır. Fakat VBScript, size bir kolaylık sağlar; buna bazı ASP tasarımcıları “eşittir metodu”
adını verir:
<%
DIM Adi_Soyadi
Adi_Soyadi = “Necip Fazıl Dayanır”
%>
<%= “Merhaba, benim adım, “ & Adi_Soyadi %>
Özellikler
Response nesnesinin bir çok özelliğini kullanarak ziyaretçimize göndereceğimiz sayfaları ve
diğer unsurları yönetiriz:
Buffer (Tampon) : True (doğru) olarak ayarlandığında ziyaretçiye gönderilecek sayfanın bütün
unsurları bir tampon bölgede toplanır, Script’in çalışması bitinceye kadar beklenir ve HTML
sayfa toptan gönderilir. Kimi zaman ASP kodumuz sonuna kadar çalıştığında ziyaretçiyi başka
bir sayfaya ve siteye yönlendirebilir. Bu gibi sebeplerle, özellikle çok işlem gerektiren ASP
sayfalarının baştarafına bunu sağlayan kodu koymakta yarar olabilir:
<%
Option Explicit
Response.Buffer = TRUE
%>
Flush (hemen gönder): Buffer metodu sayfanın tümünün Script’in icrası bitmeden
gönderilmesini önlerken, Flush bunun tam tersini yapar. ASP, Response nesnesinin Flush
metodu kullandığımızı gördüğü anda, o ana kadar icra edilmiş kodun sonucu olan HTML’i
Browser’a gönderir:
<%
Option Explicit
Response.Flush
%>
Clear (Boşalt): Buffer metodu ile Script’in sonunu beklerken geçici bir alanda tutulmakta olan
HTML, Clear metodu ile temizlenir, yok edilir. Flush metodunda tampondaki HTML
Browser’a gönderilir; ancak Clear metodu tampon bölgedeki herşeyi yok eder. Böyle
“tehlikeli” bir metod neden vardır, ve nerede kullanılabilir? Bir çok yerde: ziyaretçinin
sözgelimi elektronik alışveriş sitemizde alışverişten vazgeçtiğini belirtmesi üzerine tampon
bölgede tutmakta olduğumuz ve alınan mallar listesini içeren HTML’i bu yöntemle temizleriz:
<%
Option Explicit
Response.Clear
%>
Expires (Süresi dolar): Kullanıcı tersine bir ayar yapmadıysa, Browser genellikle görüntülediği
sayfaları Geçici Internet Dosyaları dizinine (cache) kaydeder ve tekrar aynı sayfayıgörüntülemek istediğinizde sayfayı Internet’ten edinmek yerine kendi sabit diskinden alır.
Oysa özellikle haber gibi süreli bilgilerin sunulduğu Web sitelerinde bu sitenin itibarını sarsar.
ASP tekniğiyle bunu önleyebiliriz. ASP sayfamızda bu sayfanın gözgelimi 60 dakikadan fazla
cach dizinde tutulmamasını sağlayacak Expires metodunu kullanabiliriz:
<%
Option Explicit
Response.Expires = 60
%>
Burada yazdığımız rakamı değiştirerek, sayfanın cach’de tutulacağı dakikayı değiştirebiliriz.
“Expires = 0” sayfanın hiç saklanmamasını sağlar.
End (Son): Response nesnesinin o anda icra edilmekte olan Script’i durdurarak, o ana kadar ne
elde edilmişse hepsini Browser’a göndermesini sağlayan metodu olan End, aynı zamanda
Buffer metoduyla tutulan HTML’in de gönderilmesine yol açar. Bu metoddan sonraki HTML
veya ASP kodları icra edilmez:
<%
Option Explicit
Response.End
%>
Response nesnesinin ASP sayfasının çıktı kontrolünü sağlayan bu metodlarını aşağıdaki
eğlenceli Script’le sınayabilirsiniz (ASP ile eğlence de bundan daha fazla olamaz!). Burada
Browser’a gitmesi ümidiyle üç cümle var. Programı çalıştırın ve bakalım hangisi ekranda
kalacak? Bu kadar eğlendiğinize göre şu soruyu da yanıtlayabilirsiniz: Neden?
<% @LANGUAGE = VBScript %>
<%
Option Explicit
Response.Buffer = True
Response.Expires = 60
%>
<HTML>
<BODY>
Bu 1 Numaralı mesajı mı Browser’a gidecek?
<%
Response.Clear
Response.Expires = 0
%>
<HTML>
<BODY>
Bu 2 numaralı mesaj mı Browser'a gidecek)
<%Response.Flush
%>
</BODY>
</HTML>
<%
Response.End
%>
Bu 3 numaralı mesaj mı Browser’a gidecek?
</BODY>
</HTML>
Uygulama (Application) ve Oturum (Session) Nesnesi
ASP’nin varlık sebebi, standart CGI’ın yetersiz kaldığı noktalardan biri olan Web Server’ın her
bir Web ziyaretçiyi oturumunun başından sonuna izleyebilmesi içindir, dersek durumu
abartmış olmayız. ASP açısından, bir site “uygulama programı” (Application) sayılır. Her
ziyaretçi de bir “oturum” (Session) sayılır. Bir takım ASP ve HTML sayfalarından oluşan
bildiğimiz Site’ye application, her hangi bir ziyarete de session denmesinin sebebi nedir? Bunu
her iki nesnenin işlevleri ile açıklayabiliriz.
Application nesnesi, sitenin tümüyle ilgili bilgileri (değişkenleri, nesneleri ve metodları) tutar;
Session nesnesi ziyaretçinin sitemize girmesinden itibaren izini sürer. Diyelim ki bir borsa
sitesi yaptınız; ziyaretçileriniz gelerek, satışa sunulan hisse senetlerinin değerlendirmelerini
okuyacak ve size “Şu, şu hisse senetleri al!” diye talimat bırakacak. Bütün ziyaretçilerinizin
erişeceği sadece bir veritabanınız var; buna karşılık her bir ziyaretçinin yapacağı farklı
tercihler, vereceği farklı kararlar olacaktır. Application nesnesi, sitenizle (artık site yerine Web
Uygulama Programı desek de ağzımız alışmaya başlasa!) veritabanına erişmekten tutun,
alışverişlerie kadar sitede yapılacak bütün işlerin bütün kurallarını bilecek ve uygulayacak;
Session nesnesi ise sözgelimi benim alışverişlerimi, tercihlerimi bilecektir.
HTML ve Javascript ile biraz oynadıysanız, bilirsiniz ki bir sayfadan ötekine değişken değeri
aktarmak, imkansıza yakın derecede zordur. Değişkenlerin ömrü, fonksiyonla sınırlıdır. Bir
ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu
bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun
değeri bütün sayfalarda aynı olsun; ziyaretçinin sayfa değiştirmesi ile değişkenin değeri
değişmesin. Bunu ASP’de yapmak çok kolaydır. ASP’de bu zorluğu yenebilmek için
değişkenlerimizi Session nesnesi için oluşturabiliriz; ve bu değer ziyaretçinin oturumu boyunca
devam eder; bütün ASP sayfalarındaki bütün Fonksiyonlar tarafından bilinebilir. Örneğin:
Session (“Tupras”) = 44500
bütün Session için geçerli bir Tupras değişkeni oluşturur ve ona “44500” değerini atar. Kimi
zaman, değişkenin çok daha geniş kapsamlı olmasını, yani ömrünün Session ile değil bütün
Application boyunca belirli olmasını isteyebiliriz. O zaman bu değişkeni Application
düzeyinde tanımlayabiliriz:Bu durumda Tupras değişkeni bütün ziyaretçiler için aynı değere sahip olacakatır.
Session nesnesinin oluşabilmesi için, ziyaretçiye mutlaka bir Cookie göndererek, sitemizde
(hani “Uygulama Programı” diyecektik?) bir işaret vermemiz gerekir. Daha önce, HTTP ile
kurduğumuz bağlantı, belirsiz durum bağlantısıdır demiştik. Bu, Server’ın bir ziyaretçiye arzu
ettiği sayfayı gönderdikten sonra, onu alıp almadığını, o sayfada ne tercihler yaptığını
bilmemesi demektir. Oysa, ziyaretçiye sitemize bağlandığı anda bir Session kimliği verirsek ve
her yeni sayfa talebinde bu kimliği kontrol edersek, kimin hangi oturumunu sürdürdüğünü
biliriz. ASP–uyumlu bir Web Server, ziyaretçi yeni bir tercih yapmadığı taktirde her Session
nesnesini 20 dakika açık tutar; sonra siler. Bu süreyi Session nesnesinin Timeout özelliği
yoluyla değiştirebilirsiniz. Session belirleyen Cookie ASP-uyumlu Web Server tarafından
otomatik olarak gönderilir ve takip edilir; tasarımcı olarak bizim bu konuda bir şey yapmamız
gerekmez.
Bir Web programınıza aynı anda kaç kişi ulaşırsa (yani sayfalarınızı kaç kişi talep ederse), o
kadar Session nesnesi oluşur; fakat siteniz bir adet olduğuna göre bir adet Application nesnesi
vardır. Bu nesnenin bütün Session’lar için sitemizin ihtiyaçlarına uygun ve aynı uygulama
kurallarına sahip olmasını sağlayan bir dosya vardır: Global.asa. Bu dosya PWS veya IIS
kurulurken oluşturulur. ASP ile Web programlarınızı, örneğin MS Visual Studio ile
oluşturuyorsanız, program sizin için seçtiğiniz dizinde bir Global.asa dosyası oluşturacaktır. Bu
dosyada, çoğu zaman, sitemize ilk ziyaretçinin gelmesiyle oluşan Application_OnStart ve son
ziyaretçinin çıkmasıyla oluşan Application_OnEnd ile herhangi bir ziyaretçinin bir sayfaya
erişmesiyle oluşan Session_OnStart ve ziyaretçinin sitemizden çıkması ile oluşan
Session_OnEnd olayları halinde ne yapılacağı yazılıdır. Bu dosyanın içeriği standart bir ASP
dosyasına benzemekle birlikte adındaki uzatmanın .asp değil de .asa olmasının sebebi,
dosyanın Active Server Application dosyası olmasıdır. ASP-uyumlu bir Web Server programı
sitemize ulaşan ilk ziyaretçiyi gördüğü anda Global.asa dosyasını çalıştırır.
Application ve Session nesnelerin kendi başlarına en çok kullanıldığı yer, sitemize gelen
ziyaretçilerin sayısını (sitemizin aldığı Hit sayısını) tutmasını sağlamaktır. Bu genellikle
Global.asa pogramına bir sayaç yerleştirilerek yapılır.
Share this article :
Etiketler: , ,

Yorum Gönder

 
Gora İzle | İletişim | Sitemap
Destek : Cem Yılmaz Filmleri | Telif VB... Telif Hakkı © 2013. cem yılmaz filmleri - Tüm Hakkları Saklıdır.. Sitemizde yer alan tüm videolar, kaynak kodları ile video paylaşım sitelerinden alınmaktadır. Telif hakları sorumluluğu bu sitelere aittir videoların hiç biri sunucularımızda yüklü değildir. Hak sahiplerinin iletişim adresimizden talep etmesi halinde UYAR-KALDIR yöntemi işletilerek, istenen içerik iki iş günü içerisinde siteden kaldırılır.