İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır

REQUEST ve RESPONSE NESNELERİ

Request ve Responce

Bu başlık altında her iki objeyi daha detaylı olarak inceleyeceğiz. Bu objeler browser ve web server arasındaki iletişiminin sağlanması için kullanılırlar. Şimdi bu detaylara ayrıntılı olarak bakalım.

Write Metodu:

Response objesinin en sık kullanılan metodudur. Write metodu ASP sayfamızda bilgileri görüntülemek için kullanılır. Genel kullanımı; Response.Write [değer] şeklindedir.

<%
Yazılacak_text="Bugün günlerden ne?"
Response.Write yazılacak_text
%>

Şeklinde bir kullanım browser ekranına "Bugün günlerden ne?" diye bir mesaj yazar. Asp script bildiğiniz gibi <%........%> script sınırlayıcıları arasına yazılır. Bu kullanımın iki farklı şekli vardır. Eğer html tagları içerisinde herhangi bir değişkenin taşıdığı bir değeri görüntülemek istiyorsak <%=değer%> daha uygun bir kullanım olacaktır. Fakat bu kullanımın dezavantajı sadece 1 satırlık bir kodlamaya izin vermesidir. Yani;

<%=değer
Response.Write "Bu kullanım hata verir."
%>

Şeklinde bir kullanım yanlıştır. Dolayısıyla birden fazla satır ASP kodlaması gereken durumlarda ASP kodunu <%.......%> satırları arasına yazmak daha uygun olacaktır. Aşağıdaki örneği inceleyelim:

<%
text1= "Merhaba"
text2= "Yeni ASP programcıları"
Response.write text1 & text2
%>

Response.write text1 & text2 kullanımı iki farklı değişken içerisinde tutulan stringleri birleştirerek tek satırda yazmak için kullanılmıştır. "&&" işareti iki değişkeni birleştirmek için kullanılır. Response.write bir işlemin sonucu ekrana yazmak içinde kullanılabilir. Aşağıdaki örneği inceleyelim;

<%
sayı1= 24
sayı2= 8
Response.write sayı1/sayı2
%>

Şeklinde bir kullanım ekrana 3 yazılmasına neden olur. Çünkü sayı1 /sayı2 yani 24/8=3 dür, ve response.write 3 şeklinde bir kullanıma eşdeğerdir. Bir formdan bize iletilen bilgileri Request objesini kullanarak alabilir ve gene bu bilgiyi Response objesinin write metodunu kullanarak ekrana yazabiliriz.

<%
Response.Write (Request.QveryString("text1"))
%>

şeklinde bir kullanım bize istek gönderen formdaki text1 adlı değişkeninin değerini ekrana yazar.

Request Objesi:

Request objesi bilgi toplamak amaçlı kullanılan bir objedir. Detaylı olarak anlatılacak olmasına rağmen bu obje içersinde (koleksiyon) yer alan metotlara kısaca bakalım.

QueryString Koleksiyonu

Querystring server a iletilen bilgi kümeciği metotlarından biridir. Bu iletişim browser ın adres hanesinde yer alan dosya adına "?" ve "&" işaretleri vasıtası ile bilgilerin eklenmesi suretiyle gerçekleşir. Genel kullanımı

:filename.asp?kullanici=Mehmet

şeklindedir.Eğer daha fazla bilgi bir anda gönderilmek isteniyor ise bu "&" işareti kullanılarak;

filename.asp?kullanici=Mehmet &email=mehmet@dogus.edu.tr

şeklinde gerçekleştirilir.

"&" işareti bilgilerin birbirinden ayrılmasını sağlar. Kullanıcı adı ve soyadını alan ve bunları Querystring metodu ile ilgili forma gönderecek bir form dizayn edelim. İlgili Html formu aşağıdaki gibi olmalıdır;

< form name=login Action=Querystring.asp metod="GET">
Lütfen Adınızı Giriniz: < input type="text" name"adi" > <BR>
Lütfen SoyadınızıGiriniz:< input type="text" name="soyadi" > <BR>
< input type="submit" value="login" >
< /Form >

Yukarıdaki kod adı soyadı alanları bulunan bir form elde etmemizi sağlar.

Bu Html kodu içerisinde yer alan input submit butonu < form action="Querystring.asp" metod= "GET" > bu kutucuklara girilen bilgileri action kısmında belirtilen Querystring.asp'ye "GET"metodu kullanılarak gönderilir. (Yani bilgiler browser' ın adres hanesi kullanılarak iletilir.) Bu bilgilere ulaşmak içinse Request' in Querystring metodu aşağıdaki şekilde kullanılır.

Request. Querystring ("istek gönderen formdaki Html elemanının adı") bu genel kullanıma göre eğer biz "..." içerisine o formda yer alan bir kontrolün adını koyar, istek o input alanına girilmiş veriye ulaşırız, yani Request. Querystring ("adi") şeklinde bir kullanım "adi" adlı text box'a girilen veriye; Request. Querystring ("soyadi")şeklinde bir kullanım ise "soyadi" adı verilen textbox' a girilen veriye ulaşmamızı sağlar. Eğer Response nesnesinin Write metodunu kullanırsak login formuna girilen verileri

<%
Response.write Request. Querystring ("adi") & "<BR>" 
Response.Write Request. Querystring ("soyadi")
%>

şeklinde ekrana yazabiliriz. Dikkat edecek olursanız "&" işareti "<BR>" Html etiketini formdan gelen adi verisine eklemek için kullanılmıştır. Bu da bize 1 satır aşağıya geçmemizi sağlar (satır beslemesi) sağlar. Koleksiyon birden fazla değer ve değişkeni içerisinde bulunduran bir grup olarak tanımlanabilir. Eğer Querystring metodu kullanılarak gönderilen değişken (kontrol sayısı) birden fazla ise bu bir koleksiyon oluşturuyor anlamı taşır. Eğer daha önceki notlarımızı hatırlayacak olursak koleksiyon oluşturan bilgi grupları veya dizin elemanları için kullandığımız özel bir döngümüz vardı. (FOR EACH....NEXT) bu döngüyü Querystring için uygulanacak olursak ;

<%
For Each eleman in Request. Querystring
Response.Write eleman & "......" & Request. Querystring(eleman) 
Next
%>

şeklinde bir döngü ile bize Querystring ie gönderilen tüm elemanları ve bu elemanların değerlerini ekrana basabiliriz. Yukarıdaki döngü Request. Querystring ile oluşturulan her eleman için döngüyü tekrarlar.

Request. Querystring ("kontrol").count özelliği gönderilen elemanları saymak için kullanılır. Eğer bu sayı"o" 'a eşit ise herhangi bir bilgi gönderilmemiş demektir.

Şimdi değişik konularda başlıkların yer aldığı ve bu başlıklar arasından kullanıcının yaptığı seçimlere bağlı olarak bu konularda kendisine bilgi göndereceği mesajını ekrana basan bir ASP uygulaması oluşturalım. Kullanıcının seçim yapabileceği selectbox'ın yer aldığı Html formunu dizayn edelim:

< HTML >
< HEAD >
< TITLE > kitap başlıkları < /TITLE >
< /HEAD >
< BODV >
Aşağıdaki konu başlıklarından ilgilendiklerinizi seçiniz.
< FORM ACTION="responseQuerystring.asp" METHOD="GET" >
< Select size=3 name="Konular" MULTIPLE >
< OPTION > Bilgisayar < /OPTION >
< OPTION > Hikaye < /OPTION >
< OPTION > Şiir < /OPTION >
< OPTION > Roman < /OPTION >
< /select >
< input type= "submit" value= "Gönder >
< /FORM >
< /BODY >
< /HTML >

Şimdi bu formdan gönderilen verileri işleyen ASP kodunu oluşturalım:

<%
if Request. Querystring("Konular").count= 0
	then Response.write "Herhangi bir konu seçmediniz."
ELSE
	Response.write size seçmiş olduğunuz "&"< BR >
	Response.Write Request. Querystring ("konular")
	Response.write "hakkında broşür yollayacağız. Teşekkürler" 
END IF
%>

Kod Nasıl Çalışır:

İlk form basit bir html formudur. Selectbox butonun oluşturulması için kullanılmıştır. <select....multiple> yer alan multiple seçeneği CTRL tuşuna basılarak birden fazla seçim yapılmasına olanak tanır. ASP içersinde yer alan Request.Querystring("konular").count=0 şartı eğer hiçbir konu başlığı seçilmemiş ise devreye girer. Eğer kullanıcı formda seçim yapmış ise ELSE şartı devreye girer ve seçilen konu başlıkları ekrana yazılır.

FORM KOLEKSİYONU

Eğer form içerisinde gönderilen bilgiler POST metodu kullanılarak gönderilmiş ise bu bilgiler FORM koleksiyonu içerisinde yer alır. Bu bilgiler request .FORM kullanarak kontrol edilebilirler. Genel kullanımı:

Request. Form ("kontrol_adi")

şeklindedir.

Form nesnesi içerisinde textbox dışında aşağıda ki elemanlarda bulunabilir. Bunlar:

Tüm bu elemanların oluşturulması ile ilgili bilgileri herhangi bir HTMl öğreten siteden öğrenebilirsiniz. Formun POST metodu ile gönderilen bilgiler HTML veri akışı içerisinde kullanıcıya gönderilir, bilginin iletilmesi için browser ın adres hanesi kullanılmaz. Bir önceki örneği form koleksiyonu ile oluşturmak isteseydik ;

Request.Form ("Konular") 

şeklinde bir değişiklik yapmamız yeterli olacaktı.

ServerVariables Koleksiyonu

Servervariables koleksiyonu Http header bilgilerini bulundurmak suretiyle server ve gönderilen her istek ile ilgili bilgilere ulaşmamızı sağlar. Tüm ServerVariables ı bir tablo içersinde ekrana basan bir ASP kodu oluşturalım

<%
<table border=1>
<TR>
<TD><B>Değişken Adı</B></TD>
<TD><B>Değeri</B></TD>
</TR>
For Each X in Request. Servervariables
Response.Write "<TR><TD>" & X & "</TD></TR>"
İf Request. Servervariables (X)="" then
Response.Write "&nbsp;"
Else
Response.Write Request. ServerVariables(X)
End if
Response.Write "</TD></TR>"
Next
%>
</Table>

ServerVariableslar gerektiği anlarda en büyük yardımcımız olacaktır. Çünkü ServerVariables' ı kullanarak server da çalışan IIS versiyonunda tutunda, bağlanan Client ın IP adresi gibi her türlü bilgilere ulaşabiliriz

CLIENTCERTIFICATE KOLEKSİYONU

Web browser, web server ile Secure (SSL) bağlantısı üzerinden bağlantı kurmak istediğinde bu işlem dijital sertifikalar üzerinden sağlar. Bu dijital sertifika bağlantı yapılan web server ve organizasyon hakkında gerekli bilgileri taşır bu CA Certificate Authority olarak bilinir. Bu işlem bilgilerin güvenli bir bağlantı üzerinden aktarılmasını sağlar bilgi aktarımı SSL, Secure Sockets Layer protokolü üzerinden gerçekleştirilir. SSL, Http protokolünün daha güvenli hale getirilmiş bir varyasyonudur. En son versiyonu SSL 3.0/PCT 1 dir. (PCT: Private Communication Technology) Clientcertificate de bir koleksiyon meydana getirir ve bu koleksiyona:

<%

For Each Key in Request. ClientCertificate
Response.Write ( Key & " : " & Request.ClientCertificate (key) & "<BR>")
Next

%> 

şeklinde ulaşabilirsiniz

Bu koleksiyonda yer elemana ise ; Request. ClientCertificate (Key) şeklinde ulaşabilirsiniz. İlerleyen bölümlerde ClientCertificate ile ilgili daha ayrıntılı bilgilere ve örneklere yer verilecektir.

Request Nesnesinin Özellikleri ve Metotları

Request nesnesi koleksiyonun dışında da bazı özel özellik ve metotlara sahiptir. Bu özelliklere ve metotlara göz atalım .

TotalBytes Özelliği

Bu özellik browser tarafından gönderilen bilginin toplam olarak kaç byte olduğunu bulmak için kullanılır. Aşağıda ki kod gönderilen bilginin kaç byte olduğunu ekrana yazar

<%

Response.Write "Göndermiş olduğunuz Bilgi:"
Response.Write Request.TotalBytes & "dır"

%>

BinaryRead Metodu

BinaryRead metodu POST ile server a gönderilen bilgilerin alınması için kullanılır. Form ve querystring metodlarında farklı olarak text dışında veri gönderildiğinde bu metod bu verilerin okunması için kullanılır. Daha önce anlatılan TotalBytes özelliği bu metoda parametre olarak sunulur. Aşağıda verilen kodu inceleyelim

<%
Dim Dosya_boyutu, Oku
	Dosya_boyutu=Request.Totalbytes
	Oku=Request.BinaryRead(Dosya_boyutu)
	For i= 1 to Dosya_boyutu
		Response.Write MidB (oku, i, 1)
	Next
%>

MidB , Mid fonksiyonuna benzeyen fakat düzensiz oluşturulmuş bilgileri oluşturulmuş bilgileri okumak için kullanılan bir text fonksiyonudur. (Aslında N boyutlu dizi haline getirilmiş veriler demek daha doğru olur. ) Bu fonksiyon döngü içerisinde her defasında bir karakter okunur ve bu karakter ekrana yazılır.

RESPONSE NESNESİ VE ÖZELLİKLERİ

Buffer

Buffer özelliği response ile oluşturulan Html Data akışının html dosya oluşturulması tamamlandıktan sonra veya her satır iletildiğinde gösterilmesi ile ilgili bir özelliktir. Default değeri "on" dur bu değere false u set edecek olursak ;

Response.Buffer=False

şeklinde bu işlem yapılabilir

Clear:

Response.Clear metodu buffer (tampon) edilmiş tüm html bilgisinin silinmesi için kullanılır. Kullanımı: Response.clear şeklindedir. Fakat unutulmaması gereken nokta eğer Response.Buffer= false olarak set edilmiş ise Run-time (çalışma zamanı ) hataya neden olur.

End:

End metodu web server işlemi durdurmasını ve Response.End noktasına kadar oluşturulmuş Html datanın gönderilmesini sağlar. Kullanımı :

Response.End 

şeklindedir

Expires:

Expires özelliği dakika cinsinden sayfanın browser tarafından hafızada ne kadar tutulacağı ile ilgili bilgiyi set etmek için kuyllanılır. Eğer kullanıcı aynı sayfaya Response.Expires ile belirlenen zamandan daha önce geri dönerse sayfanın hafızadaki versiyonu kullanıcıya gösterilir. Kullanımı :

<% Response.Expires=dakika %> 

Eğer bu değere "0" set edilirse ( Response.Expires=0 ) sayfaya her geri dönüldüğünde sayfa yeniden yüklenir

ExpiresAbsolute:

ExpiresAbsolute tıpkı Expire özelliğibne benzer olarak fakat belirtilen sürenin dakika değil tarih veya saat olacak şekilde set edilmesi suretiyle sayfanın geçerlilik süresinin belirlenmesi için kullanılır. Kullanımı :

<% Response.ExpiresAbsolute=#tarih# %> 

şeklindedir

Redirect:

Kullanıcıyı bir Asp sayfasından diğerine yönlendirmek için kullanılan bir metoddur. Bu metodun yerini alan 2 yeni metod olan server.transfer ve server.Execute metodlarına daha sonra ayrıntılı olarak göz atacağız. Redirect ile ilgili olarak bilmemiz gereken bazı önemli noktalar vardır. Eğer http header client a gönderilmil ise Response.redirect hataya neden oluyur . bu hatanın önüne geçmek için response.Buffer özelliğini true ya set etmek sureiyle ve herhangi bir noktada response.clear ı kullanarak response.Redirect in hata vermesini engelleyebiliriz. Response.Redirect'in genek kullanımı:

Response.Redirect("yönlendirilecek_sayfa") 

şeklindir. Veya

Response.Redirect("http://www.godoro.com" ) 

şeklinde gidilecek url tam olarakda verilebilir.

Server. Execute ve Server.Transfer

Server. Execute ve Server.Transfer bir ASP sayfası içersinden başka bir sayfanın çalıştırılması veya o sayfanın içeriğinin aynı sayfa içerisinde gösterilmesi için kullanılır. Aralarında ki tek fark ise Server. Execute kullanıldığında hedef sayfa çalıştırıldıktan sonra orijinal sayfa nın işletilmesine devam edilmesine rağmen Server.Transfer kullanıldığında orijinal sayfaya geri dönülmez. Page1 , Page2 veMainpage adı altında 3 sayfamın olduğunu düşünün

İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır