AJAX ARAŞTIMA RAPORU

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "AJAX ARAŞTIMA RAPORU"

Transkript

1 HACETTEPE ÜNİVESİTESİ AJAX ARAŞTIMA RAPORU 2007, Ankara

2 HAZIRLAYANLAR Grup Numara İsim - Soyisim E-Posta Tarih Mehmet İnal Onur Atamer Vahi Arslan Salim ŞAHİN [email protected] Kenan DAĞLI [email protected]

3 İNDEX I. Ajax nedir?... 4 II. Ajax aşağıdaki teknolojilerin bir araya getirilmesiyle oluşmuştur... 5 III. Ajax'ı kimler kullanıyor?... 5 IV. Neden Ajax?... 5 a. Ajax neden gerekli görüldü?... 6 b. Ajax ne işe yarar?... 6 V. Ajax'ın kullanımı için en iyi durumlar neler olabilir?... 6 VI. AJAX ın Çalışma Mantığı... 7 VII. Destekleyen Tarayıcılar (Browser) VIII. AJAX ın Avantajları IX. AJAX ın Dezavantajları X. AJAX ın Hızlı Yayılmasının Nedenleri XI. Yanlışlar, Hatalar ve Dikkat Edilmesi Gerekenler XII. AJAX kodlamaya giriş a. XMLHttpRequest nesnesine giriş b. Nesneyi yaratmak c. Hata ayıklama d. XMLHttpRequest ile istek gönderme i. Sunucu (server) URL sini düzenlemek ii. Request nesnesi açma iii. Request gönderme iv. HTTP hazır olma durumlarının ayrıntıları v. Gizli hazır olma durumları vi. Devam eden isteğin hazır olma durumunun görüntülenmesi vii. Tarayıcı tutarsızlıkları viii. Güvenli verilerin alınması ix. HTTP durum kodlarına yakından bakış x. Hatalar SONUÇ TUTORİAL örnek uygulama Uygulama ortamı Uygulamanın tanımı Uygulamanın gerçekleştirimi İndex.jsp Login.java KAYNAKLAR... 42

4 I. Ajax nedir? Ajax, web uygulamaları için yeni bir yaklaşımdır. Asynchronous JavaScript and XML'in kısaltması olan Ajax; bu yöntemi kullanan topluluklar tarafından verilmiş isimdir. Ajax: XHTML+CSS, XMLHTTPRequest, DOM (Document Object Model), JavaScript teknolojilerini kullanarak, klasik web uygulamalarına karşı bir alternatif olarak sunuluyor. Aslında ajax : bir dil kütüphane bir program veya bir geliştirme ortamı indirilebilir bir şey değildir. Ajax : bir yaklaşımdır. bir kısaltmadır. bir web teknolojileri ve standartları ortak kullanımıdır. etkileşimli zengin web arayüzleri oluşturulmasına imkan sağlar. web geliştirme tekniği ve konseptidir. * Fakat günümüzde AJAX tekniğinin uygulama içinde kullanımını kolaylaştıracak hatta yaygınlaştıracak çatılar (framework) ortaya çıkmıştır. Bunların tümünün sadece javascript kodu yazmayı gereksiz kılan javascript kodlarının yaptığı işleri arkaplanda JSP kodunun içine gömülmüş şekilde TAG kütüphaneleri ile gerçekleştirdiklerini bilmeliyiz. Bu makalenin amacı ise AJAX ı

5 bir konsept olarak sunup ilkelerini herhangi bir çatı kullanmadan olduğu gibi anlatmaktır. Bu çerçevede ne makalenin içinde ne de makalenin sonunda verilen örnek uygulamada herhangi bir framework kullanılmamıştır. Çünkü bizce AJAX tekniğini kavrayabilmiş, javascript yazımını benimsemiş bir web programcısı için mevcut çatılardan kendisi için en uygun olanı seçmesi ve kullanması daha doğru bir yöntemdir. II. Ajax aşağıdaki teknolojilerin bir araya getirilmesiyle oluşmuştur Javascript XHTML ve CSS'in ortak kullanımı Document Object Model kullanarak dinamik sayfa gösterimi ve interaktif kullanıcı arabirimi. XML ve XSLT kullanılarak veri alim/gönderimi ve manipulasyonu XMLHttpRequest kullanılarak yapılan asenkron veri alımı Ayrıca Adobe Flex Mxml, Adobe Flash, Open Lazlo gibi yeni teknolojilerde Ajaxa göz kırpmaktadır.) III. Ajax'ı kimler kullanıyor? Google, Ajax üzerine ciddi yatırım yapıyor. Son zamanlarda çıkan Google uygulamaları Ajax yaklaşımı ile yazılmış. Bunlar Gmail, Orkut, Google Maps, Google Groups, Google Suggest ajax uygulamalarıdır. Google dışında Flickr ve Amazon'un A9.com projelerini sayabiliriz. Google ajax ın en büyük destekçilerinden birisidir. IV. Neden Ajax? Doğru kullanıldığı zaman sunucu (server) tabanlı teknolojilerden çok daha hızlı kullanıcının isteklerine cevap verebilen daha interaktif çözümler, bu yeni yaklaşım sayesinde üretilebilmektedir. Bunun yanında klasik web uygulamalarının sade kullanıcı arayüzü yerine daha canlı ve yetenekli arayüzlerin oluşturulmasını mümkün kılar. Bu özellikleri ile Ajax web uygulamalarında en çok şikayet konusu olan yavaşlık ve arayüzün çirkin ya da masaüstü uygulamaları ile karşılaştırılacak olursa "kullanışsız" olması sorununa iyi

6 bir çözüm olarak durmaktadır. a. Ajax neden gerekli görüldü? Klasik web uygulamalarındaki kullanıcı ile uygulama arasındaki etkileşimi hatırlarsak: Kullanıcı web tarayıcısı aracılığıyla bir istekte bulunur, web uygulaması bu isteğe bir cevap (HTML) oluşturur. Bu esnada kullanıcı sayfanın yüklenmesini bekler. Ajax'da ise kullanıcı isteklerine daha kısa zamanda (neredeyse anında) cevap verilir. Sunucu (server) tabanlı web uygulamalarında sunucu (server) kullanıcı tarafından gönderilen isteklere her kullanıcı bir istek gönderdiğinde cevap vermek zorunda olduğundan, yazılımın cevap verme hızı, web sunucunun (server) hızıyla doğru orantılıydı. Web sunucunun (server) hızlı cevap veremediği zamanlarda da kullanıcının web uygulamalarından aldığı verim büyük oranlarda düşebiliyordu. İşte bu noktada giderilmesi gereken bir sorun vardı ve getirilen çözüm Ajaxtı. b. Ajax ne işe yarar? AJAX kullanımında tarayıcıyla (browser) web sunucu (server) arasındaki veri alışverişi dramatik oranda azaltır ve aynı zamanda da web sunucunun (server) işlem gücü bu tür işlemler için kullanılmamış olur. Ajaxın bu ozelliği çok sık karşılaştığımız bir soruna çözüm olmaktadır. AJAX sayesinde kullanılan web uygulamalarında sunucuya (server) form gönderme ve cevap bekleme kısmı tamamen ortadan kaldırılmıştır. Yukarıda anlatılanları günlük hayattan bir örnek Google Maps'teki yakınlaştırma (zoom) özelliği(sayfa yeniden yükleme (reload) gerektirmiyor), Google Suggest'te siz klavyenizle birşeyler girdikçe sayfayı yenilemeden (refresh) yeni önerilerin size sunulması ve bunun gibi bir çok örnek... V. Ajax'ın kullanımı için en iyi durumlar neler olabilir? Türkçe'sini özetlemek gerekirse ; Derecelendirme, oylama, evet/hayır Giriş alanlarında öneriler Form alanlarının gerçek zamanlı kontrolü Durum bilgisi Otomatik Güncelleme

7 Microlink - detayların tek tıkla erişilebilir olacağı durumlar Live form - bir alanı değiştirince, ilgili ek alanların çıkması Aktif Arama - her harf girişinde arama sonuçlarının gelmesi Verilerin sunulması Haritalar Veri filtreleme Chat (sohbet) VI. AJAX ın Çalışma Mantığı AJAX uygulamalarında temel çalışma mantığı ve işlem sırası aşağıdaki gibidir: Sayfada varolan işlemlerden biri tetiklenince, sayfada hazırda bekleyen javascript fonksiyonlarıyla xmlhttprequest nesnesi oluşturulur. Bu nesne arka planda gönderdiği bir http talebiyle, istenen işlem için sunucu tarafında bulunan ve sunucu tabanlı bir dille yazılmış ilgili dosyadan o işlemin yapılmasını talep eder ve bu dosyanın çıktısını alarak kullanıcı tarafında işlenmesi ve istenen şekilde sunulması için diğer bileşenlere aktarır. Bu işlem akışı sırasında, bir Ajax uygulamasını tetiklemek için HTML ve JS, XMLHTTPREQUEST nesnesini oluşturmak için JS, arkaplanda sunucuya asenkron (eşzamanlı olmayan/gerçek zamanlı) HTTP talebi göndermek için XMLHTTPREQUEST nesnesi, sunucu tarafında yapılması istenen işlem için PHP, ASP/.NET, JSP/JAVA vb. sunucu tabanlı bir dil, sunucu tarafında üretilen çıktıyı almak için gene XMLHTTPREQUEST nesnesi, elde edilen bu çıktıyı işlemek ve sayfada istenen alana yerleştirmek için DOM, DHTML ve JS, işlenmiş çıktının renk, çizgi vb. şekilsel sunumu için de (X)HTML ve CSS kullanılmaktadır.

8 Şekil 1: Geleneksel web uygulamaları ile AJAX yaklaşımının karşılaştırılması

9 Şekil 2: Klasik web uygulamalarındaki senkron etkileşimle AJAX yaklaşımındaki asenkron etkileşim karşılaştırması

10 VII. Destekleyen Tarayıcılar (Browser) Bir tarayıcı (browser) AJAX uygulamalarını desteklemesi için en temel şart javascript destekliyor olmasıdır. Bundan sonra ikinci şart ise XMLHTTPREQUEST nesnesini destekliyor olmasıdır. Şuanda AJAX uygulamaları belli başlı tüm tarayıcılarda (browser) kullanılabilmektedir. Bir liste olarak vermek gerekirse; Mozilla Firefox 1.0 ve üstü, Netscape 7.1 ve üstü, Konqueror, Microsoft Internet Explorer 4.0 ve üstü, Opera 7.6 ve üstü, Apple Safari 1.2 ve üstü AJAX uygulamalarını çalıştırabilecek tarayıcılardır (browser). VIII. AJAX ın Avantajları Sayfalar tekrar tekrar yüklenmediği için ve sadece gerekli veri alışverişi yapıldığından hem kullanıcı/ziyaretçi için hem de site sunucusu için yüksek miktarda trafik/bandwith tasarrufu sağlar. Talepler kullanıcı farkında olmadan arka planda gönderilip alındığından ve hızlı olduğundan (sadece gerekli veriler gidip gelmekte), kullanıcıya gerçek bir masaüstü yazılımın yaşattığı etkileşimli güzel deneyimleri web üzerinde yaşatmak mümkün olabilmektedir. Yani kullanıcılar masaüstü sorunlarından uzak ancak masaüstü deneyimlere benzer etkileşimli deneyimleriyaşayabilir hale gelmektedirler. Geliştiricilerin Ajax yaklaşımını öğrenmesi ve bu konsepte adapte olması çok kolay ve hızlı şekilde gerçekleşmektedir. Hem yabancı hem yerli web çalışanları ve meraklıları arasında oldukça hızlı şekilde yayılmaktadır. Daha yüksek ve gerçek zamanlı etkileşim sunmakta, daha az kaynak tüketmekte ve uygulama zamanı olarak çok daha az zaman almaktadır.

11 IFRAME ve POPUP pencerelerin Ajax yaklaşımını kullanan uygulamalarda ortadan kalkmasına ve dolayısıyla azalmasına neden olmuştur. DOM, XHTML, JS benzeri teknolojilerin ve standartların yayılmasına ve gelişmesine de katkıda bulunmaktadır. Güvenlik nedeniyle güvenilmeyen kullanıcı tabanlı js denetimleri yerine sunucu tabanlı denetimler hızlıca ve basitçe sayfa yenilenmeden ve böylece kullanıcıya zaman kaybı yaşatmadan yapılabilmektedir. IX. AJAX ın Dezavantajları Tarayıcılar (browser) daha yüksek miktarlarda işlemci ve bellek ihtiyacı duymaktadır. AJAX, web sayfalarında kullanımına oldukça alıştığımız ve bir kullanılabilirlik standardı kabul edilen ve olmazsa olmaz şeklinde tabir edilen tarayıcı (browser) fonksiyonlarından durdur, geri ve ileri (Stop/Back/Forward) butonlarını kullanılamaz hale getirmektedir. Bağlantıların ve sayfa içeriğinin dinamik ve eşzamanlı üretilmesi aynı zamanda bu site içeriklerinin arama motorları tarafından indexlenmemesine neden olmaktadır. Kullanılabilirlik ve erişilebilirlik kurallarına ve standartlarına göre, yapılan uygulamanın hazırlandığı teknolojilerin varolmadığı tarayıcı (browser) türlerinde veya özelliklerinde çalıştırılabilmesi için uyumluluk çalışmaları yapılması gerekmektedir Bazı durumlarda düzgün bir statik sayfa gibi çıktı alamama ve çıktı sorunları yaşatabilmektedir.

12 X. AJAX ın Hızlı Yayılmasının Nedenleri AJAX ın bilinen ve kullanılmakta olan teknolojilerin beraber kullanımından Kaynak kodlu olarak hazırlanan kod kütüphanelerinin artması ve gelişmesi Google ın Gmail, Google Suggest ve Google Maps gibi yeni web hizmetlerinde bu teknolojiyi oldukça sağlam ve neredeyse masaüstü deneyimlerle yarışacak kadar etkileşimli ve kullanıcı dostu bir şekilde kullanması Yahoo nun satın aldığı Flickr ve benzeri çok kullanıcılı siteler de AJAX ın deneyimini kullanıcılarına yaşatması Tüm belli başlı tarayıcıların (browser) standartlara uygun şekilde üretilmesi ve AJAX ta kullanılan teknolojileri ve standartları tam olarak destekliyor olması XI. Yanlışlar, Hatalar ve Dikkat Edilmesi Gerekenler Ajaxı sadece kullanmış olmak için kullanmak veya kendimizi bir tatmin aracı olarak kullanmak yapılabilecek en büyük yanlışlardandır. Projelerimizde AJAX kullanmayı düşünüyorsak AJAX ın kullanılacağı yerlere gerçekten uygun olup olmadığını ve kullanıcılara avantajlarını sunacağından emin olmamız gerekiyor. Kullanılan AJAX uygulamaları dezavantaj sunuyorsa ve kullanıcılara kötü tecrübe yaşatıyorsa AJAX kullanmak bize sadece zarar getirecektir. Kullanıcıların gelenekselleşmiş alışkanlıklarını gözardı etmek yapılacak büyük hatalardan bir başkası olacaktır. Kullanıcıların çok büyük çoğunluğunun çok yoğun ve sık kullandığı İLERİ, GERİ, DURDUR butonları AJAX uygulamalarında arka planda giden ve gelen HTTP talepleri nedeniyle işlevselligini yitirmekte ve örnek olarak geri butonuna basıldığında sayfanın bir önceki adımına değil ilk aşamasına ulaşılmaktadır. Şuanda internet ortamında bu sorunlara çözüm sunan javascript kütüphaneleri ortaya çıkmıştır. Bu sorunların çözülmeden uygulamanın kullanıma sunulması bilin ki ziyaretçilerinizde antipati oluşturacaktır. Bunların yanısıra, print, send to friend, ve bookmark gibi fonksiyonları ve diğer yardımcı uygulamalar için de çözüm üretmeyi unutmamak gerekiyor.

13 Sayfa içerikleri AJAX ile çekiliyor ve dinamik olarak sunuluyorsa mutlaka permalink denilen sabit bağlantılarla kullanıcıların bu sayfaları bookmarklarına ekleyebilmeleri ve arama motorlarının da botlarının o sayfalara ulaşabilmesi sağlanmalıdır. Bu gereklilik, dışarıya kapalı, e-ticaret siteleri/alışveriş aşamaları için, anlık ve sürekli değişen türde içerik sağlayan sayfalarla beraber arama botlarınca taranması istenmeyen bölümler için geçerli olmayabilir. Geribildirimlerde bulunmamak: AJAX ile yaptırdığınız işlemler konusunda kullanıcıya bir bilgi veya işaret vermemek bir başka uygulama yanlışıdır. Örnek olarak il seçilince ilçe kutusunun içeriğini AJAX yöntemiyle getiriyorsak, il seçildiğinde mutlaka Lütfen bekleyiniz! İlçeler çekiliyor vb. bir mesaj vermemiz gerekmektedir. Eğer uygulamalarınız için yüksek bant genişliği, sağlam ve sorunsuz çalışan bir hattınız veya hosting iniz yoksa, AJAX kullanmanız kullanıcılarınıza işkence anlamına gelebilir. Normalde bir kaç sayfayı ayrı tab larda veya pencerelerde açarak birisine bakarken diğerlerinin yüklenmesini bekleyebiliyoruz. Eğer uygulamamız AJAX ın temel amaçlarından biri olan bu hız talebini ve beklentisini karşılayamıyor ise uygulamamızı AJAX ile yazmamız doğru bir yol olmayacaktır. Çünkü bir kullanıcıyı web sayfası karşısında bekletmek ona yapılacak en büyük işkencelerden biridir. Güvenliği gerektiren uygulamalarda güvenlik kurallarını ihlal etmek! Uygulamaya bağlı olarak SSL kullanmak, önemli verilerin şifrelenmesi, girdi denetimlerinin yapılması gibi önemli güvenlik kurallarını hiçbir AJAX uygulamamızda ihmal etmememiz gerekmektedir. HTTP taleplerinin arkaplanda gidip geliyor olması riskleri bertaraf etmemektedir. Ajax uygulamaları için yeterli test ve denetimlerin yapılmaması! Uygulamalarımızın her tarayıcıda (browser) ve her platformda aynı şekilde çalıştığının ve aynı sonuçları verdiğininin test edilmesi ve onaylanması gerekmektedir. Bilindiği gibi JS kodları malesef her tarayıcıda (browser) veya her platformda aynı çalışmayabilmektedir. Bu nedenle bu tür uygulamaların her ortamda aynı davranışlara ve sonuçlara sahip olduğunun yeterli biçimde test edilmesi gerekmektedir. Bu, uygulamanın sorunsuz kılınmasını sağlayıp her tür kullanıcının uygulamanıza erişebilmesine ve uygulamayı sorunsuzca kullanabilmesine imkan tanıyacaktır. Ajax ın JS tabanlı bir yaklaşım olmasından dolayı istemci tarafındaki JS kodunun oldukça fazla ve ağır olması, tüm işlemlerin kullanıcı tarafında yapılıyor olması veya çok büyük JS/DOM kütüphanelerin kullanılması bir başka planlama ve tasarım yanlışı olacaktır. Çözüm olarak, bir kütüphanede kullanmayacağınız özelliklerin veya kodların ve yorumların çıkarılarak dosyanın boyutlarının küçültülmesi ile bu dosyaların download süresini kısaltabilirsiniz.

14 Bunun yanısıra, sunucu tarafından alacağınız veri cinsine göre çıktıyı XML veya metin formatında sunucu tarafında işlenmiş olarak alabilirsiniz. Verinin sunucu tarafında Web Uygulamalarında işlenmesi ve istemci tarafına hazır gelmesi hem kullanıcı tarafındaki kodu hafifleterek gerekli kaynak tüketimini azaltacak ve hem de güçlü sunucularda çok daha hızlı işleneceği için ek hız avantajı sağlayacaktır. Ek olarak, kodların en kısa ve en doğru şekilde yazılmış olduğundan emin olun. Zira kötü yazılmış basit bir loop, tarayıcının (browser) tıkanmasına veya kilitlenmesine neden bile olabilmektedir. JS kodu ne kadar kötü veya uzunsa ziyaretçinin bilgisayarında tarayıcı (browser) bir kadar fazla kaynak tüketeceğini ve böylece uygulamanızın kötü bir deneyim yaşatacağını unutmayın. Unutmayın herkesin hızlı ve güçlü bir bilgisayarı olmayabilir. JS desteği olmayan veya JS kullanmak istemeyen kullanıcıları gözardı ederek erişilebilirlik kurallarını ve standartları hiçe saymak! Halen bir çok kurumsal web sitesinde Text Version/Metin Versiyonu şeklinde sadece metin tabanlı site sürümleri bulunmaktadır. Aynı şekilde AJAX uygulamanızın da normal ve klasik yollarla çalışan sürümlerini barındırmak ve hazırda tutmak hem standartlara uymuş olmayı hem de %11 e ( yaklaşan bu kullanıcı kitlesini yoksaymamış olmanızı sağlayacaktır. Örnek olarak, sonradan eklemiş olsa da, Google Gmail e klasik HTML sürümünü ekleyerek Gmail i klasik yollarla kullanmak isteyen kullanıcıları kaybetmemeyi garanti altına almış oldu. Klasik sürüm hazırlanmazsa bile mutlaka bu kullanıcılara uygulamanızın neden JS gerektirdiğini ve uygulamanızın güvenilir olduğunu uygun ve anlaşılır bir dille anlatmanız gerekmektedir. Kullanıcıların sahip olduğu alışkanlıklarının dışına çıkmak veya kullanıcıların yeni bir şeyler öğrenmesini zorunlu kılmak! Günümüzde web kullanıcıları hergün yeni birşeyler öğrenmek istemiyor. Herkes genellikle alıştığı ve kendisine kolay gelen ve kendisini anlayan web sayfalarını ve uygulamalarını kullanıyor ve seviyor. Bu nedenle bu klasikleşmiş alışkanlıkları takip edin. Uygulamalarınızda AJAX ı, bu alışkanlıkları tamamen yoketmeden ufak çaplı ve keskin olmamak şartıyla kullanın. Kullanıcının odak noktasını kırmak! Uygulamalarınızın kullanıcının odaklandığı alan dışında başka alanları değiştirmemesi gerekmektedir. Kullanıcının odaklandığı noktanın kırılması veya birden fazla yerdeki değişikliği görememesi ve algılayamaması uygulamanızla kullanıcı arasındaki etkileşimi bozabilir. Bu değişikliklerin uygun efektlerle ve insanın takip edebileceği ve farkedebileceği bir biçimde yapılması hem uygulamanın güzelleşmesini hem de etkileşimin bozulmamasını sağlayacaktır. Aynı anda birden fazla işlem için HTTP talebi göndermek ve işlemek! Çok mecbur kalmadıkça belli aralıklarla işlemleri topluca göndermek ve topluca

15 işlemek daha mantıklı bir yol olacaktır. Arka arkaya gönderilen HTTP talepleri sayfada sıkça değişikliklere neden olacağı için bu durum kullanıcının o anda yaptığı veya yeni geçtiği işlemin bölünmesi anlamına gelecektir. Uygulamada yanlış tasarım ve planlama! Bir teknoloji, dil veya yaklaşım ne kadar güçlü, yetenekli ve potansiyel bir kapasiteye sahipse o kadar da dikkatli uygulama ve planlama gerektirecektir. AJAX böyle bir özelliğe sahiptir ve bu nedenle oldukça dikkatli bir kullanım ve iyi planlamayla doğru bir tasarım gerektirmektedir. XII. AJAX kodlamaya giriş Ajaxın temelinde XMLHttpRequest nesnesi yer alır. Ajax uygulamalarına takılan "Masaüstü web uygulamaları" lakabının sırrı da, bu nesnede gizlidir. XMLHttpRequest nesnesi bize, kendisiyle gönderilen sorguları, başka bir fonksiyon içerisinde yorumlama imkanı sağlar. Bu demektir ki XMLHttpRequest ile bir dosyaya bir sorgu gönderilir, alınan sonuç başka bir sayfa içerisine yüklenme ihtiyacı hissetmeden kullanılır. Bu yüzden ajax uygulamalrı geliştireek kişilerin, XMLHttpRequest nesnesini anlaması son derece önemlidir. a. XMLHttpRequest nesnesine giriş XMLHttpRequest nesnesini yaratmadan önce bu nesenenin bazı metodlarını tanıyalım. Metod abort() Açıklama Geçerli isteği iptal eder. getallresponseheaders() getresponseheader("başlıketiketi") Tüm karşılık başlık etiketilerini ve değerlerini string olarak elde eder. Verilen başlık etiketinin taşıdığı değeri string olarak elde eder.

16 open("metod", "Adres"[, asyncflag[,"username"[, "password"]]]) Sorgu gönderilmeden önce, sorgunun gönderileceği adresi, gönderi metodunu ve diğer seçime bağlı netilkleri belirler. send(içerik) setrequestheader("etiket", "değer") Sorguyu gönderir. Seçime bağlı olarak gönderilebilen verileri ve DOM ile yaratılmış verileri de gönderebilir. Gönderilen sorguya bir etiket/değer başlığını iliştirir. Tabloda gösterilen "metod" verileri çekmekte kullanacağımız HTTP metodunu ifade etmektedir. Bildiğiniz gibi HTML ile dosyalara sorgu gönderirken iki ayrı yöntem izliyoruz. Bunlardan birincisi doğrudan sayfa adını çağırıken kullandığımız test.html?id= , diğeri ise form verilerini göndermek için kullandığımız GET ve POST metodları. XMLHttpRequest nesnesi ile dosyalarımıza sorgu gönderirken de yine GET VE POST metodlarından istediğimiz bir tanesini kullanmak durumundayız. GET genellikle dosyalara doğrudan sorgulama maksadıyla kullanılır. Örneğin bir blog uygulamasında makaleler.asp?id=123 şeklindeki sorguyu GET kullanarak gönderebiliriz. Fakat sunucuya veri göndereceğimiz ve gönderdiğimiz verilerin toplam boyutunun 512 byte'dan fazla olduğu zamanlarda POST metodu bizim için daha uygun olacaktır. POST metodunda da sayfa adresine, GET kullanırkenki gibi fazladan bir sorgu ekleyebiliriz. Sorgunun gönderime hazırlanması durumunu -open(...)- belirten metodun üçüncü özelliği, yani asyncflag gönderilen işin eş zamanlı olmayışını belirler. Bu özelliğin değeri boolean, yani ya true, ya da false olarak belirlenir. Geçerli değeri de olan true seçilirse yapılan iş eş zamansız olarak yürütülür. Eğer bu değer false olarak belirlenirse; betik, gönderdiği sorgunun sunucu tarafından yorumlanmasını ve bir karşılık verilmesini bekler, doğal olarak ta yapılan hareketin, mutlaka istekcevap şekline dönüştürülmesi sağlanır. Bu mantıkta herhangi bir problem görülmemesine rağmen istemci istek gönderir, sunucu cevap verir, istemci de işlemine devam edebilmek için sunucunun cevabını bekler- bu metodun kullanılması şebeke veya sunucu hataları oluşumundaki risk payını arttırmaktadır. Bu nedenle yapılan işin eş zamanlı olmaması ve istem nesnesinin onreadystatechange -halihazırdaki durum değiştiğinde...- hareketi ile kontrol edilmesi daha güvenlidir.

17 b. Nesneyi yaratmak En basit şekilde XMLHttpRequest nesnesi şu şekilde yaratılır. liste 1. Yeni bir XMLHttpRequest nesnesi yarat <script language="javascript" type="text/javascript"> var request = new XMLHttpRequest(); </script> Farkedebildiğiniz üzere şekil 1 ve şekil 2 arasındaki fark; yaratılan request nesnesinin veri tipi üzerindedir. Temel java şekil 2 daha doğru gibi gelebilir. Ama aslında şekil 1 tercih edilen yaklaşımdır. liste 2. XMLHttpRequest nesnesini yaratmak için psuedo kod örneği XMLHttpRequest request = new XMLHttpRequest(); c. Hata ayıklama Hala XMLHttpRequest nesnesini desteklemeyen eski sürüm tarayıcıları (browser) kullanan insanlar olabilir. Bu tür bir durumun ele alınması gerekir. Liste 3 te böyle bir durumda ortaya çıkacak hatayı ele alan bir kod örneği bulunmaktadır. Liste 3. <script language="javascript" type="text/javascript"> var request = false; try { request = new XMLHttpRequest(); catch (failed) { request = false; if (!request) alert("error initializing XMLHttpRequest!"); </script>

18 Kodun içerdiği adımları daha yakından incelersek: 1. Request adında,ilk durumu false olan bir nesne yarat. Ilk durumunu false olarak belirlenmesinin anlamı hala XMLHttpRequest nesnesini yaratılmamış olduğunu göstermek amacıyladır. 2. Try / catch bloğu koy 1. Try içinde hala XMLHttpRequest nesnesini yarat 2. Eğer hala XMLHttpRequest nesnesi yaratılamamışsa catch ile yakala 3. Request nesnesinin hala false olup olmadığını kontrol et. 4.Eğer bir problem varsa, yani request nesnesinin değeri hala hata mesajı ver. false ise Eğer bu kodu çalıştırırsanız şöyle bir çıktı ile karşılaşırsınız:

19 Başka bir aykırı durum ise internet explorerın sürüm farklarından kaynaklanabilecek hatalardır. Örneğin yeni sürümlerde yaratılan nesne Msxml2.XMLHTTP olarak adlandırılmaktadır.; eski sürümlerde ise Internet Explorer Microsoft.XMLHTTP nesnesini kullanır. İyi bir uygulama geliştirmek için bu durumu ele almalısınız. Bu durumu ele alan kod örneği aşağıdadır.

20 Liste 4. eski ve yeni sürüm explorerları destekleyen kod örneği <script language="javascript" type="text/javascript"> var request = false; try { request = new XMLHttpRequest(); catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); catch (failed) { request = false; if (!request) alert("error initializing XMLHttpRequest!"); </script> Kodun içerdiği adımları daha yakından incelersek: Request adında, ilk durumu false olan bir nesne yarat. İlk durumunu false olarak belirlenmesinin anlamı hala XMLHttpRequest nesnesini yaratılmamış olduğunu göstermek amacıyladır. 1.Try / catch bloğu koy: i. XMLHttpRequest nesnesini yarat. ii. Nesne yaratılma işlemini kontrol et (catch (trymicrosoft)): 1. Yeni sürüm internet explorerlarda kullanılan (Msxml2.XMLHTTP) nesnesini yarat.

21 2. Eğer yeni sürüm (Msxml2.XMLHTTP) yaratılamazsa(catch (othermicrosoft)), eski sürümlerde kullanılan (Microsoft.XMLHTTP) nesnesini yarat. iii. Eğer hiçbir nesne yaratılmazsa (catch (failed)), request nesnesine false değerini ver. 2.Eğer bir problem varsa, yani request nesnesinin değeri hala false ise hata mesajı ver. Statik yaklaşım dinamik yaklaşıma karşı Yukarıda verilen kod örnekleri script taglarla gerçekleştirilmiştir. Eğer kod kısımları bir metod veya fonksiyonun içine yerleştirilmeden doğrudan kullanılıyosa bu yaklaşıma statik yaklaşım denir. Bunun anlamı; kod kullanıcaya gösterilmeden önce çaılştırılıyor demektir. Dinamik yaklaşım için kodu bir metodun içine koymakla sağlanabilir. Bu daha iyi bir yaklaşımdır. Liste 5. XMLHttpRequest nesnesini yaratan kodu metod içine koyma <script language="javascript" type="text/javascript"> var request; function createrequest() { try { request = new XMLHttpRequest(); catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); catch (failed) { request = false; if (!request) alert("error initializing XMLHttpRequest!"); </script>

22 Bu şekilde bir ajax uygulamsı geliştiriken, herhangi bir ajax çalışmasından önce bu fonksiyonu çağırmalısınız. Bunu kodla göstermek gerekirse; Liste 6. XMLHttpRequest nesnesi yaratan methodun kullanımı <script language="javascript" type="text/javascript"> var request; function createrequest() { try { request = new XMLHttpRequest(); catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); catch (failed) { request = false; if (!request) alert("error initializing XMLHttpRequest!"); function getcustomerinfo() { createrequest(); // Do something with the request variable </script> Bu kodu, yani metod yaklaşımını, çoğu Ajax kullanıcısını benimsememesinin nedeni bu yaklaşımın hata ayıklama olayını geciktirmesidir. Örneğin 15 kadar alanı olan karmaşık bir formunuz olduğunu düşünün; eğer siz 14. text alanını Ajax kodları ile desteklemiş iseniz, kullanıcı 14. alanı kullandığı zaman getcustomerinfo() metodu çalışır. Bu durumda XMLHttpRequest nesnesi çalışır

23 fakat bir hata ortaya çıkabilir ve ekrana bir hata mesajı yansıtılır. Böylece kullanıcı ilk 13 alanı boşuboşuna doldurmuş olur. Bunun için uygalama geliştirirken ne zaman statik yaklaşımın ne zaman dinamik yaklaşımın kulanılacağını iyi bir şekilde analiz etmek gerekir. d. XMLHttpRequest ile istek gönderme i. Sunucu (server) URL sini düzenlemek Yapılacak ilk iş sunucuya (server) bağlanılacak URL yi belirlemektir. Bu işlemi yapacak kod örneği aşağıdadır. Bu kod telefon alanından bir değeri yakalar ve bu değeri kullanarak URL yi yapılandırır. Liste 7. request URL yi yapılandıran kod örneği <script language="javascript" type="text/javascript"> var request = false; try { request = new XMLHttpRequest(); catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); catch (failed) { request = false; if (!request) alert("error initializing XMLHttpRequest!"); function getcustomerinfo() { </script> var phone = document.getelementbyid("phone").value; var url = "/cgi-local/lookupcustomer.php?phone=" + escape(phone);

24 Burada farklı olarak phone adlı bir değişken tanımlanıyor ve phone adlı form alanından değeri günleniyor. Aşağıdaki kod kısmı fhone alanını ve phone alanının id özelliğini göstermektedir. Liste 8. Break Neck Pizza formu <body> <p><img src="breakneck-logo_4c.gif" alt="break Neck Pizza" /></p> <form action="post"> <p>enter your phone number: <input type="text" size="14" name="phone" id="phone" onchange="getcustomerinfo();" /> </p> <p>your order will be delivered to:</p> <div id="address"></div> <p>type your order in here:</p> <p><textarea name="order" rows="6" cols="50" id="order"></textarea></p> <p><input type="submit" value="order Pizza" id="submit" /></p> </form> </body> ii. Request nesnesi açma URL bağlantısını elde ettikten sonra request nesnesini yapılandırabiliriz. Bunun için kullanılan open() methodudur. Bu method şu parametreleri alabilir: request-type: İstek gönderme için bir türdür. Tipik değerleri GETveya POST olabilir. Ama HEAD de kullanılmaktadır. url: bağlanılan URL dir.. asynch: Asenkron olarak istek gönderilecekse true, senkron olarak gönderilecekse false değerini alan bir parametredir. İlk değeri true olan bir parametredir.

25 username: Kullanıcı ismini bu parametre ile gönderebilirsiniz. Opsiyonel bir parametredir ve ilk değeri yoktur. password: Parolayı bu parametre ile aktarabilirsiniz. Opsiyonel bir parametredir ve ilk değeri yoktur. Liste 9. İstek açma function getcustomerinfo() { var phone = document.getelementbyid("phone").value; var url = "/cgi-local/lookupcustomer.php?phone=" + escape(phone); request.open("get", url, true); iii. Request gönderme Open() komutuyla yapılandırdığımız request nesnesi artık request göndermek için hazır demektir. Bu işlem send() komutula gerçekleştirilir. Send() komutu sadece bir tane parametre alır. Send() işleminin gösterimi aşağıda ki kod parçacığında gösterilmiştir. var url = "/cgi-local/lookupcustomer.php? phone=" + escape(phone); Eğer veri göndermek istirorsanız bunu yapmanın en iyi yolu Get requesti kullanmaktır. Eğer bir veri göndermeye ihtiyaç duymuyorsanız send() komutunu null olarak gönderebilirsiniz. Listing 10. Request gönderen kod parçacığı function getcustomerinfo() { var phone = document.getelementbyid("phone").value; var url = "/cgi-local/lookupcustomer.php?phone=" + escape(phone); request.open("get", url, true); request.send(null);

26 iv. HTTP hazır olma durumlarının ayrıntıları XMLHttpRequest nesnesinin readystate adlı bir özelliğinin olduğunu hatırlarsınız. Bu özellik, sunucunun bir isteği tamamladığından emin olmanızı sağlar ve genellikle, bir geri çağrı işlevi, sunucudan alınan verileri bir Web formunu ya da sayfasını güncellemek için kullanır. Liste 1'de bunun basit bir örneği gösterilmektedir. Liste 1. Geri çağrı işlevinde bir sunucunun yanıtıyla çalışma function updatepage() { if (request.readystate == 4) { if (request.status == 200) { var response = request.responsetext.split(" "); document.getelementbyid("order").value = response[0]; document.getelementbyid("address").innerhtml = response[1].replace(/\n/g, "<br />"); else alert("status is " + request.status); Hazır olma durumlarının en yaygın (ve en basit) kullanımı kesinlikle budur. "4" rakamından da tahmin edebileceğiniz gibi birkaç tane hazır olma durumu söz konusudur. 0: İstek başlatılmadı (open() çağrılmadan önce). 1: İstek ayarlandı, ancak henüz gönderilmedi (send() çağrılmadan önce). 2: İstek gönderildi ve işleniyor (bu noktada genellikle yanıtın içerik üstbilgilerini alabilirsiniz). 3: İstek işleniyor; yanıttan bazı kısmi verileri alabilirsiniz, ancak sunucu yanıt vermeyi tamamlamamıştır. 4: Yanıt tamamlandı; sunucunun yanıtını alabilir ve kullanabilirsiniz. Ajax programlamasının temel unsurlarının ötesine geçmek istiyorsanız, yalnızca bu durumları bilmeniz yeterli değildir, ne zaman ortaya çıktıklarını ve bunları nasıl kullanabileceğinizi de bilmeniz gerekir. Birincisi ve en önemlisi, her bir hazır olma durumunda, bir isteğin hangi durumunda karşılaşacağınızı öğrenmelisiniz. Ne yazık ki, kolay anlaşılır bir şey değildir ve birkaç özel durumu da içerir.

27 v. Gizli hazır olma durumları ReadyState özelliği 0 (readystate == 0) ile gösterilen birinci hazırolma durumu, başlatılmamış bir isteği belirtir. İstek nesnenizde open() işlevini çağırır çağırmaz, bu özellik 1 değerini alır. Hemen hemen her zaman isteğinizi başlattığınızda open() işlevini çağırdığınız için readystate == 0 değerinin görülmesi çok nadiren olay bir şeydir. Ayrıca, başlatılmamış hazır olma durumu, pratik uygulamalarda kullanışsız bir bilgidir. Yine de eksiksiz bilgi verebilmek açısından, Liste 2'de hazır olma durumunun nasıl 0 değerine ayarlanacağı gösterilmektedir. Liste 2. 0 hazır durumunun alınması function getsalesdata() { // Create a request object createrequest(); alert("ready state is: " + request.readystate); // Setup (initialize) the request var url = "/boards/servlet/updateboardsales"; request.open("get", url, true); request.onreadystatechange = updatepage; request.send(null); Bu basit örnekte, Web sayfanız bir isteği başlatmak için getsalesdata() işlevini çağırır (örneğin bir düğme tıklatıldığında). Hazır olma durumunu open() çağrılmadan önce denetlemeniz gerektiğini unutmayın. Açıkçası, bunun size fazla bir yararı olmaz; çoğu zaman open() işlevinin çağrılmadığından emin olmak isteyeceğiniz durumlar ender görülür. Neredeyse gerçek dünyaya benzeyen Ajax programlamasında bu hazır olma durumu, yalnızca birden çok işlevde aynı XMLHttpRequest nesnesini kullanarak birden çok istekte bulunulursa kullanılır. Bu durumda (çok nadiren de olsa), yeni isteklerde bulunmadan önce bir istek nesnesinin başlatılmamış durumda (readystate == 0) olduğundan emin olmak isteyebilirsiniz. Bu esas olarak, başka bir işlevin nesneyi aynı anda kullanmamasını sağlar.

28 vi. Devam eden isteğin hazır olma durumunun görüntülenmesi 0 hazır olma durumunun dışında, istek nesnenizin tipik bir istek ve yanıt sürecinde diğer hazır olma durumlarının her birinden geçmesi ve son olarak 4 numaralı hazır olma durumunda işlemi bitirmesi gerekir. İşte bu noktada, çoğu geri çağrı işlevinde gördüğünüz if (request.readystate == 4) satırı devreye girer; sunucunun işlemi tamamladığından ve Web sayfasını güncellemenin ya da sunucudan alınan verilere dayalı bir işlem yapmanın güvenli olduğundan emin olmanızı sağlar. Gerçekleşirken bu işlemi gerçekten görmek önemsiz bir görevdir. Hazır olma durumu 4 değerindeyse, geri çağrınızda yalnızca kodu çalıştırmak yerine, geri çağrınızın her çağrılışında hazır olma durumunu çıkarın. Bunu yapan koda ilişkin bir örnek görmek için Liste 3'e bakın. Liste 3. Hazır olma durumunun denetlenmesi function updatepage() { // Output the current ready state alert("updatepage() called with ready state of " + request.readystate); Bunu nasıl çalıştıracağınızdan tam olarak emin değilseniz, Web sayfanızdan çağrılacak bir işlev yaratmanız ve bunun, sunucu tarafındaki bileşene bir istek göndermesini sağlamanız gerekir (böyle bir işlev Liste 2'de ve bu dizinin birinci ve ikinci makalesindeki örneklerde gösterilmiştir). İsteğinizi oluştururken, geri çağrı işlevini updatepage() işlevine ayarlamadığınızdan emin olun; bunu yapmak için istek nesnenizin onreadystatechange özelliğini updatepage() işlevine ayarlayın. Bu kod, onreadystatechange özelliğinin tam olarak ne anlama geldiğini gösteren güzel bir örnektir -- isteğin hazır olma durumunun her değişmesinde, updatepage() çağrılır ve bir uyarı görüntülenir.

29 vii. Tarayıcı tutarsızlıkları Bu işlemin temel mantığını kavradıktan sonra, Web sayfanıza farklı tarayıcılardan erişmeyi deneyin. Bu hazır olma durumlarının işlenmesiyle ilgili bazı tutarsızlıkları fark etmeniz gerekir. Örneğin, Firefox 1.5'te aşağıdaki hazır olma durumlarını görürsünüz: Burada her bir istek aşaması gösterildiği için bu sizi şaşırtmamalıdır. Ancak, aynı uygulamaya Safari üzerinden erişirseniz, ilginç bir şeyle karşılaşırsınız -- daha doğrusu karşılaşmazsınız. Safari 2.0.1'de göreceğiniz durumlar şunlardır: Safari, birinci hazır olma durumunu dışarıda bırakır ve bunun anlamlı bir açıklaması yoktur; Safari'nin çalışma yöntemi böyledir. Bu önemli bir noktayı da gösterir: Sunucudan alınan verileri kullanmadan önce isteğin 4 numaralı hazır olma durumunda olup olmadığından emin olmak iyi bir fikir olsa da, her bir geçici hazır olma durumuna dayalı kod yazma farklı tarayıcılarda farklı sonuçlar almanızı sağlar. Örneğin, Opera 8.5 kullanırken işler, görüntülenen hazır olma durumları açısından daha da kötüdür: 3 4 Son olarak, Internet Explorer aşağıdaki durumlarla yanıt verir: Bir istekle ilgili sorun yaşıyorsanız, sorunları aramanız gereken ilk yer burası olmalıdır. Kodun düzgün çalıştığından emin olabilmeniz için isteğin hazır olma durumunu size gösterecek bir uyarı ekleyin. Kodunuzu Internet Explorer ve Firefox üzerinde deneyin -- dört hazır olma durumunu da alabilecek ve isteğin her bir aşamasını denetleyebileceksiniz.

30 viii. Güvenli verilerin alınması Tüm belgeler ve belirtimler, yalnızca 4 numaralı hazır olma durumunda verilerin kullanım açısından güvenli olduğu konusunda ısrarlıdır. ResponseText özelliği 3 numaralı hazır olma durumundayken verilerin alınamayacağı durumlar çok azdır. Ancak, uygulamanızda buna güvenmek kötü bir fikirdir -- 3 numaralı hazır olma durumundaki tamamlanmış verilere dayalı bir kod yazdığınızda, verilerin tamamlanmamış olması neredeyse kesindir. 3 numaralı hazır olma durumunda kullanıcıya, bir yanıtın gelmek üzere olduğu belirten bir geri bildirim sağlamak daha iyi bir fikirdir. alert() gibi bir işlev kullanmak kötü bir fikirdir -- Ajax kullanmak ve daha sonra, kullanıcıyı bir uyarı iletişim kutusuyla engellemek çok da mantıklı değildir -- bunun yerine formunuzdaki ya da sayfanızdaki bir alanı hazır olma durumu değiştikçe güncelleyebilirsiniz. Örneğin, 1 numaralı hazır olma durumu için bir aşama göstergesinin %25'lik, 2 numaralı hazır olma durumu için %50'lik, 3 numaralı hazır olma durumu için %75'lik ve 4 numaralı hazır olma durumu için %100'lük (tamamlanmış) kısmına ilerleyen bir görünüm hazırlamayı deneyebilirsiniz. Gördüğünüz gibi bu yaklaşım akıllıca, ancak tarayıcıya bağlı olacaktır. Örneğin Opera'da ilk iki hazır olma durumunu hiç almazsınız ya da Safari'de birinci durum (1) atlanır. ix. HTTP durum kodlarına yakından bakış Hazır olma durumlarını ve sunucunun yanıtını, Ajax programlama teknikleri çantanıza koydunuzda, Ajax uygulamalarıyla ilgili başka bir geliştirme düzeyine -- HTTP durum kodlarıyla çalışma -- geçmeye hazır olursunuz. Bu kodlar, Ajax için yeni kavramlar değildir. Bunlar, Web'in ortaya çıkışından bu yana var olan kavramlardır. Büyük olasılıkla Web tarayıcınızda bunlardan birkaçını görmüşsünüzdür: 401: Yetkisiz 403: Yasak 404: Bulunamadı Ajax uygulamalarınıza başka bir denetim ve yanıt verebilirlik düzeyi (ve özellikle daha güçlü hata işleme özelliği) eklemek için bir istekteki ve yanıttaki durum kodlarını doğru biçimde denetlemeniz gerekir. 200: Her şey yolunda Birçok Ajax uygulamasında, Liste 6'daki gibi hazır olma durumunu denetleyen ve daha sonra, sunucu yanıtındaki verilerle çalışmaya devam eden bir geri çağrı işlevi görürsünüz.

31 Liste 6. Durum kodunu yoksayan geri çağrı işlevi function updatepage() { if (request.readystate == 4) { var response = request.responsetext.split(" "); document.getelementbyid("order").value = response[0]; document.getelementbyid("address").innerhtml = response[1].replace(/\n/g, "<br />"); Bu, Ajax programlaması için dar görüşlü ve hataya eğilimli bir yaklaşımdır. Bir komut dosyası, kimlik doğrulaması gerektirirse ve isteğiniz geçerli kimlik bilgilerini sağlayamazsa, sunucu 403 ya da 401 gibi bir hata kodu döndürür. Ancak, sunucu isteğe yanıt verdiği için hazır olma durumu 4 değerine gelir (istediğiniz ya da istek için beklediğiniz yanıtı alamayabilirsiniz). Sonuç olarak, kullanıcı geçerli verileri alamaz ve JavaScript var olmayan sunucu verilerini kullanmayı denediğinde kötü bir hata bile alabilir. Sunucunun istekle ilgili işlemi bitirdiğinden ve "Her şey yolunda" durum kodunu gönderdiğinden emin olmak için çok az bir çaba göstermeniz yeterli olacaktır. Bu kod "200"'dür ve XMLHttpRequest nesnesinin status özelliğiyle birlikte raporlanır. Sunucunun yalnızca istekle işini bitirdiğinden değil, aynı zamanda olumlu bir durum da bildirdiğinden emin olmak için geri çağrı işlevinize Liste 7'de gösterilen denetimi ekleyin. Liste 7. Geçerli durum kodunun denetlenmesi function updatepage() { if (request.readystate == 4) { if (request.status == 200) { var response = request.responsetext.split(" "); document.getelementbyid("order").value = response[0]; document.getelementbyid("address").innerhtml = else response[1].replace(/\n/g, "<br />"); alert("status is " + request.status);

32 Birkaç satırlık kod eklemesiyle, bir şeyler yanlış giderse, kullanıcıların, herhangi bir açıklaması olmayan karışık verilerin bulunduğu bir sayfa yerine (şüpheli de olsa) yararlı bir hata iletisi alacaklarından emin olabilirsiniz. Yeniden yöneltme ya da yeniden yönlendirme Hatalarla ilgili konunun derinliklerine dalmadan önce, Ajax kullanırken endişelenmenizi gerektirmeyecek bir şeyden söz edebiliriz -- yeniden yöneltmeler. HTTP durum kodlarında bunlar, 300 durum kodu ailesiyle bildirilir: 301: Kalıcı olarak taşındı 302: Bulunamadı (istek başka bir URL/URI'ya yeniden yöneltildi) 305: Yedek Sunucu Kullanın (isteğin, istekte bulunulan kaynağa erişebilmesi için bir yedek sunucu kullanması gerekir) Ajax programcıları iki nedenle yeniden yöneltmeler konusunda endişelenmezler: Birincisi, Ajax uygulamaları neredeyse her zaman özel bir sunucu tarafı komut dosyası, sunucu uygulaması ya da uygulama için yazılır. Bu bileşenin Ajax programcısının haberi olmadan ortadan kaybolması ve başka bir yere taşınması çok ender görülen bir olaydır. Genellikle bir kaynağın taşındığını (kendiniz taşıdığınız ya da taşıttığınız için) bildiğinizden, isteğinizdeki URL'yi değiştirir ve hiçbir zaman bu tür bir sonuçla karşılaşmazsınız. Konu ile daha ilgili bir neden de Ajax uygulamalarının ve isteklerin kum havuzu yöntemini kullanmasıdır. Bu, Ajax isteklerinin gönderildiği Web sayfasına hizmet veren etki alanının, bu isteklere yanıt vermesi gereken etki alanı olduğu anlamına gelir. Bu nedenle, ebay.com etki alanından hizmet alan bir Web sayfası, amazon.com üzerinde çalışan bir komut dosyasına Ajax stili bir istekte bulunamaz; ibm.com üzerindeki Ajax uygulamaları netbeans.org üzerinde çalışan sunucu uygulamalarına isteklerde bulunamaz. Sonuç olarak, istekleriniz, bir güvenlik hatası oluşturulmadan başka bir sunucuya yeniden yöneltilemez. Böyle durumlarda, hiçbir durum kodu alamazsınız. Genellikle hata ayıklama konsolunda bir JavaScript hatası bulunur. Birçok durum kodu üzerinde düşünürken, yeniden yöneltme kodlarının tamamını göz ardı edebilirsiniz.

33 x. Hatalar 200 durum koduyla ilgilendikten ve 300 durum kodu ailesini büyük oranda dikkate almayabileceğinizi fark ettikten sonra, endişelenmeniz gereken diğer tek kod grubu 400 ailesidir. Bunlar, çeşitli hata tiplerini belirtir. Liste 7 'ye bakın ve hatalar işlenirken, kullanıcıya yalnızca çok soysal bir hata iletisinin bildirildiğine dikkat edin. Bu, doğru yönde bir adım olsa da kullanıcıya ya da uygulama üzerinde çalışan bir programcıya aslında neyin yanlış gittiğini açıklama açısından biraz yararsız bir iletidir. Öncelikle, eksik sayfalar için destek ekleyin. Bu durumla, üretim sistemlerinde gerçekten de sık karşılaşılmaz, ancak sınama amacıyla komut dosyasının taşınması ya da bir programcının yanlış bir URL girmesi yaygın bir uygulamadır. 404 hatalarını güzel bir şekilde raporlayabilirseniz, kafası karışan kullanıcılara ve programcılara yardım etmek için çok daha fazlasını sağlayabilirsiniz. Kullanıcı, sorunun kimlik doğrulamasından mı, eksik bir komut dosyasından mı (buradaki neden budur), kullanıcı hatasından mı, yoksa kod içindeki bir hatadan mı kaynaklandığını anlayamaz. Bazı basit kod eklemeleri, bu hatanın çok daha kesin olmasını sağlayabilir. Kimlik doğrulama hatalarının yanı sıra eksik komut dosyalarını kesin bir iletiyle işleyen Liste 8'e bakın. Liste 8. Geçerli durum kodunun denetlenmesi function updatepage() { if (request.readystate == 4) { if (request.status == 200) { var response = request.responsetext.split(" "); document.getelementbyid("order").value = response[0]; document.getelementbyid("address").innerhtml = response[1].replace(/\n/g, "<br />"); else if (request.status == 404) { alert ("Requested URL is not found."); else if (request.status == 403) { alert("access denied."); else alert("status is " + request.status);

34 Kendi uygulamalarınızda, kimlik doğrulama nedeniyle bir hata oluştuğunda, kullanıcı adını ve parolayı temizleyip ekrana bir hata iletisi eklemeyi düşünebilirsiniz. Eksik komut dosyalarını ya da diğer 400 tipi hatalarını (izin verilmeyen bir HEAD isteği göndermek gibi kabul edilemez bir istek yönetimi için 405 ya da yedek sunucu kimlik doğrulamasının gerektiği bir 407 kodu gibi) daha güzel işlemek için benzer yaklaşımlar uygulanabilir. Yaptığınız seçim ne olursa olsun, sunucudan dönen durum kodunun işlenmesiyle başlar. SONUÇ Birçok Ajax ve Web programcısı için bu makalede anlatılan bilgiler ileri düzey görünebilir. HEAD isteği oluşturmanın yararı nedir? Hangi durumda JavaScript'inizde açık olarak yeniden yöneltme durum kodunu işlemeniz gerekir? Bunlar güzel sorular; basit uygulamalarda yanıt, bu gelişmiş tekniklerin pek değerinin olmadığıdır. Ancak, Web artık basit uygulamalara tolerans gösterilen bir yer değil; kullanıcılar daha ileri düzeyli oldular, müşteriler daha güçlü uygulamalar ve gelişmiş hata raporlaması istiyorlar ve bir uygulama, toplam sürenin %1'inde çalışmadığı için yöneticiler işlerinden çıkarılıyorlar. O zaman, basit bir uygulamanın ötesine geçip XMLHttpRequest nesnesini daha iyi bir şekilde anlamak sizin işiniz. Çeşitli hazır olma durumlarına güvenebilirseniz -- ve tarayıcılar arasındaki farkları anlayabilirseniz -- bir uygulamada hızlı bir şekilde hata ayıklayabilirsiniz. Bir hazır olma durumuna dayalı yaratıcı bir işlevsellik ortaya çıkarabilir ve kullanıcılara ve müşterilere bir isteğin durumuyla ilgili rapor verebilirsiniz. Durum kodlarını kullanabilirseniz, uygulamanızı komut dosyası hatalarıyla, beklenmedik yanıtlarla ve uç durumlarla başa çıkabilecek şekilde ayarlayabilirsiniz. Sonuç olarak, uygulamanız yalnızca her şeyin doğru gittiği durumlarda çalışmak yerine, her zaman çalışır. Buna HEAD istekleri oluşturma yeteneğini, URL varlığını denetlemeyi ve bir dosyanın değiştirilme zamanını öğrenmeyi ekleyin, kullanıcıların kendi bilgileriyle güncellenmiş, geçerli sayfalar almalarını sağlayın ve (en önemlisi) uygulamanızın ne kadar güçlü ve çok yönlü olduğunu göstererek kullanıcıları şaşırtın. Bu makale uygulamalarınızı parıldayan bir uygulama yapmaz, metni sarı spotlarla vurgulamanıza ya da daha çok masaüstüne benzetmenize de yardımcı olmaz. Bunların tümü Ajax'ın güçlü özellikleri olmasına rağmen, bir dereceye kadar kekin üzerindeki krema gibidir. Uygulamanızın hataları ve sorunları uygun bir şekilde işlediği sağlam bir temel oluşturmak için Ajax'ı kullanırsanız, kullanıcılar sitenize ve uygulamanıza geri döneceklerdir. Buna, görsel oyunları eklediğinizde, heyecanlı ve mutlu kullanıcılarınız olacaktır.

35 TUTORİAL örnek uygulama Aşağıda anlatılan örnek uygulamada herhangi bir framework kullanılmamıştır. Çünkü günümüzde kullanılan AJAX çatılarının tümünün sadece javascript kodu yazmayı gereksiz kılan javascript kodlarının yaptığı işleri arkaplanda JSP kodunun içine gömülmüş şekilde TAG kütüphaneleri ile gerçekleştirdiklerini bilmeliyiz. Bu uygulamanın amacı ise AJAX ı bir konsept olarak sunup ilkelerini herhangi bir çatı kullanmadan olduğu gibi anlatmaktır. Çünkü bizce AJAX tekniğini kavrayabilmiş, javascript yazımını benimsemiş bir web programcısı için mevcut çatılardan kendisi için en uygun olanı seçmesi ve kullanması daha doğru bir yöntemdir. Uygulama ortamı Uygulamayı denemek için: Eclipse 3.2 Apache Tomcat Sisteminizde kurulu olmalıdır. Aslında örneğimiz oldukça sade bir örnek olduğu için temelde elinizde herhangi bir jdk ve herhangi bir servlet container olması da yeterlidir. Ancak bundan sonraki anlatımlar Eclipse 3.2 ve tomcat in kurulu olduğu varsayılacaktır. Uygulamanın tanımı Aşağıdaki uygulama forum veya herhangi bir dinamik web portalına girişte karşılaşılan giriş (login) adımını AJAX tekniğini kullanarak gerçekleştirmeye yöneliktir. Bu bağlamda kullanıcıdan portala girmek için gerekli kullanıcı adı ve şifresi index.jsp sayfası aracılığıyla istenir. Formun içindeki alanlardan herhangi biri veya her ikis de eksik girimişse kullanıcı uyarılır. Bilgiler tam girilmişse bu bilgiler Login.java kütüğünde kodu bulunan java servletine iletilir. Servlet kullanıcı adının ali, şifresinin 1234 olup olmadığını kontrol eder. Eğer ad ve şifre doğru ise sayfada Hoş geldin ali yazar. Aksi takdirde kullanıcı adı veya parola hatalı uyarısı görülür. Bütün bu uyarı ve onay mesajları sayfanın yeniden yüklenmesine gerek kalmadan sanki bir masaüstü uygulamasıymışcasına AJAX tekniği kullanılarak kullanıcıya iletilir.

36 Uygulamanın gerçekleştirimi İndex.jsp İndex.jsp retrieveurl() ve processstatechange() fonksiyonlarını içermektedir. retrieveurl() fonksiyonu aracılığıyla bir XMLhttp istemi oluşturulur ve servlete gönderilir.tarayıcının türüne göre ya XMLHttpRequest ya da ActiveXObject("Microsoft.XMLHTTP") nesnesi oluşturulur ve servlete gönderilir.formda değişiklik yapılması durumunda processstatechange işlevi çağrılarak bu değişiklik ele alınır. processstatechange() fonksiyonu form üzerindeki işlemlere anında verilecek cevapların ele alınmasını gerçekleştirir.bu olayın gerçekleşebilmesi için istemin tamamlanıp servlete gönderilmiş olması ve servletten herhangi bir aksaklık olmadan yanıt gelmiş olması gerekmektedir. Her iki fonksiyonda da kullanıcıya gönderilen mesajlar html kodu içine gömülmüş span alanlarına mesaj yazdırılarak yapılmaktadır. Dikkat edilmesi gereken nokta her giriş düğmesine basıldığında span alanlarının içeriklerinin önce silinip sonra yazdırıldığıdır. Bir diğer nokta ise istem gönderiminin post metodu ile yapılmasıdır. Bu sayede aynı kullanıcı adı ve parola ile giriş yapıldığında her seferinde yeni bir cevabın üretilmesi sağlanmıştır. Bir başka deyişle oturumlar arasında oluşacak değişikliklerin yol açacağı hatalar engellenmiştir.

37 page language="java" contenttype="text/html; charset=iso "%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso "> <title>uye GİRİŞİ</title> <script> var req; var k,p; /* Bu fonksiyon aracılığıyla bir XMLhttp istemi oluşturulur ve servlete gönderilir.tarayıcının türüne göre ya XMLHttpRequest ya da ActiveXObject("Microsoft.XMLHTTP") nesnesi oluşturulur ve servlete gönderilir.formda değişiklik yapılması durumunda processstatechange işlevi çağrılarak bu değişiklik ele alınır. */ function retrieveurl() { if (window.xmlhttprequest) { // Internet explorer değilse req = new XMLHttpRequest(); req.onreadystatechange = processstatechange; try { /* open() metodu ile istek (request)*/ req.open('post','login?username='+ document.getelementbyid('username').value+ '&password='+document.getelementbyid('password').value,true); catch (e) { alert(e); req.send(null); else if (window.activexobject) { // Internet explorer ise req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processstatechange; /* open() metodu ile istek (request)*/ req.open('post','login?username='+ document.getelementbyid('username').value

38 +'&password='+document.getelementbyid('password').value, true); req.send(); /* processstatechange() fonksiyonu form üzerindeki işlemlere anında verilecek cevapların ele alınmasını gerçekleştirir.bu olayın gerçekleşebilmesi için istemin tamamlanıp servlete gönderilmiş olması ve servletten herhangi bir aksaklık olmadan yanıt gelmiş olması gerekmektedir. */ function processstatechange() { if (req.readystate == 4) { // İstem gönderimi tamamlandı if (req.status == 200) { // Geçerli bir yanıt alındı k=document.uyeformu.username.value; p=document.uyeformu.password.value; var cells = document.getelementsbytagname("span"); for (var i = 0; i < cells.length; i++) { cells[i].innerhtml=""; /*bu if kontrolü ile kullanıcı her iki alanı da doldurdu ise girdiği bilgilerin doğru olup olmadığı istemimize servletin yanıt olarak göndermiş olduğu req.responsetext aracılığı ile kontrol edilmektedir. */ if(k!='' && p!=''){ /* req.responsetext 0 değilse kullanıcıya hoşgeldin mesajı verilir. */ if(req.responsetext!=0){ document.getelementbyid('result').style.fontsize="2.0em"; document.getelementbyid('result').style.color="blue"; document.getelementbyid('result').innerhtml ='Hoşgeldin '+k; /* req.responsetext 0 ise kullanıcıya kullanıc adı veya parola hatalı mesajı verilir. */ else if(req.responsetext==0){ document.getelementbyid('result').style.fontsize="1.0em"; document.getelementbyid('result').style.color="red"; document.getelementbyid('result')

39 .innerhtml ='Kullanıcı adı veya parola hatali'; /*kullanıcı adı boş bırakılmışsa ***Bu alan boş bırakılamaz*** mesajı kullannıcıya gönderilir. */ if(k==''){ var info = '***Bu alan boş bırakılamaz***'; document.getelementbyid('user').style.fontsize="0.9em"; document.getelementbyid('user').style.color="red"; document.getelementbyid('user').innerhtml=info; /*parola boş bırakılmışsa ***Bu alan boş bırakılamaz*** mesajı kullannıcıya gönderilir. */ if(p==''){ var info = '***Bu alan boş bırakılamaz***'; document.getelementbyid('pass').style.fontsize="0.9em"; document.getelementbyid('pass').style.color="red"; document.getelementbyid('pass').innerhtml=info; else { alert("problem: " + req.statustext); </script> </head> <body> <h2>giriş</h2> <span id="result"></span>

40 <! - Burada form action değeri aşağıdaki şekilde verilerek formun ilk elden java script tarafından ele alınacağı bildirilir. onsubmit="retrieveurl(); satırı ile GİRİŞ butonuna basılması ile kontrolün java scripte geçeceği bildirilir. --> <form action="javascript:void%200" method="post" name="uyeformu" onsubmit="retrieveurl();"> <table width="80%" border="1"> <tr> <td><b>kullanıcı adı:</b></td> <td><input type="text" name="username"><span id="user"></span></td> </tr> <tr> <td><b>parola:</b></td> <td><input type="password" name="password"><span id="pass"></span></td> </tr> <tr> <td colspan="1"><input type="submit" value="giriş"></td> </tr> </table> </form> </body> </html>

41 Login.java import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; /** * Servlet implementation class for Servlet: Login * */ public class Login extends javax.servlet.http.httpservlet implements javax.servlet.servlet { private static final long serialversionuid = 1L; protected void dopost(httpservletrequest req, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); String username = req.getparameter("username"); String password = req.getparameter("password"); /*kullanıcı adı ali ve parolası da 1234 ise JSP ye yanıt olarak 1 gönderilir. Değilse de 0 gönderilir. */ if(username.equals("ali") && password.equals("1234")){ out.println(1); out.flush(); else { out.println(0); out.flush();

42 KAYNAKLAR "Introduction to Ajax: Understanding Ajax, a productive approach to building Web sites, and how it works" "Make asynchronous requests with JavaScript and Ajax: Use XMLHttpRequest for Web requests" "Ajax for Java developers: Build dynamic Java applications" Google GMail: Web'in çalışma şeklini değiştiren Ajax tabanlı bu harika uygulamayı inceleyin. Google Maps, başka bir Google tabanlı Web 2.0 uygulamasıdır. "Ajax: A New Approach to Web Applications": HTTP durum kodları: Head Rush Ajax, Brett McLauglin,, O'Reilly Media Java and XML, İkinci Basım, Brett McLaughlin (Ağustos 2001, O'Reilly Media, Inc.) Ajax Hacks,Bruce Perry, O'Reilly Media Ajax what is it good for?, Edward Traversa Ajax using XMLHttpRequest and Struts, Frank W. Zametti

Basit bir web uygulaması

Basit bir web uygulaması AJAX Ahmet Demirelli [email protected] SCJP 5.0, SCWCD 1.4 Sabancı Üniversitesi Bilişim Teknolojileri Yüksek Lisans Programı 3/20/2007 Sabanci University 1 Ajanda Neden AJAX ihtiyacı AJAX

Detaylı

Algorithm of Your Life. AJAX ve...

Algorithm of Your Life. AJAX ve... AJAX ve... Neler Yapcaz? Tanışma Seminere Başlama Seminer Konusunun Anlatılması Seminerin Tamamlanması Vedalaşma 2/30 AJAX da neymiş? 3/30 Web Teknolojilerine Bakın 4/30 AJAX budur... AJAX (Asynchronous

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Servlet Üst Düzey Programlama-ders01/ 1 Servlet Nedir? Web sayfaları ilk başlarda durağan bir yapıya sahipti ve kullanıcıdan bilgi alarak işlemler yapmıyordu. Zamanın geçmesiyle kullanıcıya

Detaylı

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1 Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte

Detaylı

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri nedir? Sunucu Yazılım Teknolojileri nedir? Gündem 1 nedir? 2 XML 3 nedir? nedir? : Asynchronous JavaScript and XML Yeni bir teknoloji değil, daha çok bir yöntembilim, teknik, tasarım deseni. RIA = Zengin

Detaylı

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1 Web Formlar ve Sayfalar Arasında Bilgi Gönderme BATML İnternet Programcılığı 1 Bazı web sitelerinde sayfalar arasında bilgi veya değişken göndermek gerekebilir. Gönderilen bu bilgi kullanıcı adı ve şifre

Detaylı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 23 May. 2016 Form Form İşlemleri Tarayıcıdan bilgi alarak işlem gerçekleştirme FORM elemanları yardımıyla

Detaylı

Internet Programming II. Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı Internet Programming II Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 11-14 May. 2014 Form Form İşlemleri Tarayıcıdan bilgi alarak işlem gerçekleştirme FORM elemanları

Detaylı

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu ASP.NET TEMELLERİ Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu İnternet Nasıl Çalışır? Sunucu istemci modeline göre çalışır. Fiziksel olarak bu sistem genelde isteği yapan

Detaylı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı JSON Korsanlığı Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı İnternetin gün geçtikçe hayatımızdaki önemi arttı ve web siteleri milyonlarca insan tarafından girilen yerler haline geldi. Artık çevremizden

Detaylı

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. [email protected]

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ [email protected] Karabük Üniversitesi Uzaktan Eğitim Uygulama ve AraştırmaMerkezi 2 İçindekiler 1. GİRİŞ... 3 1.1 ASP NEDİR?...

Detaylı

Ajax kullanımı oldukça yaygınlaşmaktadır. Web tabanlı uygulamalar Ajax desteği ile çok daha esnek kullanışlı, performanslı bir yapıya kavuşmaktadır.

Ajax kullanımı oldukça yaygınlaşmaktadır. Web tabanlı uygulamalar Ajax desteği ile çok daha esnek kullanışlı, performanslı bir yapıya kavuşmaktadır. Ajax'a Giriş Ajax (asynchronous javascript and xml); web tabanlı uygulamalarda, zengin kullanıcı arayüzü ve güçlü arka plan uygulamaları bütünleştiren bir yaklaşım ve geliştirme ortamıdır. Ajax Bu yöntemde

Detaylı

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011 PHP I E. Fatih Yetkin 26 Eylül 2011 Outline Temel Tanımlar HTML e Giriş PHP ye Giriş MySQL ve PHP Temel Tanımlar Web Sunucu Nedir? Teknik detaylar bir kenara bırakılacak olursa, hazırlanan web sayfasını

Detaylı

YZM 3215 İleri Web Programlama

YZM 3215 İleri Web Programlama YZM 3215 İleri Web Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 6 AJAX Bu bölümde; AJAX nedir? AJAX nasıl çalışır?

Detaylı

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları. Script Statik Sayfa Dinamik Sayfa Dinamik Web Sitelerinin Avantajları İçerik Yönetim Sistemi PHP Nedir? Avantajları Dezavantajları Script HTML kodları arasına yerleştirilen küçük kodlardır. Web sayfalarında

Detaylı

jquery kütüphanesini sayfaya eklemek için iki yöntem vardır. 1. Direkt jquery nin sitesinden ekleme

jquery kütüphanesini sayfaya eklemek için iki yöntem vardır. 1. Direkt jquery nin sitesinden ekleme az kod, çok iş! jquery bir JavaScript kütüphanesidir 2006 yılında, John Resig adlı bir JavaScript geliştiricisi tarafından yazılmaya başlanmıştır. Javascript ile yapmak istediğimiz bir uygulama için yazmamız

Detaylı

YZM 3215 İleri Web Programlama

YZM 3215 İleri Web Programlama YZM 3215 İleri Web Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 10 AJAX Bu bölümde; AJAX nedir? AJAX nasıl çalışır?

Detaylı

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR ÖĞRENME FAALİYETİ 1 AMAÇ ÖĞRENME FAALİYETİ 1 Uygun ortam sağlandığında web sayfaları için formlar oluşturabileceksiniz. ARAŞTIRMA Web sayfalarında formların kullanım amaçlarını ve nasıl kullanıldığını

Detaylı

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. [email protected]

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ [email protected] Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler Request Nesnesinin Özellikleri

Detaylı

C# ile e-posta Göndermek

C# ile e-posta Göndermek Kemal Demir http://kemal.csharpturk.net [email protected] C# ile e-posta Göndermek 25.12.2006 Web sitemizin üyelerine ya da adreslerini bir yerde biriktirdiğimiz arkadaşlarımıza toplu olarak eposta

Detaylı

SESSİON KULLANIMI. .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim. Language=VBScript Codepage="1254"%>

SESSİON KULLANIMI. .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim. Language=VBScript Codepage=1254%> SESSİON KULLANIMI Bir ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun

Detaylı

PROGRAMLAMA DERSİ 1. İNTERNET

PROGRAMLAMA DERSİ 1. İNTERNET PROGRAMLAMA DERSİ 1. İNTERNET İnternet sunucu-istemci modeline göre çalışır. Fiziksel olarak bu sistem genelde isteği yapan bir bilgisayar (kullanıcı-client) ve bu isteği karşılayan özel bir bilgisayar

Detaylı

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. [email protected]

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ [email protected] Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler QUERYSTRING KOLEKSIYONU... 3 FORM

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Servlet Üst Düzey Programlama-ders08/ 1 Servlet Nedir? Internetin ilk zamanlarında geliştirilen web sayfaları durağan bilgiler içeriyordu. Zaman geçtikçe web sayfaları daha değişken,

Detaylı

2-Hafta Temel İşlemler

2-Hafta Temel İşlemler 2-Hafta Temel İşlemler * Html Komutlarının Yapısı * Açıklamalar * Htm Sayfasının Oluşturulması * Temel Html Komutları * Html Sayfalarının Düzenlenmesi * Html Sayfalarının İncelenmesi Html Komutlarının

Detaylı

Web Önyüzü Nasıl Olmalı? <Markup> : İskelet {css} : Görünüm JavaScript() : Etkileşim

Web Önyüzü Nasıl Olmalı? <Markup> : İskelet {css} : Görünüm JavaScript() : Etkileşim Web Önyüzü Nasıl Olmalı? : İskelet {css} : Görünüm JavaScript() : Etkileşim Bu üç öğe olabildiğince esnek bağlı olmalı Kötü Örnek / İyi Örnek Standartlara uygun olmalı! Standartlara uygun

Detaylı

PHP 1. Hafta 1. Sunum

PHP 1. Hafta 1. Sunum PHP 1. Hafta 1. Sunum PHP101: PHP nedir? Bu dersten sonra bilecekleriniz PHP nedir? PHP ye neden ihtiyaç vardır? PHP nin gelişimi HTML, HTTP ve JS nedir? PHP yle alakası nedir? PHP nin uygulama alanları

Detaylı

PHP ile İnternet Programlama

PHP ile İnternet Programlama PHP ile İnternet Programlama Doç.Dr. Gazi Üniversitesi Gazi Eğitim Fakültesi Bilgisayar ve Öğretim Teknolojileri Eğitimi Bölümü 5. BÖLÜM: Oturum Yönetimi ve Güvenlik Sayfaya Yönlendirme PHP sayfamızdan

Detaylı

MİLLİ EĞİTİM BAKANLIĞI YENİ EPOSTA SİSTEMİ HAKKINDA MEB

MİLLİ EĞİTİM BAKANLIĞI YENİ EPOSTA SİSTEMİ HAKKINDA MEB İçindekiler MİLLİ EĞİTİM BAKANLIĞI YENİ EPOSTA SİSTEMİ HAKKINDA... 3 MEB Yeni E-posta Sistemi Kullanım Detayları;... 4 MEBBİS ile Giriş... 5 E-posta Şifresi İle Giriş... 6 Şifre Hatırlatma Ekranında Karşılaşılan

Detaylı

4.41. WEB DE GENÇ TEKNİK: AJAX. Fırat Üniversitesi Fen Bilimler Enstitüsü, Elazığ. Fırat Üniversitesi Teknik Eğitim Fakültesi,

4.41. WEB DE GENÇ TEKNİK: AJAX. Fırat Üniversitesi Fen Bilimler Enstitüsü, Elazığ. Fırat Üniversitesi Teknik Eğitim Fakültesi, 4.41. WEB DE GENÇ TEKNİK: AJAX 1 Zeynep ÖZER 2 Asaf VAROL 1 Fırat Üniversitesi Fen Bilimler Enstitüsü, Elazığ 2 Fırat Üniversitesi Teknik Eğitim Fakültesi, Elektronik ve Bilgisayar Eğitimi Bölümü, Elazığ

Detaylı

solid; BORDER-LEFT: #1F9FFF 0px solid; BORDER-RIGHT: #1F9FFF 0px solid; BORDER-TOP: #1F9FFF 0px solid; COLOR: #1F9FFF; FONT-FAMILY: Trebuschet MS;

solid; BORDER-LEFT: #1F9FFF 0px solid; BORDER-RIGHT: #1F9FFF 0px solid; BORDER-TOP: #1F9FFF 0px solid; COLOR: #1F9FFF; FONT-FAMILY: Trebuschet MS; Web Teknoloji Kavramları Ahmet Demirelli [email protected] MCP, SCJP 5.0, SCWCD 1.4 Sabancı Üniversitesi Bilişim Teknolojileri Yüksek Lisans Programı 6/9/2007 Sabanci University 1 Ajanda CSS

Detaylı

Raptadmin 1.x.x Sürümleri için Kullanım Klavuzu

Raptadmin 1.x.x Sürümleri için Kullanım Klavuzu Raptadmin 1.x.x Sürümleri için Kullanım Klavuzu Ekim 2014 Ankara www.raptadmin.com [email protected] Giriş İşlemleri Raptadmin yönetim paneline www.alanadınız.com/admin adresini kullanarak gidebilirsiniz.

Detaylı

JAVA API v2.0 Belge sürümü: 2.0.2

JAVA API v2.0 Belge sürümü: 2.0.2 JAVA API v2.0 Belge sürümü: 2.0.2 1. İçindekiler 1. İÇİNDEKİLER... 2 2. BU BELGENİN AMACI... 3 3. BELGE SÜRÜMLERİ... 3 4. SİSTEM GEREKSİNİMLERİ... 3 5. KULLANIM ŞEKLİ... 4 5.1. GENEL... 4 5.2. UYARILAR...

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Struts Framework Üst Düzey Programlama-ders08/ 1 JSP MODEL 1 ve MODEL 2 Mimarileri Bu mimariler bir web uygulaması geliştirilirken kullanılan yöntemlerdir. Bu yöntemler arasındaki

Detaylı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Internet Programming II Elbistan Meslek Yüksek Okulu 2013 2014 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 26 May. 2014 Form Form İşlemleri Tarayıcıdan bilgi alarak işlem gerçekleştirme FORM elemanları yardımıyla

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama JSP Üst Düzey Programlama-ders04/ 1 JSP JSP durağan HTML ile dinamik oluşturulan içeriği birleştirmeyi sağlar. Bir web sayfası tasarlama programı ile web sayfasını tasarlar daha sonra

Detaylı

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 Ders- 13 World Wide Web (WWW) Yrd. Doç. Dr. Burcu Can Buğlalılar Bilgisayar Mühendisliği Bölümü Bilgisayar Katmanları İçerik World Wide Web (WWW) Anlık Mesajlaşma

Detaylı

7. Çerçeveler. Bu bölümü bitirdiğinizde,

7. Çerçeveler. Bu bölümü bitirdiğinizde, 7. Çerçeveler Bu bölümü bitirdiğinizde, Çerçevelerden oluşan bir WEB sayfası tasarlamayı, İç içe çerçeveler oluşturmayı ve Çerçeveleri isimlendirmeyi, Bağ kurulan dosyaları belirtilen çerçeve içerisinde

Detaylı

Bölüm 10: PHP ile Veritabanı Uygulamaları

Bölüm 10: PHP ile Veritabanı Uygulamaları Bölüm 10: PHP ile Veritabanı Uygulamaları -231- Öğr.Gör. Serkan DİŞLİTAŞ 10.1. PHP PHP, platformdan bağımsız sunucu taraflı çalışan betik bir web programlama dilidir. PHP programlama dili ile MySQL, MSSQL,

Detaylı

<html> <head> <title>sayfa Başlığı</title> </head> <body> Bu benim ilk sayfam <b>bu metin koyu</b> </body> </html>

<html> <head> <title>sayfa Başlığı</title> </head> <body> Bu benim ilk sayfam <b>bu metin koyu</b> </body> </html> HTML'e Giriş 1. HTML dosyası nedir? HTML'in açılımı Hyper Text Markup Language (Bunun tam Türkçe'si bulunmamakla beraber "çok yere açılan metin" denebilir. Bir HTML dosyası bir text dosyası olmakla beraber

Detaylı

Web Programlama Kursu

Web Programlama Kursu Web Programlama Kursu Bu kurs ne değildir? Neyi amaç edinmiştir? Bilgisayar Programcısı? Web Tasarımcısı? Web Programcısı? Neler öğreneceğiz? Kurs sonunda neler yapılabileceğiz? Örnek siteler Örnek Projeler

Detaylı

Responsive Tasarım Önerileri!

Responsive Tasarım Önerileri! Responsive Tasarım Önerileri! !Mobil kullanıcı, masaüstü kullanıcısından farklı olarak hedef odaklı hareket eder. Gezinti ve keşif deneyimini geliştirmek için gereksiz objeleri ve hataları minimalize etmelisiniz.!

Detaylı

Web 2.0 Güvenliği @2014 Örnek Eğitim Notu [email protected]

Web 2.0 Güvenliği @2014 Örnek Eğitim Notu bilgi@bga.com.tr Web 2.0 Güvenliği @2014 Örnek Eğitim Notu [email protected] Javascript 1995 Netscape, Brendan Eich tarafından geliştirildi. Dinamik olmasının yanında en önemli iki özelliği; Lambda Closure Javascript -

Detaylı

VIDEOCELL API. Versiyon 1.0.0

VIDEOCELL API. Versiyon 1.0.0 VIDEOCELL API Versiyon 1.0.0 İçindekiler 1. Bu Belgenin Amacı... 3 2. Belge Sürümleri... 3 3. Sistem Gereksinimleri... 3 4. Kullanım Şekli... 3 4.1. Genel... 3 4.2. Uyarılar... 3 4.3. Hata Kodları... 4

Detaylı

Arayüz Geliştirme Dokümantasyonu

Arayüz Geliştirme Dokümantasyonu Arayüz Geliştirme Dokümantasyonu Proje: İş: Müşteri: Nosab Web Sitesi Arayüz Geliştirme Aeronorm Index 1. Sayfalar 2. Renk Paleti 3. Tipografi 4. Kutu Modeli 5. Bileşenler 6. Kod ve Sayfa Yapısı 7. Responsive

Detaylı

JAVASCRIPT JAVASCRIPT DİLİ

JAVASCRIPT JAVASCRIPT DİLİ JAVASCRIPT JAVASCRIPT DİLİ Netscape Navigator 2.0 ile birlikte geliştirilen JavaScript dili istemci taraflı (client-side) script dilidir. Web sayfalarında dinamik içerik sağlamak ya da kullanıcıyla iletişim

Detaylı

www.smsmakinesi.com [email protected] COM API v.1.1 BELGE SÜRÜMÜ : 1.1

www.smsmakinesi.com destek@hermesiletisim.net COM API v.1.1 BELGE SÜRÜMÜ : 1.1 [email protected] COM API v.1.1 BELGE SÜRÜMÜ : 1.1 1 1. İÇİNDEKİLER 1. İçindekiler 2 2. Bu Belgenin Amacı 3 3. Kullanım Şekli.3 4. Uyarılar.4 5. Hata Kodları.4 6. Kullanıcı Bilgileri Kontrolü..5

Detaylı

Toplu İleti Gönderimi

Toplu İleti Gönderimi Toplu İleti Gönderimi İK ve Bordro Plus ürünlerinde; personelin doğum günü, işe giriş kutlaması gibi özel tarihlerde çalışanlara e-posta ile kutlama mesajları otomatik olarak gönderilebilir. Bu işlem Sicil

Detaylı

WEB TASARIMININ TEMELLERİ

WEB TASARIMININ TEMELLERİ WEB TASARIMININ TEMELLERİ Öğr. Gör. M. Mutlu YAPICI Ankara Üniversitesi Elmadağ Meslek Yüksekokulu Ders İzlencesi Hafta Modüller/İçerik/Konular 1. Hafta İnternet ve WEB Tanımları Html Temel Etiketleri

Detaylı

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ Versiyon: 1.0.4 URL Adresi http://merchant.mobilepax.com/services/product.aspx Gönderilen XML Yapısı MobilePaxProduct fonksiyonu buton bilgisi oluşturulacak ürünün

Detaylı

1.PROGRAMLAMAYA GİRİŞ

1.PROGRAMLAMAYA GİRİŞ 1.PROGRAMLAMAYA GİRİŞ Bilindiği gibi internet üzerindeki statik web sayfaları ziyaretçinin interaktif olarak web sayfasını kullanmasına olanak vermemektedir. Bu yüzden etkileşimli web sayfaları oluşturmak

Detaylı

CELAL BAYAR ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA ÜNİVERSİTE DIŞINDAN ERİŞİM

CELAL BAYAR ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA ÜNİVERSİTE DIŞINDAN ERİŞİM Celal Bayar Üniversitesi kütüphane veritabanlarına üniversite dışından erişebilmek için kullandığınız internet tarayıcısına uygun olarak bazı ayarlar yapmanız gerekmektedir. Aşağıda tanımlanan ayarlar

Detaylı

GOOGLE DRİVE KULLANARAK FORM OLUŞTURMA

GOOGLE DRİVE KULLANARAK FORM OLUŞTURMA GOOGLE DRİVE KULLANARAK FORM OLUŞTURMA Google Docs yani Google Dokümanlar hizmeti bir süre önce Google Drive adlı bulut depolama hizmetinin içerisine alındı ve çok daha gelişerek yoluna devam etti. Google

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

KAMPÜS DIŞINDAN PROXY (VEKİL) AYARLARI İLE KAMPÜS AĞINA BAĞLANMAK

KAMPÜS DIŞINDAN PROXY (VEKİL) AYARLARI İLE KAMPÜS AĞINA BAĞLANMAK UŞAK ÜNİVERSİTESİ BİLGİ İŞLEM DAİRE BAŞKANLIĞI SİSTEM VE AĞ YÖNETİMİ KAMPÜS DIŞINDAN PROXY (VEKİL) AYARLARI İLE KAMPÜS AĞINA BAĞLANMAK 1- TANIMLAR Vekil (Proxy) : Bir ağa, o ağın dışından bağlanmak ve

Detaylı

BLGM 354 DENEY 1 * GİRİŞ

BLGM 354 DENEY 1 * GİRİŞ BLGM 354 DENEY 1 * GİRİŞ Amaçlar 1. Oracle istemcisi kurulumu 2. Veritabanı bağlantısı 3. SQL geliştirme ortamında çalışma Oracle İstemcisinin Kurulumu Oracle istemcisi bölümün FTP sunucusundan (ftp://ftp.cmpe.emu.edu.tr)

Detaylı

İNTERNET PROGRAMCILIĞI 2 14. HAFTA. PHP ile FORM İŞLEMLERİ. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Form Elemanları Kullanımı

İNTERNET PROGRAMCILIĞI 2 14. HAFTA. PHP ile FORM İŞLEMLERİ. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Form Elemanları Kullanımı İNTERNET PROGRAMCILIĞI 2 14. HAFTA İçindekiler PHP ile FORM İŞLEMLERİ Form Elemanları Kullanımı GET ve POST Metodu Hedefler Php komutları kullanarak form elemanlarını etkileşimli hale getirebilir Hazırlayan

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

w w w. e - t o p l u s m s. c o m

w w w. e - t o p l u s m s. c o m TANITIM KİTİ w w w. e - t o p l u s m s. c o m İÇİNDEKİLER Sayfa Başlığı Sayfa Numarası Ana Sayfa 2 Ana Sayfa» Numara Sepeti 3 Rehber» Kayıtlı Gruplar 4 Rehber» Kayıtlı Gruplar 5 Rehber» Excel İle Numara

Detaylı

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

Detaylı

NECMETTİN ERBAKAN ÜNİVERSİTESİ E-POSTA YARDIM BELGESİ

NECMETTİN ERBAKAN ÜNİVERSİTESİ E-POSTA YARDIM BELGESİ Zimbra Webmail GENEL ÖZELLİKLER Zimbra yüksek performanslı bir e-posta programı olup, e-posta, adres defteri, takvim, görev listeleri ve web dokümanları gibi özelliklere sahip bir uygulamadır. e-posta

Detaylı

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ; State Yönetimi State Yönetimi Web Page sınıflarının nesneleri, sayfa sunucu tarafına her defasında gönderildiğinde oluşturulur. Böyle bir durum sayfada kullanıcının girmiş olduğu ve sayfa ile ilişkili

Detaylı

T.C. HARRAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ YABANCI DİL SINAVI (İNGİLİZCE) İÇİN SORU ÇÖZÜM TEKNİKLERİ KURSU

T.C. HARRAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ YABANCI DİL SINAVI (İNGİLİZCE) İÇİN SORU ÇÖZÜM TEKNİKLERİ KURSU T.C. HARRAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ YABANCI DİL SINAVI (İNGİLİZCE) İÇİN SORU ÇÖZÜM TEKNİKLERİ KURSU 02 MART 2018 1. HESABINIZ Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Detaylı

MEB (K12) e-posta Sistemi Kullanımı

MEB (K12) e-posta Sistemi Kullanımı 1. Giriş Bilindiği üzere Bakanlığımız tarafından tüm kurumlarımıza POP3 destekli e-posta hesabı tahsis edilmiştir. Bu hesabı web tabanlı olarak kullanabileceğiniz gibi Outlook vb. gibi e-posta istemci

Detaylı

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu WEB TASARIM I Öğr. Gör. M. Mutlu YAPICI Ankara Üniversitesi Elmadağ Meslek Yüksekokulu Ders İzlencesi Hafta Modüller/İçerik/Konular 1. Hafta PHP Tanımı ve Sunucu Kurulumları 2. Hafta PHP Yazım Notasyonu

Detaylı

Katılımcı Portalı Kullanım Kılavuzu yatırımınızdan daha fazlasını almak için en etkili araç

Katılımcı Portalı Kullanım Kılavuzu yatırımınızdan daha fazlasını almak için en etkili araç Katılımcı Portalı Kullanım Kılavuzu yatırımınızdan daha fazlasını almak için en etkili araç Rakiplerinizden bir adım önde olun Profiliniz ile dikkat çekin Performansınızı ölçün İçerik Oturumunuzu açın

Detaylı

CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur?

CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur? CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur? CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Başlamadan

Detaylı

TC KİMLİK NO SMS GÖNDERİM SOAP API

TC KİMLİK NO SMS GÖNDERİM SOAP API TC KİMLİK NO SMS GÖNDERİM SOAP API İçindekiler 1. Bu Belgenin Amacı... 3 2. Belge Sürümleri... 3 3. Sistem Gereksinimleri... 3 4. Kullanım Şekli... 3 4.1. Genel... 3 4.2. Uyarılar... 3 4.3. Hata Kodları...

Detaylı

PHP 1. Hafta 2.Sunum

PHP 1. Hafta 2.Sunum PHP 1. Hafta 2.Sunum Hello World Bu derste görülecekler WAMP ve PHP Hosting kavramı ve bizi neden ilgilendirmediği Domain ve localhost kavramları www klasörü İlk PHP kodunun

Detaylı

T.C. HARRAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ

T.C. HARRAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ T.C. HARRAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ KULLANIM REHBERİ CANLI DERSLERE ERİŞİM (ÜCRETSİZ) CONNECT.HARRAN.EDU.TR DERS MATERYALLERİNE VE DERS KAYITLARINA ERİŞİM (5 TL) UE.HARRAN.EDU.TR

Detaylı

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür. 1 Apache Struts Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür. Kullanıcılara MVC mimarisini benimsetmek için Java Servlet API sini kullanıyor. Model-View-Controller

Detaylı

Mobil Cihazlardan Web Servis Sunumu

Mobil Cihazlardan Web Servis Sunumu Mobil Cihazlardan Web Servis Sunumu Özlem Özgöbek Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2010 İnternet erişiminin yaygınlaşması ve artık mobil cihazlar üzerinden bile yüksek hızlı veri iletişimine

Detaylı

İnternet Programcılığı

İnternet Programcılığı 1 PHP le Ver tabanı İşlemler Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz. 1.1 Veritabanı Nedir? Veritabanı

Detaylı

Google Search API ile ajax arama

Google Search API ile ajax arama Google Search API ile ajax arama 14 Ağustos Salı 12 http://mfyz.com/google-search-api-ile-ajax-arama Eğer bir kaynak arıyorsanız, indexlerin güncelliği, genişliği gibi nedenlerden dolayı, diğer arama motorları

Detaylı

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ Amaçlar 1. TCP protokolünün öğrenilmesi 2. Ağ programlamada kullanacağımız sistem komutlarının öğrenilmesi 3. Ağ programlamanın kavranması TCP ile veri alışverişi

Detaylı

Site Temizlik Projesi Kodları

Site Temizlik Projesi Kodları Site Temizlik Projesi Kodları Site Temizlik Projesi -2 nin kodları aşağıdadır. (İlgili site sayfasını önceki yazılarda bulabilirsiniz.) [crayon-5c2acf77c2a0b746634170/] İndir (DOCX, 15KB) İlk Hafta Sunumu

Detaylı

TC KİMLİK NO SMS GÖNDERİM XML API

TC KİMLİK NO SMS GÖNDERİM XML API TC KİMLİK NO SMS GÖNDERİM XML API İçindekiler 1. Bu Belgenin Amacı... 3 2. Belge Sürümleri... 3 3. Sistem Gereksinimleri... 3 4. Kullanım Şekli... 3 4.1. Genel... 3 4.2. Uyarılar... 3 4.3. Hata Kodları...

Detaylı

Kurulum 14 FTP ye Bağlanmak ve Dosyaları Atmak 14 Veritabanı Oluşturulması ve Bağlanıp Kurulumun Tamamlanması 15

Kurulum 14 FTP ye Bağlanmak ve Dosyaları Atmak 14 Veritabanı Oluşturulması ve Bağlanıp Kurulumun Tamamlanması 15 vii 1 İçerik Yönetim Sistemi Nedir? 2 WordPress Nedir? 2 WordPress Kısa Tarihi 3 WordPress Gücünü Nereden Alıyor? 3 WordPress ile Neler Yapabiliriz? 4 Kişisel Blog 4 Kurumsal Blog 4 Kurumsal Site 4 Tanıtım

Detaylı

Doküman JETSMS XML Mesaj Đşlemleri Yardım Dokümanı Tarih 15.02.2007 Sürüm 1.1.0

Doküman JETSMS XML Mesaj Đşlemleri Yardım Dokümanı Tarih 15.02.2007 Sürüm 1.1.0 HTTP SMS Gönderimi 1. Genel Kullanım Bu fonksiyonu kullanarak; Bir telefon numarasına tek bir mesaj gönderimi Birden fazla telefon numarasına aynı mesaj gönderimi -> tek seferde en fazla 150 telefon numarasına

Detaylı

ASSAM YÖNERGESİNE EK-T ASSAM WEB SİTESİ YÖNERGESİNE LAHİKA-2 WEB SİTESİ MAKALE EKLEME KILAVUZU 8.4.2014. www.assam.org.tr ASSAM

ASSAM YÖNERGESİNE EK-T ASSAM WEB SİTESİ YÖNERGESİNE LAHİKA-2 WEB SİTESİ MAKALE EKLEME KILAVUZU 8.4.2014. www.assam.org.tr ASSAM YÖNERGESİNE EK-T ASSAM WEB SİTESİ YÖNERGESİNE LAHİKA-2 WEB SİTESİ MAKALE EKLEME KILAVUZU 8.4.2014 ASSAM İçindekiler Önsöz... 3 ASSAM Web Sitesinde Makale Yayınlamak... 4 ASSAM Web Sitesine Nasıl Girerim?...

Detaylı

FireBug eklentisini eklentiyi yazan sitesinden veya FireFox un eklentiler indirebilirsiniz.

FireBug eklentisini eklentiyi yazan  sitesinden veya FireFox un eklentiler indirebilirsiniz. Firebug Hakkında Firebug hakkında... Kod yazarken bir sorunla karşılaşırız ve sorunlarla uğraşmak her ne kadar güzel bir şey olmasa da bu işin olmazsa olmazıdır. Kod yazarken muhakkak bazı sorunlarla karşılaşacağız,

Detaylı

Global Haberleşme API Kullanıcı Notları

Global Haberleşme API Kullanıcı Notları Global Haberleşme API Kullanıcı Notları Yazar : Global Haberleşme Son Değiştirme Tarihi : 2015-02-14 Not: API Dökümanının en güncel halini kullanınız. En güncel halini http://uye.globalhaberlesme.com/uploads/api_user.pdf

Detaylı

1. Temel Tanımlar. 1.1 Şematron Kontrolü Nedir? 1.2 Zarf Nedir? 1.3 Uygulama Yanıtı Nedir? 1.4 Sistem Yanıtı Nedir? 1.5 Durum Kodu Nedir?

1. Temel Tanımlar. 1.1 Şematron Kontrolü Nedir? 1.2 Zarf Nedir? 1.3 Uygulama Yanıtı Nedir? 1.4 Sistem Yanıtı Nedir? 1.5 Durum Kodu Nedir? İÇİNDEKİLER 1. Temel Tanımlar... 2 1.1 Şematron Kontrolü Nedir?... 2 1.2 Zarf Nedir?... 2 1.3 Uygulama Yanıtı Nedir?... 2 1.4 Durum Kodu Nedir?... 2 1.5 Etiket Bilgisi Nedir?... 2 2. Durum Kodları... 3

Detaylı

Web Tasarımı - Yrd. Doç. Devkan Kaleci 1

Web Tasarımı - Yrd. Doç. Devkan Kaleci 1 . onclick 2. onmouseover ve OnMouseOut 3. onload ve onunload 4. onsubmit 5. onreset 6. onfocus ve onblur 7. onchange 8. onabort, onerror 2 Bir olayın oluşması, mevcut durumda bir değişiklik olması anlamına

Detaylı

HATA YAKALAMAK VE AYIKLAMAK GİRİŞ HATA AYIKLAMA. Hata Yakalamak ve Ayıklamak

HATA YAKALAMAK VE AYIKLAMAK GİRİŞ HATA AYIKLAMA. Hata Yakalamak ve Ayıklamak GİRİŞ HATA YAKALAMAK VE AYIKLAMAK Görsel programlamada gerçekleştirdiğimiz projelerde üzerinde önemle durmamız gereken konulardan biri de hata yakalama ve ayıklama üzerine alacağımız tedbirlerdir. Programlama

Detaylı

Web Tasarımının Temelleri

Web Tasarımının Temelleri 1. Hafta Web Tasarımının Temelleri Öğr. Gör. Murat YAZICI www.muratyazici.com Artvin Çoruh Üniversitesi, Artvin Meslek Yüksekokulu www.artvin.edu.tr Formlar Kullanıcının da aktif olacağı dinamik web sayfaları

Detaylı

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, [email protected]. 3 Mayıs 2007

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, gokmen@pardus.org.tr. 3 Mayıs 2007 Python ve Web 2.0 Gökmen GÖKSEL, [email protected] 3 Mayıs 2007 Python Programlama Dili Nesneye Dayalı Çoklu Platform Desteği Kolay anlaşılabilir söz dizimi Birçok amaç için kullanılabilir; Konsol uygulamaları

Detaylı

Kurulum ve Başlangıç Kılavuzu. DataPage+ 2012 için

Kurulum ve Başlangıç Kılavuzu. DataPage+ 2012 için DataPage+ 2012 için Son Güncelleme: 29 Ağustos 2012 İçindekiler Tablosu Önkoşul Olan Bileşenleri Yükleme... 1 Genel Bakış... 1 Adım 1: Setup.exe'yi Çalıştırın ve Sihirbazı Başlatın... 1 Adım 2: Lisans

Detaylı

Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.

Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır. XML Genişletilebilir İşaretleme Dili (extensible Markup Language), hem insanlar hem bilgi işlem sistemleri tarafından kolayca okunabilecek dokümanlar oluşturmayı sağlamaktadır W3C tarafından tanımlanmış

Detaylı

ÇÖZÜM BİLGİSAYAR KOLAY RANDEVU RANDEVU WEB SERVİSLERİ YAZILIM FİRMALARI ENTEGRASYON KILAVUZU 22.12.2006. Sürüm: 1.0

ÇÖZÜM BİLGİSAYAR KOLAY RANDEVU RANDEVU WEB SERVİSLERİ YAZILIM FİRMALARI ENTEGRASYON KILAVUZU 22.12.2006. Sürüm: 1.0 KOLAY RANDEVU RANDEVU WEB SERVİSLERİ YAZILIM FİRMALARI ENTEGRASYON KILAVUZU 22.12.2006 Sürüm: 1.0 2006-2007 Çözüm Bilgisayar www.cozumbil.com.tr [email protected] İÇİNDEKİLER 1.GİRİŞ...3 1.1 GENEL

Detaylı

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı. 26 Şub. 2013 Öğr. Gör.

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı. 26 Şub. 2013 Öğr. Gör. Ders Tanıtım Sunumu Internet Programming II Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı 26 Şub. 2013 Öğr. Gör. Murat KEÇECİOĞLU PHP Nedir? Platformdan bağımsız (işletim Sistemi) dinamik web sayfaları

Detaylı

WEB E-POSTA AYARLARI. Outlook 2003 Ayarı ( Resimli Anlatım )

WEB E-POSTA AYARLARI. Outlook 2003 Ayarı ( Resimli Anlatım ) WEB E-POSTA AYARLARI Outlook 2003 Ayarı Outlook 2007 Ayarı Outlook 2010 Ayarı Gmail Ayarı Hotmail Ayarı Tüm Ayarlar İçin Gelen posta sunucusu (POP3) ve giden posta sunucusu (SMTP) ye bnposta.bingol.edu.tr

Detaylı

Hacettepe Üniversitesi Bilgisayar Müh. Bölümü 2005 Güz Dön. Bil 447 Yazılım Müh. Lab. Dersi Araştırma Çalışması. 1. Giriş Ajax nedir?

Hacettepe Üniversitesi Bilgisayar Müh. Bölümü 2005 Güz Dön. Bil 447 Yazılım Müh. Lab. Dersi Araştırma Çalışması. 1. Giriş Ajax nedir? Hacettepe Üniversitesi Bilgisayar Müh. Bölümü 2005 Güz Dön. Bil 447 Yazılım Müh. Lab. Dersi Araştırma Çalışması Mehmet İnal 20159752 Konu: Ajax 1 Giriş Ajax nedir? 1.1 Ajax'ın kullanım alanları 1.2 Avantajlar

Detaylı

ÖĞRENCİLER İÇİN UZAKTAN EĞİTİM SİSTEMİ (MOODLE) KULLANIM KILAVUZU

ÖĞRENCİLER İÇİN UZAKTAN EĞİTİM SİSTEMİ (MOODLE) KULLANIM KILAVUZU ÖĞRENCİLER İÇİN UZAKTAN EĞİTİM SİSTEMİ (MOODLE) eders.giresun.edu.tr KULLANIM KILAVUZU İçindekiler Sisteme Giriş Yapma... 2 Derslere Erişim... 3 Ders Kayıtlarına Erişim... 9 Eğitmene Ulaşma/ Mesaj Gönderme...

Detaylı

Tellcom.net.tr ve Quiknet.com.tr Eposta Servisleri Aktivasyonu

Tellcom.net.tr ve Quiknet.com.tr Eposta Servisleri Aktivasyonu Tellcom.net.tr ve Quiknet.com.tr Eposta Servisleri Aktivasyonu 1) http://webislem.superonline.net adresinden müşteri numarası ve şifresi ile giriş yapılır. Servislerim sekmesi altından Tellcom Posta menüsüne

Detaylı

Rugila Classification

Rugila Classification Rugila Classification Belge Sınıflandırma Yazılım Grubu Rugila Teknoloji Rugila Classification Belge Sınıflandırma Yazılım Grubu Rugila Classification Belge Sınıflandırma Yazılım Grubu, kurumların belge

Detaylı

MASTER PAGE SAYFASI KULLANIMI

MASTER PAGE SAYFASI KULLANIMI MASTER PAGE SAYFASI KULLANIMI Hazırladığımız Web sayfalarında sayfanın belli bölgelerinin sürekli sabit kalmasını istiyorsak ve bazı kısımlarının değişmesini istiyorsak Master Page Sayfası kullanırız.

Detaylı

SAĞLIK BAKANLIĞI RESMİ E-POSTA BAŞVURU ADIMLARI

SAĞLIK BAKANLIĞI RESMİ E-POSTA BAŞVURU ADIMLARI 1. BÖLÜM Bakanlığımızın resmi e-posta hesaplarına kayıt olabilmek için aşağıdaki resimlerde de görüldüğü üzere iki yol izleyebilirsiniz. http://www.saglik.gov.tr http://www.usaksaglik.gov.tr NURGÜL ERDOĞAN

Detaylı