|
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 (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ı ü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. Öreğin
MS-Internet Information Server için varsayılan Script Timeout
süresi 90 saniyedir. Yani ISS, herhangi bir Script'in
çalışıp-durması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.
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, Dünya
Güneş'in etrafında dönebilir miydi? Hiç sanmam. Fakat lütfen o
CreateObject ile bu CreateObject'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 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("/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 kelime3") |
şeklindeki bir kod Bunu hemen şu şekle sokacaktır:
kelime1+kelime2+kelime3
|