Merhaba Webkolog dostlarım,
Bugün ASP'nin (Active Server Pages) en önemli kavramlarından biri olan nesnelere odaklanıyoruz. Nesneler, ASP'de web sayfalarınızla etkileşim kurmanız, sunucu tarafında işlemler yapmanız ve verilerle çalışmanız için vazgeçilmez araçlardır. Kısacası, dinamik web uygulamaları geliştirmemizin anahtarıdırlar. Gelin, ASP'de sıkça kullandığımız bazı temel nesnelere yakından bakalım.
Ana Dahili Nesneler
ASP, geliştiricilere kolaylık sağlamak için birkaç önemli dahili (built-in) nesne sunar. Bunlar, her ASP sayfasında otomatik olarak erişebileceğiniz nesnelerdir.
Response Nesnesi (Kullanıcıya Veri Gönderme)
Response nesnesi, sunucudan istemciye (tarayıcıya) veri göndermek için kullanılır. Yani web sayfasında gördüğünüz her şey, Response nesnesi aracılığıyla gönderilir.
- .Write: Ekrana metin, değişken veya HTML kodu yazdırmak için kullanılır.
<% Response.Write("Merhaba Webkolog!") %> <% Response.Write myVariable %> <% Response.Write "Adınız: " & userName %>
- .Buffer: Sayfadaki HTML kodlarının tamamlanıp, tarayıcıya tek seferde gönderilmesini sağlar (True/False). Performans için genellikle True olarak ayarlanır.
- .Redirect: Kullanıcıyı belirtilen bir URL'ye yönlendirir.
<% Response.Redirect "https://www.webkolog.net" %>
- .End: Sunucu üzerindeki mevcut ASP betiğinin çalışmasını durdurur.
- .Expires: Tarayıcının sayfayı önbelleğinde ne kadar süre tutacağını saniye cinsinden belirtir (0 = hiç önbelleğe alma).
- .ExpiresAbsolute: Sayfanın belirli bir tarih ve saate kadar önbellekte tutulacağını belirtir.
- .Clear: Tamponlanmış HTML bilgilerini temizler. Response.Buffer True iken kullanılır.
- .Cookies: Tarayıcıya çerez (cookie) eklemek için kullanılır.
- .CacheControl: Tarayıcının önbellek davranışını kontrol eder ("public", "private", "no-cache" gibi).
- .Charset: Sayfanın karakter setini belirler ("windows-1254", "ISO-8859-1" vb.).
- .ContentType: ASP sayfasının içerik tipini (HTML, GIF, JPEG, metin vb.) tanımlar. Örn: "text/html", "image/gif".
- .IsClientConnected: Kullanıcının tarayıcısının sunucuya hala bağlı olup olmadığını kontrol eder.
- .Status: HTTP durum kodunu ve isteğe bağlı bir mesajı ayarlar. Örn: "404 Not Found".
- .AddHeader: HTTP yanıt başlığına özel bir başlık ekler.
- .AppendToLog: IIS günlük dosyasına özel bir girdi ekler.
- .BinaryWrite: İstemciye ikili veri (örneğin resim dosyaları) gönderir.
- .Flush: Response.Buffer True iken, tamponlanan veriyi istemciye hemen gönderir ve betiğin çalışmaya devam etmesini sağlar.
Request Nesnesi (Kullanıcıdan Bilgi Alma)
Request nesnesi, istemciden (tarayıcıdan) sunucuya gelen bilgileri almak için kullanılır. Form verileri, URL parametreleri ve çerezler gibi bilgiler bu nesne aracılığıyla elde edilir.
- .QueryString: HTTP GET metodu ile gönderilen form verilerini veya URL'deki sorgu dizesi parametrelerini alır.
<% Response.Write Request.QueryString("id") %>
- .Form: HTTP POST metodu ile gönderilen form verilerini alır.
<% Response.Write Request.Form("userName") %>
- .Cookies: Tarayıcıdan gelen çerez verilerini okur.
- .ServerVariables: Sunucu ve istemci hakkında çeşitli bilgilere erişim sağlar (HTTP başlıkları, IP adresleri vb.).
<% Response.Write Request.ServerVariables("REMOTE_ADDR") 'Kullanıcının IP adresi %> <% Response.Write Request.ServerVariables("HTTP_REFERER") 'Geldiği sayfa %> <% Response.Write Request.ServerVariables("HTTP_USER_AGENT") 'Tarayıcı bilgisi %>
- .TotalBytes: Request ile gelen toplam veri miktarını byte cinsinden verir.
- .BinaryRead: HTTP isteği gövdesinden ikili veriyi okur.
- Diğer önemli ServerVariables: "ALL_HTTP", "APPL_PHYSICAL_PATH", "AUTH_USER", "LOCAL_ADDR", "LOGON_USER", "REQUEST_METHOD", "SCRIPT_NAME", "SERVER_NAME", "URL" gibi.
Server Nesnesi (Sunucu Üzerindeki Yardımcı Fonksiyonlar)
Server nesnesi, sunucu üzerinde çeşitli yardımcı işlevleri yerine getirmek için kullanılır. Bu işlevler genellikle dosya sistemine erişim, nesne oluşturma ve betik kontrolü ile ilgilidir.
- .Execute: Başka bir ASP betiğini mevcut betik içinde çalıştırır.
- .Transfer: Kullanıcıyı belirtilen bir ASP sayfasına yönlendirir ancak tarayıcıya yeni bir URL göndermez (sunucu tarafında yönlendirme).
- .ScriptTimeout: Bir betiğin çalışabileceği maksimum süreyi saniye cinsinden ayarlar.
- .CreateObject: Sunucu üzerinde yeni bir COM nesnesi oluşturur. Bu, veritabanı bağlantıları, dosya işlemleri veya e-posta gönderme gibi pek çok işlev için kullanılır.
<% Set objFS = Server.CreateObject("Scripting.FileSystemObject") %>
- .MapPath: Sanal bir yolu (örneğin "/images/logo.gif") sunucudaki fiziksel dosya yoluna dönüştürür.
<% physicalPath = Server.MapPath("/uploads/document.pdf") %>
Session Nesnesi (Oturum Yönetimi)
Session nesnesi, bir kullanıcının web sitesiyle olan oturumu boyunca bilgilerini saklamak için kullanılır. Her kullanıcı için ayrı bir Session nesnesi oluşturulur.
- .ScriptTimeout: Oturumun aktif kalma süresini saniye cinsinden ayarlar (varsayılan 20 dakika).
- .SessionID: Oturuma özel benzersiz bir kimlik (ID) verir.
- .Abandon: Mevcut oturumu sonlandırır ve oturumdaki tüm bilgileri siler.
- .Contents: Oturumda saklanan tüm öğeleri içerir.
- .Contents.Remove / .Contents.RemoveAll: Oturumdaki belirli bir öğeyi veya tüm öğeleri siler.
- Session_OnStart / Session_OnEnd: Oturum başladığında veya sona erdiğinde otomatik olarak çalışan olaylardır (Global.asa dosyasında tanımlanır).
Application Nesnesi (Uygulama Genelinde Bilgi Paylaşımı)
Application nesnesi, tüm kullanıcılar arasında paylaşılan, uygulama genelindeki bilgileri saklamak için kullanılır. Bir web uygulamasının ömrü boyunca tek bir Application nesnesi bulunur.
- .Contents: Uygulama düzeyinde saklanan tüm öğeleri içerir.
- .Lock / .Unlock: Application nesnesine aynı anda birden fazla kullanıcının erişmesini önlemek için kullanılır (veri bütünlüğünü sağlamak için kritik).
- Application_OnStart / Application_OnEnd: Web uygulaması başladığında veya sona erdiğinde otomatik olarak çalışan olaylardır (Global.asa dosyasında tanımlanır).
Diğer Önemli Bileşen Nesneler
ASP'nin gücü, dahili nesnelerin yanı sıra, harici COM (Component Object Model) bileşenleri aracılığıyla genişletilebilmesinden gelir. Bu bileşenler, dosya işlemleri, veritabanı erişimi, e-posta gönderme, XML işlemleri gibi çeşitli gelişmiş işlevleri yerine getirmemizi sağlar.
ADODB (ActiveX Data Objects) Nesneleri (Veritabanı İşlemleri)
Veritabanı bağlantısı ve sorgulama için kullanılır.
- ADODB.Connection: Veritabanına bağlantı kurmak ve sorguları çalıştırmak için kullanılır.
<% Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "Provider=SQLOLEDB;Data Source=server;Initial Catalog=database;User ID=user;Password=password" objConn.Execute "INSERT INTO Users (Name) VALUES ('Webkolog')" objConn.Close Set objConn = Nothing %>
- ADODB.Recordset: Veritabanından dönen kayıtları tutmak ve üzerinde işlem yapmak için kullanılır.
- ADODB.Command: Parametreli sorguları daha verimli çalıştırmak için kullanılır.
- ADODB.Stream: İkili veya metin verilerini okuma/yazma işlemleri için kullanılır.
Scripting.FileSystemObject (Dosya ve Klasör İşlemleri)
Sunucu üzerindeki dosya ve klasörlerle çalışmak için kullanılır.
- .CreateTextFile: Yeni bir metin dosyası oluşturur.
- .OpenTextFile: Mevcut bir metin dosyasını açar.
- .DeleteFile / .DeleteFolder: Dosya veya klasör siler.
- .CopyFile / .CopyFolder: Dosya veya klasör kopyalar.
- .MoveFile / .MoveFolder: Dosya veya klasör taşır.
- .FileExists / .FolderExists: Dosya veya klasörün varlığını kontrol eder.
- .GetFileName / .GetParentFolderName: Dosya veya klasör adı/yolu bilgilerini alır.
<%
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(Server.MapPath("test.txt")) Then
Response.Write "test.txt dosyası mevcut."
Else
Set objFile = objFSO.CreateTextFile(Server.MapPath("test.txt"), True)
objFile.Write "Bu bir test yazısıdır."
objFile.Close
Response.Write "test.txt dosyası oluşturuldu."
End If
Set objFSO = Nothing
%>
Persits.Upload (Dosya Yükleme)
Kullanıcıların sunucuya dosya yüklemesini sağlayan popüler bir bileşendir.
- .Save: Yüklenen dosyayı sunucuya kaydeder.
- .FileName, .Size, .ContentType gibi özelliklerle yüklenen dosyanın bilgilerine erişilir.
Persits.MailSender / CDONTS.NewMail / Jmail.Message / SMTPSvg.Mailer (E-posta Gönderme)
ASP'den e-posta göndermek için kullanılan çeşitli COM bileşenleridir. Her birinin kendine özgü kullanım şekli ve özellikleri vardır.
- .Host / .MailServer: SMTP sunucu adresini belirtir.
- .From / .FromMail: Gönderen e-posta adresini belirtir.
- .ToMail / .AddRecipient: Alıcı e-posta adresini/adreslerini belirtir.
- .Subject: E-postanın konusunu belirler.
- .Body / .HTMLBody: E-postanın içeriğini belirler (HTML veya düz metin).
- .Send: E-postayı gönderir.
- .blnHTMLMail: E-postanın HTML formatında olup olmadığını ayarlar (True/False).
<%
Set objMail = Server.CreateObject("Persits.MailSender")
objMail.Host = "smtp.mailsunucunuz.com"
objMail.From = "[email protected]"
objMail.AddRecipient "[email protected]"
objMail.Subject = "Webkolog'dan Yeni Makale"
objMail.Body = "Webkolog blogunda yeni bir makale yayınlandı!"
objMail.Send
Set objMail = Nothing
%>
Microsoft.XMLHTTP / MSXML.DOMDocument (XML ve HTTP İstekleri)
XML verilerini işlemek ve HTTP istekleri göndermek için kullanılır.
- Microsoft.XMLHTTP: Web sayfalarına sunucu tarafında HTTP istekleri göndermenizi (AJAX benzeri) sağlar.
- MSXML.DOMDocument: XML belgelerini ayrıştırmak, oluşturmak ve üzerinde işlem yapmak için kullanılır.
AspError Nesnesi (Hata Yönetimi)
Bir hata oluştuğunda bu nesneye erişerek hata bilgilerini alabiliriz.
- .Description: Hatanın açıklamasını verir.
- .Line / .Column: Hatanın oluştuğu satır ve sütun numarasını verir.
- .File: Hatanın oluştuğu dosya yolunu verir.
- .Number: Hatanın numarası.
Gördüğünüz gibi, ASP nesneleri bize web uygulamalarımızı oluşturmak için inanılmaz bir güç ve esneklik sunuyor. Dahili nesnelerle temel etkileşimleri sağlarken, COM bileşenleri sayesinde neredeyse her türlü ihtiyaca yönelik özel işlevleri entegre edebiliyoruz.
Bu nesneleri iyi anlamak ve doğru kullanmak, ASP ile başarılı projeler geliştirmenin temelidir. Umarım bu makale, nesneler dünyasına girişiniz için faydalı olmuştur.
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder