|
ASP NESNELERİ
ASP teknolojisi, tıpkı Visual Basic dili gibi nesne yönelimli programlama yapısına sahiptir. Nesne Yönelimli Programlama (Object Oriented Programming, OOP) deyimini bir çoğunuz daha önce duymuşsunuzdur. ASP kullanırken de, öncelikli amacımız nesnelerin özelliklerini kullanarak, ya bu özellikleri belirlemek ya da değiştirmektir. Her şey nesne sayılabilir. Siz programlarınızı yazarken önce bir nesne tanımlar ya da hazır nesneleri kullanırsınız. Bu nesnelerin özelliklerine hükmeder, onları kullanırsınız.
Diyelim ki bir stok kontrol programı yazıyorsunuz. Bu program sizden aldığı bilgiler ışığında, merkez ambara mal girecek, mal çıkışı yapacak, size hangi üründen ne kadar kaldığını gösterecek, stok miktarı kritik sınırın altına indiğinde haber verecek. Bu işler için onlarca fonksiyon tanımlıyorsunuz ve Sub yazıyorsunuz. Bu demek oluyor ki, sizin ASP programınızda “ambar” diye bir nesneniz var; siz bu nesneye yönelimli program yazmışsınız!
Her bir program nesnesi temelde iki unsura sahiptir:
özellik (Property, Attribute): Bir nesnenin özellikleri, onun değişkenleridir. “Ambar” nesnesinin “malın cinsi,” “miktarı,” “tanımı,” “fiyatı,” “kritik miktarı” 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. öncelikle, ASP programında kullandığınız script dilinin size kazandırdığı 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. Bunların çoğu ASP’nin çalıştığı platform olan IIS tarafından sağlanırlar.
Nesneler kim tarafından oluşturulmuş olurlarla olsunlar, bir değer döndürmekle yükümlüdürler.
Nesne.özellik = Değer
Bir nesnenin herhangi bir özelliğinin değerini, değişken değeri gibi kullanabilir program akışını buna göre değiştirebiliriz:
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. İşin teorisine daha fazla bulaşmadan örnek yapalım.
Nesneler, diğer yararlarının yanı sıra, birbiri ile ilgili Sub’larımızı, fonksiyonlarımızı ve değişkenlerimizi bir arada 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
%>
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. Sonrasına geçmeden önce bunu nasıl yapacağımızı yazalım:
<%
Dim Ogr1
Set Ogr1 = New Ogrenci
Ogr1.Adi = “Kemal”
Ogr1.Soyadi = “Sunal”
Ogr1.No = “444”
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 Web tarayıcı penceresine yazdırabilir.
HATASIZ KUL OLMAZ!
ASP kodlarınızda yazım hatası, olmayan değişkenlere gönderim, noktalama hataları gibi hatalar bulunmamalıdır. Bu tür hataları, programınızı Web’e göndermeden önce mutlaka ayıklamalısınız. 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 etmesi söylenir. Fakat oluşan hata, programın daha sonra vermesi beklenen sonucu vermesini önleyecek nitelikte olabilir. 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 (http://msdn.microsoft.com/vbasic/).
SUNUCU NESNELERİ
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 bir arada 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 hânesine 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 (Request 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.
SUNUCU NESNESİ
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 (CreateObject, 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ı yü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 tabiî server’ın sonsuza kadar beklemesi mümkün değil! Programın bir şekilde durdurulması 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. örneğin MS-Internet Information Server için varsayılan Script Timeout süresi doksan saniyedir. Yani ISS, herhangi bir script’in çalışıp-durmasını doksan 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 doksan saniye ise yüz 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 doksan 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.
CreateObject Metodu: İlk ASP kodunu yazdığımız andan beri bu metodu kullandığımızı görüyorsunuz. CreateObject (nesne oluştur) olmasa idi, dört mevsim birbirini izleyebilir. Yukarıda kullandıklarımız Scripting nesnesinin bir metoduydu. 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şeninden 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. (Bunu ayrıntılı olarak anlatacağız.) Server’ın CreateObject 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(“/site_ismi”)
Bu komutla WebDizini değişkenin değeri şöyle olacaktır:
“C:\inetbup\wwwroot\site_ismi\”
Fakat bu metodun sadece böyle durağan 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ökdizini, “/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 NESNESİ
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 hâlinde ele alır; koleksiyonlar oluşturur. Bu koleksiyonlar, 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 koleksiyonunu oluşturur. Bu ziyaretçinin browser’ın URL hânesine 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ğ (dial-up) 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 koleksiyonunun 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.
SERVER DEĞİŞKENLERİ
Request nesnesinin bir diğer koleksiyonu, 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. önce ş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 " "
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 Koleksiyonu’nun elemanları şöyle sıralanır:
Değişkenin adı Değeri
ALL_HTTP http Başlığı içinde yer alan bütün değişkenler ve değerleri. Başlık adlarının önünde “HTTP_” öneki vardır.
ALL_RAW HTTP Başlığı içinde yer alan bütün değişkenler ve değerleri. Başlık adları ve değerleri istemci tarayıcını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 Sunucunun 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
ASP nesne yönelimli bir programlama dilinin ürünüdür. Visual Basic ya da herhangi başka bir programlama dili ile program yazdı veya yazan birinin yanında bulunduysanız mutlaka görmüşsünüzdür: Günümüz program yazma editörlerinde önce bir form oluşturur (bu form, Web sayfalarımızda kullandığımız formlardan değil, bir programı çalıştırdığımızda karşımıza çıkan görsel yapıdır) daha sonra bu forma örneğin bir “buton” ekler ve muhtemelen yandaki özellikler menüsünden butonun bazı özellikleri değiştiririz. Bu son yaptığımız şey, “buton” nesnesinin özelliklerini belirlemekten ya da değiştirmekten ibarettir. ASP kodlarımızı yazarken bu şekilde çalışan bir görsel editörümüz olmadığından (olması da imkânsız zaten) oluşturduğumuz her bir nesnenin özelliğini, nasıl değiştireceğimizi bilmemiz ve buna göre hareket etmemiz gerekmektedir. Kısacası diyeceğim şu ki; nesneleri iyi öğrenelim.
COOKIE NESNESİ
SERTİFİKA NESNESİ
Sertifika, HTTP bağlantısında “Ben filancayım!” diyen istemcinin, gerçekten filanca olup olmadığını gösterir. Küçük birer yazılımdan ibaret olan sertifikaları yetkili bir kurum veya şirket verir. Bu bir tür seri numarasıdır. Ş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.
ASP açısından sertifika ile ilgili her türlü bilgi “ClientCertificate” koleksiyonunda bulundurulur. örneğin, bir ziyaretçinin gerçekten sitenize girmeye yetkili olup olmadığını anlamak için
<%SertifikaNo = Request.ClientCertificate(SerialNumber) %>
gibi bir kodla istemcinin Sertifika seri numarasını SertifikaNo değişkenine atayabilir ve daha sonra bu değişkenin değerini elinizdeki bir liste ile karşılaştırabilirsiniz.
KARŞILIK (RESPONSE) NESNESİ
Gelelim Web server’ın çıktı (output) işlerini yöneten nesnesine. Response nesnesi ile server’ın istemciye gönderdiği karşılıklar kontrol edilebilir. Server’dan Web tarayıcısına 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 animasyonu, video veya ses dosyası olabilir. Böylesine zengin bir içeriğe sahip olan Response nesnesinin, sadece bir koleksiyonu vardır: Cookie’ler. Buna karşılık Response nesnesinin kullanabileceğimiz çok sayıda özelliği ve metodu bulunur. önce cookie koleksiyonunu ele alalım.
RESPONSE NESNESİNİN METODLARI
Response nesnesinin bir çok metodu vardır; bunlardan .Write’ı daha önceki örneklerimizde çokça kulandık:
<%
DIM Adi_Soyadi
Adi_Soyadi = “Sarı çizmeli Mehmet Ağa”
Response.Write(“Merhaba, benim adım, “ & Adi_Soyadi)
%>
örneği, ziyaretçinin browser penceresine, “Merhaba, benim adım Sarı çizmeli Mehmet Ağa” 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 = “Sarı çizmeli Mehmet Ağa”
%>
<%= “Merhaba, benim adım, “ & Adi_Soyadi %>
Tahmin edeceğiniz üzere sonuç yukarıdaki ile aynı olacaktır.
öZELLİKLERİ
Response nesnesinin bir çok özelliğini kullanarak ziyaretçimize göndereceğimiz sayfaları ve diğer unsurları yönetebiliriz:
• Buffer (Tampon): Bu nesne özelliğinin değeri 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 (Temizle): Buffer metodu ile script’in sonunu beklerken geçici bir alanda tutulmakta olan HTML, Clear metodu ile cache’den temizlenir. 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 (Zamanaşımı): Kullanıcı tersine bir ayar yapmadıysa, browser genellikle görüntülediği sayfaları Temporary Internet Files 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 ve devamlı güncellenen bilgilerin sunulduğu Web sitelerinde bu sitenin itibarını sarsar. ASP tekniğiyle bunu önleyebiliriz. ASP sayfamızda bu sayfanın örneğin 60 dakikadan fazla cache dizinde tutulmamasını sağlayacak Expires metodunu kullanabiliriz:
<%
Option Explicit
Response.Expires = 60
%>
Burada yazdığımız rakamı değiştirerek, sayfanın geçici alanda tutulacağı dakikayı değiştirebiliriz. “Expires = 0” ifadesi 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
%>
Kaynak : asundinay.com
|