Saturday, 18 September 2010

VbScript'e Giriş

VbScript'e Giriş

Bu kitapçıktaki örneklerimizi VBScript diliyle yazacağımıza göre, önce hızlı bir VBScript kursu görsek iyi olur. Visual Basic dilini biliyorsanız, VBScript biliyorsunuz sayılır. VBScript, güçlü bir dildir; ancak Netscape firmasının hiç bir zaman Browser’ında istemci tarafında çalıştırılabilecek diller arasında kabul etmemesi sebebiyle VBScript, Web’in istemci tarafında kendisinden bekleneni yapamadı. MS’un Browser’ı Internet Explorer ise VBScript ile yazacağınız İstemci-Tarafı kodları okuyabilir ve icra edebilir.

Ne var ki ASP kodlarımız hiç bir zaman ziyaretçinin Browser’ının yüzünü göremeyeceği ve sadece Server’da çalışacağı için Server’da VBScript desteği bulunduğu sürece, ASP sayfalarınızı VBScript ile yazabilirsiniz. Bir Server’da ASP desteği varsa, VBScript desteği de var demektir.

VBScript’in hemen hemen bütün komutlarını ve yöntemlerini ASP’de kullanabilirsiniz. Ancak bunun bir kaç kısıtlaması vardır. VB veya VBScript’e ASP dışında aşina iseniz, mesaj kutusu (MsgBox) ve girdi kutusu (InputBox) aracılığı ile programlarınıza kullanıcının bilgi girmesini sağlayabileceğinizi biliyorsunuz demektir. Bu iki komutu ASP içindeki VBScript kodunda kullanamayız. Ayrıca ASP teknolojisi zaten VBScript’in bütün komutlarını ve deyimlerini kullanmanızı da gerekli kılmayacaktır. Göreceksiniz ki, mükemmel ASP sayfaları oluşturmak için bile bir avuç VBScript komutu kullanacağız.

ASP sayfalarımızdaki HTML kodları ile VBScript (veya diğer Script dillerinin) kodlarını birbirinden ayırmamız gerekir. Bu ASP.DLL’ye, HTML’in nerede bittiğini, Script diliyle yazılmış kodun nerede başladığını gösterebilmemiz için gerekli. Bunu sağlamak için Script diliyle yazılmış herşeyi “<%” ve “%>” işaretleri arasına alırız. ASP.DLL bu işaretleri görünce, içindekileri “yazmak” yerine “yapar.” Bir ASP sayfanızda HTML’in klasik “<” ve “>” işaretleri arasındaki unsurlar, ASP.DLL tarafından ziyaretçiye gönderilecek olan sayfaya aynen aktarılır; ancak “<%” ve “%>” arasındaki herşey, başta belirttiğiniz LANGUAGE etiketinde yazılı Script dilinin yorumlayıcısına verilir; yorumlatılarak, gereği yerine getirilir.

“<%” ve “%>” işaretlerine “sınırlayıcı” denir. Sınırlayıcının içinde bir veya daha çok satır kod bulunabilir. Sınırlayıcılar ve içindeki Script, HTML etiketlerinin içinde veya dışında yer alabilir. Sınırlayıcının içindeki kodlarımızı açıklamak için koyacağımız yorum satırlarının başına tek tırnak işareti (') koyarız. İşte bu kuralları uyguladığımız bir ASP sayfası örneği:

<% @LANGUAGE=VBscript %>
<html>
<head>
<title>Hoşgeldiniz!</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>
<center>

<%
' Yazı tipi boyutunu tutacağımız bir değişken tanımlayalım
Dim fontBoyut
%>

<%
' yazı tipi boyutunu 1'den 7'ye kadar değiştirelim
For fontBoyut = 1 To 7
%>
<font size = <%=fontBoyut%>>
Hoşgeldiniz!<br>
<% next %>
</center>
<h3>Bugün <% =WeekdayName(Weekday(Date)) %>, <% = Date %>.
Şu anda Server'da saat: <% = Time %>.<p>
</h3>
</body>
</html>

Burada sınırlayıcı arasında tek veya çok satırlı VBScript kodları ile başında tek tırnak olan icra edilmeyen, yorum satırlarını görüyorsunuz. HTML etiketinin içine gömülmüş VBScript kodu ise HTML’in <FONT> etiketinde yer alıyor: <font size = <%=fontBoyut%>>. Burada karşılaştığımız “<%=” ifadesi, ASP’ye, “Bu değişkenin değerini bul ve tam buraya yaz!” dememizi sağlıyor. Bu ifade daha sonra yakından ele alacağımız response.write metodunun kısaltılmış halidir. HTML etiketinin içine yazdığımız VBScript bölümünün kendi sınırlayıcı işaretlerinin yine de kullanıldığına dikkat edin.

VBScript'te değişkenler

VBScript'te değişkenler

VBScript'te değişkenleri, Dim, public ve private ifadeleri ile deklare edebiliriz.

Dim Derece

Yukarıdaki ifade "derece" isminde bir değişken tanımlar. Aynı satırda birçok değişken tanımı yapılabilir.

Dim Derece,Fahrenayt

Değişken isimlerinde dikkat edilmesi gerekenler

Alfabetik bir karakter ile başlamalı

255 karakteri geçmemeli

Tanımladığı alan içinde kullanılmalı

Bir değişkene değer atama
Bir değişkene değer atama, aşağıdaki gibi yapılır.

B = 200

Ölçeklenebilir dizi değişkenler
Klasik anlamdaki değişken tanımlamasının dışında, VBScript, ölçeklenebilir dizi değişkenler tanımlamasına da izin verir. Dizi değişkenler, değişkenin yanındaki parantez içinde belirtilen değerler ile tanımlanırlar. Aşağıdaki örnekte 11 adet değer saklıyabileceğiiz bir "dizi değişkeni" tanımı örneği gösteriliyor.

Dim A(120)

A(0) = 256
A(1) = 324
A(2) = 100
...
A(110) = 55

Dizi değişkenini, başka bir değişkene de atamamız mümkün;

...
Degişken = A(18)
...

Tek boyutlu dizi değişkenlerinde limit yoktur. Birden fazla boyutu olan dizi değişkenleri oluşturabiliriz;

Dim Masa(5, 10)

Birinci rakam satır değerini, ikincisi sütün değerini gösterir.

ASP'de işlemler

ASP'de işlemler

Öncelikle bu işlemler matematik amaçlıdır. Yani kullanıcağımız değikenler sayı yüklü olmalıdır.

Degisken1 = "1"

Bu bir metindir. Siz sayı olarak görsenizde ASP metin diyecektir. Nedeni ise tırnaklardır.

Degisken1 = 1

Bu bir sayıdır. Her işlemi yapabilirsiniz. Üsttekini kullanırsanız

Degisken1 = "1"

Degisken2 = Degisken1 + 2

Bu durumda Degisken2 12 olur ama ikinci durumda

Degisken1 = 1
Degisken2 = Degisken1 + 2

Bu durumsa Degisken2 3 olur.

Degisken1 = 2

Degisken2 = Degisken1 * 2 + 10 / 2

Bu durumda sonuç 9 çıkar ama sonucun 7 olması lazımdı dimi niye olmadı? Çünkü ASP işlem önceliğine bakar. Peki nasıl yapıcaz? Parantez kullanıcaz!

Degisken1 = 2
Degisken2 = ((Degisken1 * 2) + 10) * 2

Şimdi oldu. İşlemlerimiz normal simgeler (+, -, *, /) Diğer işlemler ise trigonometriye kadar giriyor onların komutlarını ileride vericem. Ayrıca ^, \. "^" üssünü almak için kullanılıyor, \ ise tamsayı böler.

Select Doldurmak

Select Doldurmak

SELECT, ziyaretçilerimize önceden belirlenmiş bir çok unsurdan birini veya daha fazlasını seçmelerine imkan veren bir etikettir. Ziyaretçi, seçimini SELECT'in OPTION'ları arasından yapar. Seçenekler (OPTION), sahip oldukları değeri Server'a gönderirler. Genel yazım kuralı şöyledir:

<FORM ACTION="..." METHOD=POST|GET>
<SELECT NAME="metin">
<OPTION VALUE="değer1">Tercih 1
<OPTION VALUE="değer2">Tercih 2
<OPTION VALUE="değer3">Tercih 3
</SELECT>

Bu Form'un gönder (Submit) düğmesi ile sağlanan hareket (ACTION), seçilen değeri veya değerleri, Form'u işleyecek ASP programına gönderir.

Ziyaretçimize sunacağımız seçenekler, iki-üç adet ise, bunu HTML dosyasını yazarken, OPTION'lar halinde kodlamak kolay olabilir. Ancak seçenek sayısı artıyorsa, veya seçeneklerimiz sık sık değişiyorsa, bunları bir veri tabanında toplamak ve OPTION değerlerini veritabanının bir alanından alarak ziyaretçiye sunmak çok daha kolay olur. Böylece ASP sayfası değişmeden kalır; biz sadece veritabanını güncelleştiririz. Çoğu zaman bu güncelleştirme ziyaretçilerin yapacakları eklerin veritabanına yazılmasıyla sağlandığı için, ortaya gerçekten dinamik bir Web Uygulaması çıkmış olur.

Diyelim ki, bizim grubumuzun üyelerini gösteren yukarıda oluşturduğumuz uyeler.mdb (DSN'i uyeler olan veritabanı) dosyasının adı-soyadı alanlarını birleştirerek, sayfamızdaki bir SELECT etiketinin OPTION'larına yazmak istiyoruz. Bunun için önce sayfamızda kullanacağımız değişkenleri tanımlayalım:

<%
Dim connVeriyolu, rsVeri, SQL
%>

Sonra, bu değişkenlerden veri ile ilgili olanlara .Connection ve .Recordset için gerekli ifadeleri yazalım. Veri ile çalışırken tasarımcının değişken adlarına bakarak hangisinin .Connection, hangisinin .Recordset değerlerini içerdiğini anlaması zorlaşabilir. Bu bakımdan değişken adlarının önüne .Connection için olanında conn, .Recordset için olanında rs harflerini kulllanmak yararlı olabilir. Veritabanından fiilen hangi verileri çekeceğimizi gösteren SQL deyimini de belirgin bir şekilde SQL değişkenine yazabiliriz:

<%
Set connVeriyolu = Server.CreateObject("ADODB.Connection")
SQL ="SELECT uyeAdi, uyeSoyadi FROM uyeler"
%>

Şimdi bu değerlere dayanan ve adına uyeler diyeceğimiz veri kümesini oluşturalım:

<%
connVeriyolu.open "uyeler"
Set rsVeri=connVeriyolu.execute(SQL)
%>

Artık elimizde içinde bütün üyelerin adı ve soyadını tutan bir dizi-değişken var. Şimdi biliyoruz ki veritabanından veri satır-satır okunur. Birinci satırın okunması sırasında bu değişkenin değerlerini yazacak olursak:

rsVeri (0) = üye

1'in adı rsVeri(1) = üye 1'in soyadı

olacaktır. Veritabanından ikinci satırın okunmasında ikinci üyenin adı ve soyadı, üçüncü satırın okunmasında üçüncü üyenin adı ve soyadı bu değişkenlerin değeri olacaktır. Demek ki, bu değerleri bir SELECT etiketinin OPTION değeri olarak kullancaksak, bu işlemi ikinci satır okunmadan yaptırmamız gerekir. O halde:

<SELECT NAME="AdSoyad">
<% Do While Not uyeler.eof %>
<OPTION VALUE = "<%= rsVeri(0) & " " & rsVeri(1)%>"><%= rsVeri(0) & " " & rsVeri(1)%>
</Option>
<%rsVeri.movenext
loop%>
</select>
<% rsVeri.close %>
</SELECT>

Do döngüsünün içinde iken veritabanından alınan değer, herhangi bir değişkenin değeri gibi kullanılabilir. Burada verilerin uyeler dizisinin dosya sonuna (eof, end Of File) okunduğuna dikkat edin. Şimdi yukarıdaki kodları bir Form içinde birleştirelim:

<%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP SELECT DOLDURMA</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>
<%
' Değişkenleri tanımlayalım
Dim connVeriyolu, rsVeri, SQL
Set connVeriyolu = Server.CreateObject("ADODB.Connection")
SQL ="SELECT uyeAdi, uyeSoyadi FROM uyeler"
connVeriyolu.open "uyeler"
Set rsVeri=connVeriyolu.execute(SQL)
%>
<BODY>
Bu listeden bir üyenin adını seçiniz:
<SELECT NAME="AdSoyad">
<% Do While Not rsVeri.eof %>
<OPTION VALUE = "<%= rsVeri(0) & " " & rsVeri(1)%>"><%= rsVeri(0) & " " & rsVeri(1)%>
</Option>
<%rsVeri.movenext
loop%>
</select>
<% rsVeri.close %>
</SELECT>
</BODY>
</HTML>

Bu sayfayı option.asp adıyla kaydederek sınayabiliriz. Alacağımız sonuç şuna benzemelidir:

Burada yapılan seçim sonucu elde edilen değer Server'a gönderilebilir; ve söz gelimi ziyaretçinin seçtiği kişiye ait bilgiler kendisine ulaştırılabilir.

ASP'nin temel taşları değişkenler ve değişmeyenler

ASP'nin temel taşları değişkenler ve değişmeyenler

Değişken, içine çeşitli türlerde bilgi atanabilen birer elemandır. Değişkenleri Dim ile Deklare edebiliriz ama bu gerekli değildir. Tabii bu ne kadar iyi gibi gözükse de zararı daha büyüktür. Mesela ufak bir yazım hatası 200 satırlık bir dosyayı hatta bir kaç dosyayı bile tekrar tekrar incelememize neden olabilir. Bu yüzden Option Explicit diye bir özellik eklenmiş ASP'ye. Böylece değişkenleri tanımlamak bir zorunluluk oluyor. Aksi takdirde hata veriyor dosyamız. Option Explicit'i sayfanın en başına koymalıyız. Yani sayfamız;

<% Option Explicit %>

diye başlamalı. Değişkenlere değer vermek için "=" koyduktan sonra tırnak işareti (") içinde değeri yazmalıyız veya başka bir değişken ismini koymalıyız.

<%
Dim Degisken1, Degisken2
Degisken1 = "Merhaba"
Degisken2 = Degisken1
response.write Degisken1
response.write Degisken2 %>

bu komutlarla degisken1'e Merhaba yazdık ve degisken2'ye de degisken1'in içindeki değeri yani Merhaba'yı ekledik. Sonra bu değişkenlerin değerini ekrana yazdırdık. Ekranda MerhabaMerhaba yazıcaktır.
Yazının başındada bahsettiğim gibi bir de değişmeyenler var. Bunları Const ile deklare ediyoruz. Yani;

<%
Const dolar = "1300000"
%>

dolar sabitini ürettik ve değer olarak 1300000 yazdık. Burda dikkat edilmesi gereken bir sabite değişken değeri ekleyemeyiz. Yani;

Const Yazi = Degisken1

bu kod hata verir.

İşte böyle emekleye emekleye girdik ASP dünyasına umarım hepimiz birer maraton koşucusu olucaz.

İkinci Adım

Değişkenleri öğrendik şimdi de form'dan gelen bilgilerin değişkenlere aktarılmasını öğrenelim. Öncelikle bir form.htm isimli bir dosya oluşturun ve içine bunları ekleyin

<form action="form.asp" method="post">
<input type="text" name="field1">
<input type="submit" value="Yolla">
</form>

Sonra bir form.asp dosyası oluşturun ve içine de

<%
Formdan_Gelen = Request.Form("field1")
response.write Formdan_Gelen
%>

yazın. Böylece formdan gelen field1'i formdan_Gelen değişkenine atadık ve ekrana yazdırdık. Ama burda dikkat etmeniz gereken yer eğer form post methodu ile yollanırsa Request.Form, eğer GET methodu ile yollanırsa Request.QueryString kullanmamız gerekecek. Bunların arasındaki fark ise POST methoduyla yollanan veriyinin başkaları tarafından görünmemesi GET in ise adres çubuğunda görünmesidir.

İlk Asp Kodlarımız

İlk Asp Kodlarımız

Aşagıdaki kodu notdefterinde yazın ve uzantısını.asp olarak kaydedin.

<meta http-equvi="content-type" content="text/html;charset=ISO-8859-9">
<meta http-equiv="content-type" content="text/html;charset=windows-1254">
<% @ LANGUAGE=VBScript CODEPAGE=1254 %>
bu yazı html sayfasıyla yaqzıldı
<%
response.write "bu tazı ise asp sayfsıyla yazılmıştır"
%>

Yazdıklarımızı tanıyalım :::::

Yukarıda yazdıgımız meta etiketleri Sayfamızın turkce karakterlere göre yazıldıgını anlatıyor

CODEPAGE=1254 ise kotların turkce karaktere göre kodlandıgını anlatıyor

response.write bunu zaten Biliyoruz Sayfaya İstegimimiz Şeyleri yazdırmaya yarıyor

ASP

Asp-1

ASP teknolojisi ile oluşturduğunuz sayfaları, yani içinde ASP teknolojisinin gerektirdiği kodlar bulunan HTML dosyalarını, .asp uzatmasıyla kaydederiz. Bu dosyalar talep edildiğinde, Web Server programı, eğer ASP teknolojisini tanıyorsa, talep edilenin ASP sayfası olduğunu dosya adının uzatmasından anlar; ve bu sayfayı ziyaretçiye yollamadan önce kendisi işleme tabi tutar. ASP sayfamızdaki kodlar büyük bir ihtimalle bir takım dinamik işler yapacak, örneğin hesaplamalar, araştırmalar, veri tabanından veri çekme, dosya sisteminden dosya isteme gibi görevlerini yerine getirecek, ve ortaya çıkacak olan HTML dosyasını ziyaretçiye gönderecektir. Diyelim ki bu kitapçıktaki örnekleri yaptınız ve ücretsiz Site yeri edinmiş olduğunuz Hosting firmasının bilgisayarındaki sitenize yerleştirdiniz. Sonra Browser’ınızın URL hanesine bu ASP dosyasının adını yazdınız ve sayfayı talep ettiniz. Karşınıza, ya ASP sayfasının içindeki kodları görüntüleyen veya sadece sayfanın HTML unsurlarına yer veren bir sayfa geldi! Bu Server’ınızın ASP anlamadığını gösterir. ASP sayfalarınızı ASP-uyumlu Web sunucularında çalıştırabilirsiniz. Sitenizde ASP sayfaları bulunacaksa ve ücretli evsahibi firmalardan site alanı edinecekseniz, sunucunun ASP-uyumlu olmasına dikkat edin.

Şimdi, ilk ASP’mizi çalıştırdığımıza göre, biraz teknikten söz edebiliriz. HTML’in ziyaretçinin bilgisayarında çalıştığını biliyorsunuz; istemci Browser, sizin URL hanesine adını yazdığınız HTML dosyasını yine adresteki sunucu Web Server’dan ister. Web Server da bu dosyayı bulur ve içinde kayıtlı resim ve diğer unsurlarla birlikte istek sahibine gönderir. Fakat kimi zaman Server’a bize sadece bir dosyayı göndermesini değil, fakat bu dosyanın içinde kayıtlı komutlar varsa onları icra etmesini de bildirebiliriz. Bunu yapmanın bir yolu CGI programlarıdır. Bir diğer yolu ise ASP’dir. Web Server, kendisinden bir ASP belgesi talep edildiğinde, kendi kendine “Dur bakalım! ASP istendiği zaman hemen alıp göndermek yok, önce bunu ASP.DLL programına gönderelim.. Ondan sonra işimize devam ederiz!” der

Asp-2

ASP.DLL, kendisine bir .asp dosyasının geldiğini görünce, hemen ASP’lerin Anayasası olan global.asp’nin çalışıp çalışmadığına bakar. global.asa, tıpkı diğer ASP dosyaları gibi bir düz yazı dosyasıdır ve ASP programlarının çalışma koşullarını düzenleyen kuralları içerir. (Bu dosyayı sırası gelince ele alacağız.) Yukarıdaki örnekte gördüğümüz gibi ASP dosyası hem HTML kodları içerir, hem de içinde bir Script diliyle yazılmış kodlar vardır. ASP’ye “program” özelliği kazandıran bu Script dili ile yazılmış kodlardır. ASP.DLL, önce gelen .asp dosyasında hangi Script dilinin kullanıldığına bakar ve bunun için gerekli ortamı oluşturur; yani bu Script dilini yorumlayacak programı çalıştırır; bu program Script’i yorumlar ve icra edilecek komutları icra eder; ASP.DLL, icra edilen komutlar, işletim sisteminin yardımını istiyorsa (örneğin bir veritabanından veri çekmek gibi, veya dosya sistemine bir dosya açtırmak, yazdırmak, sildirmek gibi) bu yardımın edinilmesini de sağlar. Bütün bu işlerin sonunda sizin yazdığınız HTML kodlarına ek yapmak (örneğin bir tablonun içini, çekilen verilerle doldurmak veya dosya sisteminden edinilen bir dosyanın içeriğini sayfaya aktarmak gibi) gerekiyorsa bu ekleri ASP.DLL yapar.
ASP.DLL, kendisine sevk edilen dosyayı satır satır okur ve önce dosyadaki ASP kodlarının gerektirdiği HTML değerlerini bulur; yani önce ASP icra edilir, gereği yerine getirilir. Sonra HTML bölümleri ile birleştirilip sonuçta sunucuya saf ve temiz bir HTML sayfası gönderilir. Bu sayfanın içinde bir satır bile ASP kodu bulunmaz. Eğer sayfanıza ziyaretçinin Browser’ında çalışması amacıyla Javascript veya VBScript kodları koydu iseniz, elbette bu kodlar HTML’in parçası olarak ziyaretçiye gidecektir. Fakat giden sayfada artık ASP’ye ilişkin hiç bir şey kalmamış olacaktır.
Biliyorsunuz, mevcut sürümleri itibariyle Browser programları içinde Netscape VBScript dilini anlamaz. ASP sayfalarımızda istediğimiz Script dilini kullanabiliriz; VBScript de kullanabiliriz. Netscape’in VBScript anlamamasıyla, ASP sayfalarımızda VBScript kullanmamızın bir ilgisi yoktur; çünkü ASP sayfasının ortaya çıkartacağı HTML kodunda ASP dolasıyla VBScript bulunmayacaktır; dolayısıyla ASP sayfalarınız, Netscape tarafından da anlaşılıp, görüntülenebilecektir. Tabiî ortaya çıkacak HTML sayfasının Netscape tarafından arzu ettiğiniz gibi görüntülenebilmesi için Netscape’in anlayabildiği dinamik HTML unsurlarına yer verme zorunluğunuz hâlâ devam ediyor.

Asp-3

ASP tekniğinin nasıl çalıştığını anladığımıza göre şimdi biraz terminoloji serpiştirelim ki, Webmaster meslektaşlarınızla biraraya geldiğinizde, gerçekten ASP ile mesela Javascript arasındaki farkı bildiğiniz belli olsun. ASP bir Server-Side Script teknolojisidir. Internet’te istemci ile sunucu arasındaki çizginin sunucu tarafına Server-Side (Sunucu Tarafı), istemci tarafına da Client-Side (evet, doğru tahmin ettiniz: İstemci Tarafı) denir. Server-Side’da çalışan Script programları da “Server-Side Script” (Sunucu Tarafı Script’i) adını alır. Dolayısıyla şöyle bir sayfa yaparsanız (merhaba.htm), bu sayfada Client-Side Script teknolojisi kullanmış olursunuz:

<HTML>
<HEAD>
<TITLE>JavaScript ile Tarih</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>
<H1>Merhaba Dünya</H1>
<H2>Bugün:</H2>
<H3>
<SCRIPT LANGUAGE=JAVASCRIPT>
<!--
tarih = new Date();
document.write(tarih);
//-->
</SCRIPT>
.</H3>
</BODY>
</HTML>

HTML sayfanıza <SCRIPT>..</SCRIPT> etiketleri arasına yerleştireceğiniz bu kodun çalışması için Server’ın hiçbir şey yapması gerekmez; kodu Browser çalıştıracak ve günün tarihini size (Türkçeleştirmediğiniz için İngilizce olarak) bildirecektir. Şimdi, bir de Server tarafında çalışan Script içeren sayfaya örnek verelim (merhaba2.asp). Bu kodu yazarken kapanan Script etiketinden sonra nokta olduğuna dikkat edin:

<HTML>
<HEAD>
<TITLE>VBScript ile Tarih</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>
<H1>Merhaba Dünya</H1>
<H2>Bugün:</H2>
<H3>
<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
response.write(Date)
</SCRIPT>.
</H3>
</BODY>
</HTML>

Asp-4

Bu sayfada kullandığınız Script’i VBScript ile yazdığınızı farkettiniz. Yani? Bu HTML sayfası, Netscape’de görüntülenemez! Hayıır. Görüntülenir, çünkü Script’i Netscape değil, Server çalıştıracak. Bunu <SCRIPT> etiketinin içindeki “RUNAT” özelliği ile belirtiyoruz. (“Run,” çalıştır; “at” ise “içinde, üzerinde” anlamına gelir. “RUNAT” “...de çalıştır” gibi bir anlama sahiptir.) Burada RUNAT’in karşısına yazdığımız SERVER ifadesi ile, Script’in Browser’a gönderilmeden önce Server’da çalıştırılmasını sağlıyoruz; Server’a “Bu Script’i Server’da Çalıştır!” demiş oluyoruz.

Netscape bu sayfayı görüntüleyecektir; ama galiba bir terslik var. merhaba.asp ile merhaba2.asp’nin ekran görüntülerini ve kodlarını karşılaştırırsanız, birinde noktanın olması gereken yerde olduğu halde diğerinde noktanın yanlış yerde olduğunu görüyoruz. Oysa iki kodu da karşılaştırırsanız, ikisinde de nokta işareti, kodun bittiği yerde yer alıyor. Yukarıda ASP’nin icrasında HTML sayfa Server’a verilmeden önce ASP.DLL tarafından içindeki ASP kodlarının icra edildiğini söylemiştik. Nitekim, burada gördüğünüz gibi, ASP.DLL, HTML sayfayı içinde Server’ın çalıştırması gereken bölümle birlikte Server’a gönderdi; Server kendisine gelen dosyada kendi icra etmesi gereken (RUNAT=SERVER özelliği verilmiş olan Script’i) bölümü icra etti ve sonucu Browser’a aktardı. Yani, Server’ın çalıştırdığı Script’in sonucu sayfaya ASP’den sonra eklendi. Dolayısıyla, nokta, yanlış yerde kaldı.
Bundan çıkartacağımız sonuç şu olacak: ASP sayfalarımıza, Browser, Server ve ASP.DLL tarafından çalıştırılacak kodları yerleştirirken, sırasına dikkat edeceğiz ve hangi sırada icra edilmelerini istiyorsak, o sırada koyacağız.
Server ile ASP.DLL’in ilişkisi sadece Script dilini çalıştırmaktan ibaret değildir. ASP, istemciden gelen HTTP İstemi (Request) ve HTTP’ye giden Karşılık (response) unsurlarından tutun, ActiveX Data Objects (ADO, AcvtiveX Veri Nesneleri) aracılığıyla, işletim sisteminin sunacağı veritabanına erişim imkanını ve işletim sisteminin sunduğu dosya yönetimine kadar bir çok imkanı kullanır. Bu “imkanlar” ASP’nin eline geçtiği anda “nesne” (Object) sayılırlar Şimdi bu nesnelere biraz yakından bakabiliriz.