ÜYE GİRİŞİ  
Kullanıcı adı :
Parola :
 
  Üye Ol!  
 
 
ANASAYFA HABERLER ASP ASP.NET PHP C/C++ C# JAVA ARAMA İLETİŞİM

ASP.NET
  Expression Web ile Site Yapimi
  Web Server Control Yazmak - 2
  Web Server Control Yazmak - 1
  Sql Cache Dependency
  Web Kontrollerini Etkin Kullanmak
  Xslt Kullanımı
  Bir Web Sayfasının Anatomisi
  Client Script Callback
  Login Kontrollerinin Kullanımı

ASP
  ASP Nesneleri
  29 Soruda ASP
  Matematiksel Uygulamalar
  Select Case Yapısı 2
  Fonksiyon(Function) Kullanımı
  IF-ELSE...
  GET Yöntemi ile İşlemler
  Asp de Tarih ve Saat fonksiyonları
  While-wend döngüsü

C Sharp (C#)
  C#'da klasör işlemleri
  C# ile diziyi tersine çevirme
  Çok Kullanılan Kontroller-1
  C# ile Kronometre Uygulaması
  Overloaded Metotların Gücü
  C# ile XMLQuery Örneği
  Rastgele Kod Üretimi
  Kontroller ile Çalışma
  Düzenli İfadeler Nedir?

DUYURULAR

F# Microsoft dil teknolojisinin en yeni üyesi.Common Lisp-Slime-Emacs tarzında etkileşimli,kıvrak,sonuçların anında görülebildiği ve yüksek performanslı bir betik dil olarak özetleyebiliriz bu yeni dili. devamı >>


Türk Telekom'dan yapılan yazılı açıklamada, Telekomünikasyon Kurumu'nun onayladığı yeni tariflerin, internet servis sağlayıcı şirketlerin maliyetlerini önemli oranlarda düşüreceği aktarıldı. devamı >>


Servletler ile Web Sayfaları | Asundinay.Com
JAVA İçin Eklenmiş Makale
 Makale Adı  :  Servletler ile Web Sayfaları
 Yayın Tarihi :  22.08.2007 23:17:13 Ekleyen :  Kazım Aydın Okunma : 551

Düşünüyorumda, internet yayıldı yayılalı, dünyanın çehresi değişti. Internet’ in ilk yıllarında, sadece belirli sayıda sitede, basit html kodları ile oluşturulmuş sayfalar yer alırdı. örneğin mezun olduğum bölüme ait web sayfalarını o yıllarda bir arkadaşım bitirme tezi olarak sunmuştu. Sayfadaki tek atraksiyon, bölümün öğretim görevlilerinin isimlerine tıklandığında, onlar hakkında bir adet resim ve çeşitli bilgilerin bulunduğu metinsel ağırlıklı sayfalara giden linklerin yer almasıydı. Ha birde mail gönderebileceğimiz linkler vardı. O tarihlerde bu sayfayı arkadaşım notepad üzerinde html takıları ile gerçekleştirmiş ve tez ekibini oldukça etkilemişti.

Ancak kısa sürede internet üzerindeki web içeriği inanılmaz ölçüde çehre değiştirdi. Bugün müşteriye yönelik, şirketlere yönelik ve daha pek çok alanda geliştirişmiş sayısız internet sitesi var. Gelişen teknolojiler ile birlikte bu sitelerin, kullanıcıları ile olan etkileşimleride değişiklik gösterdi. öyleki, artık dinamik etkileşim söz konusu. Kullanıcının taleplerini işleyen ve cevaplar üreten, bu cevaplara göre sayfaların dinamik olarak oluşturulmasını sağlayan teknikler söz konusu. Aslında kısa bir süre düşününce gelinen noktanın gerçekten göz kamaştırıcı olduğunu söylemek lazım. Nitekim her ne zaman Amazon’ dan bir kitap almak istesem, baktığım ürünün yanında mutlaka, "bu ürünü alanlar bunlarıda aldı" gibisinden yönlendirici içerikler görmekteyim. Hatta bazen kişiye özel indirimlerin yapıldığıda oluyor. Bu dinamik etkileşime verilebilecek basit ve önemli örneklerden birisi aslında. çünkü, web sayfasının görünümü ve içeriği benim vermiş olduğum taleplere göre, dinamik olarak değişmekte. Benim için sayfada görünen tavsiye ürünler, başka bir kullanıcı için başka ürünler olabilir.

Peki acaba, dinamik etkileşimli web sayfaları nasıl geliştirilebilir? İlk olarak, dinamik etkileşimi gerçekleyebilecek en iyi şart güçlü, esnek bir programlama dilinin olmasıdır. Bugün itibariyle, ben bu tip işleri Asp.Net platformunda C# programlama dilini kullanarak gerçekleştirmekteyim. Acaba eskiden nasıldı? Kaynaklarımı araştırdığımda, ilk olarak perl dilinin cgi ile yan yana anıldığını keşfettim. Daha önce bu konular ile hiç uğraşmadığımdan tam olarak nasıl kullanıldıklarını bilmiyorum. Ancak dinamik etkileşime izin veren bir yapıyı sağladıklarını anlayabiliyordum. Nitekim, cgi sonrasında servlet, jsp, asp gibi modellerin çıkması, cgi’ ın bir takım sınırlamalarının olduğunu göstermekte. Bunu kaynaklarımdan kısaca araştırdığımda, cgi ile geliştirilen sunucu taraflı web sitelerinde, çökme probleminin daha sık yaşanmasına neden olabilecek bir tekniğin kullanıldığını öğrendim. öyleki, cgi ile geliştirilen bir web sitesinde, sunucu taraflı kodlama için genellikle perl dili kullanılarak yazılan programlam mevcut. Sayfaya yapılan her bir kullanıcı talebi için, bu programlar ayrı birer süreç oluşturacak şekilde çalıştırılıyormuş. Buda aynı anda siteye bağlanabilecek kullanıcı sayısında bir sınırlama getiriyormuş. Dolayısıyla, hastalığın tedavisi yine ve her zamanki gibi ilk olarak Sun firmasından servlet’ ler ile gelmiş.

Bir servlet aslında, java byte kodlarından oluşan bir sınıf nesnesinden başka bir şey değil. Sunucu taraflı olan bu nesneler, java dili ile yazılabildiğinden, web sayfasına müthiş bir programlama kabiliyeti getirmekte. Servlet’ lerin tek dezavantajı okuduğum kadarı ile, html içeriği ile kodların ayrı olarak yazılmasını gerektirmesi. Bu html içeriği ile sunucu taraflı kodların aynı asp sayfalarında olduğu gibi bir arada kullanılabildiği jsp’ lerin doğmasına yol açmış. Gerçi şu anda, Asp.Net ile uygulama geliştiriren sürekli olarak code-behind tekniğini kullanmaktayım. Yani web sayfasına ait htm içeriği ile, C# uygulama kodlarım tamamen farklı dosyalarda duruyor. Bu işimi dahada kolaylaştırıyor. Ancak tabiki servlet’ ler Asp.Net ortamında olduğu gibi bir takım kolaylıklar ve güçler kazandıramamış zamanında. Tabi bu noktada aklıma gelen soru jsp’ lerin servlet’ lere karşı bir üstünlükleri olup olmadığı. Gerçek şu ki, ikisi arasındaki tek fark kodlamaların yazılış yerleri.

Edindiğim bu kısa bilgilerin ardından hemen servlet’ lerin nasıl uygulandığını denemeye karar veriyorum. Lakin, bana gereken bir takım materyaller var. öncelikle, Asp.Net ile geliştirdiğim web sayfalarından biliyorum ki bana sanal bir web sunucusu lazım. İşte bu noktada devreye adını sıkça duyduğum, Apache Tomcat sunucuları giriyor. Lakin daha basit ve işin uzmanından bir çözüm var. JSWDK. Jswdk, aslında java servletlerini ve jsp sayfalarını barındırıp çalıştırabilen bir web sunucusu. Geliştiricisi ise tabiki Sun. Bu nedenle ilk olarak sistemime, JSWDK’ yı kurmam gerekiyor. Bu amaçla, Sun’ ın internet sitesinden,  http://java.sun.com/products/servlet/archive.html linkinden (bu gün itibariyle) JSWDK’ nın 1.0.1 versiyonunu indirdim.

Resmin büyük hali için tıklayın

Yaklaşık olarak 745 kb’ lık dosyanın windows versiyonunu bilgisayarıma indirdikten sonra, tek yapmam gereken zip dosyasını D sürücümün altına açmak oldu.

Artık servlet’ leri çalıştırabileceğim java web sunucum hazırdı. Lakin yapmam gereken bir takım ayarlar olduğunu öğrendim. Bunlardan ilki CLASSPATH ayarlamasıydı. CLASSPATH’ e henüz neden eklendiğini anlmayamadığım bir jar paketinin yolunu bildirmem gerekiyordu. Bu, Java geliştirme kitinin kurulduğu dizindeki, lib klasörü içindeki tools.jar paketi idi.

Java web sunucusunun, barındırdığı servletler ve web sayfalarını işleyebilmesi için öncelikle çalıştırılması gerektiğini, IIS (Internet Informatin Server) daki deneyimlerimden biliyordum. Sisteme kurduğum java web sunucusunu çalıştırabilmek JSWDK’ nın kurulduğu klasördeki ServersStart.bat isimli dosyayı çalıştırmam yeterli olacaktı. Bu amaçla bu batch dosyasını çalıştırdım. Bu işlemin ardından, komut satırında aşağıdaki ekran görüntüsünü elde ettim. Sanıyorumki web sunucusu çalışmaya başlamıştı.

Resmin büyük hali için tıklayın

Ancak elbetteki sunucunun çalışıp çalışmadığından bu şekilde emin olmak istemiyordum. Nitekim IIS sistemde çalışırken localhost’ u tarayıcı penceresinden talep ettiğinde sistemin çalıştığına ilişkin bir asp sayfası elde ediyordum. Biliyordumki benzer bir strateji java web sunucusu içinde uygulanmalıydı. Bu nedenle kaynaklarımı araştırmaya başladım ve tarayıcı penceresinde, http://localhost:8080/ adresini girdim. Aynen komut satırında bana söylendiği gibi. Sonuç tam istediğim gibiydi.

Resmin büyük hali için tıklayın

Artık java web sunucusunun çalıştığını biliyordum. Peki bunu nasıl durduracaktım. StartServer.bat dosyasının çalışması sonucu açılan komut penceresini kapattım. Daha sonra ise, tarayıcı penceresini kapatıp tekrar açtım ve http://localhost:8080/ sayfasını yeniden çağırdım. Ancak sayfa tarayıcıya gelmedi. Yani sunucu çalışması durmuştu. Bununla birlikte aynı işlemi StopServer.bat dosyasını çalıştırarakta gerçekleştirebilirdim. Artık, çalışan bir java web sunucum olduğuna göre basit bir servlet uygulaması yazabilirdim. Servlet’ ler teknik olarak, java byte-code dosyalarından ibaretti. Bu dosyalar, java web sunucusu çalıştırıldığında devreye giren JVM tarafından, sınıf olarak derleniyor ve taleplerin işlenmesi için kullanılan dinamik nesnelere dönüşüyordu. Aslında big picture’ ın servlet tarafındaki izahı aşağıdaki şekil ile basitde olsa ifade edilebilirdi.

İlk olarak, Frontpage ile aşağıdaki HTML kodlarından oluşan basit bir form sayfası yaptım. Amacım, kullanıcının bu sayfada girdiği verileri, bir servlet ile almak, işlemek ve bir sonuç sayfası üreterek kullanıcıyla göndermek.

<html>
<head>
<title>Alan Hesaplar</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<meta http-equiv="Content-Language" content="tr">
</head>
<body>
    <form action="http://localhost:8080/servlets/AlanHesap" method="get">
        <table border="1" cellpadding="5" cellspacing="0" width="17%" bordercolor="#800000" bgcolor="#FFCC66" id="table1">
            <tr>
                <td width="28"><font size="2"><b>En</b></font></td>
                <td width="44%"><input type="text" name="EN" size="11"></td>
            </tr>
            <tr>
                <td width="28"><font size="2"><b>Boy</b></font></td>
                <td width="44%"><input type="text" name="BOY" size="11"></td>
            </tr>
            <tr>
                <td colspan="2">
                <input type="submit" value="Alan Hesapla" name="B1" style="float: right"></td>
            </tr>
        </table>
    </form>
</body>
</html>

Oluşturduğum bu basit AlanHesaplar.html isimli sayfayı, java web sunucusunda çalıştırabilmek için, D:\jswdk-1.0.1\webpages klasörü altına kaydettim. Bu html sayfasındaki belkide en önemli nokta, Form’ daki submit butonuna basılması halinde, form bilgilerinin hangi adreste işleneceğidir. Bunun için,

<form method="get" action="http://localhost:8080/servlets/AlanHesap">

satırını kullandım. Burada açıkça görüldüğü gibi, java web sunucusu üzerindeki AlanHesap isimli bir servlet, bu formdaki verileri işleyecekti. Servlet’ ler, java web sunucusunda genellikle, D:\jswdk-1.0.1\webpages\WEB-INF\servlets adresinde tutulmaktaydı. Bende bu kuralı değiştirmedim. Şimdi, web sayfamdaki içeriği işleyecek ve talepleri karşılayacak, AlanHesap isimli servlet’ ime ait java byte-code dosyasını oluşturmam gerekiyordu. Bunun için, yine notepad editörü ile, D:\jswdk-1.0.1\webpages\WEB-INF\servlets klasörü altında, aşağıdaki kodlara sahip AlanHesap.java dosyasını oluşturdum.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.*;

public class AlanHesap extends HttpServlet
{
    public void doGet(HttpServletRequest talep, HttpServletResponse cevap) throws IOException,
ServletException
    {
        cevap.setContentType("text/html");

        PrintWriter cikti=cevap.getWriter();

        String en=talep.getParameter("EN");
        String boy=talep.getParameter("BOY");

        double eni=java.lang.Double.parseDouble(en);
        double boyu=java.lang.Double.parseDouble(boy);

        double alan=eni * boyu;

        cikti.println("<b>"+en+" x "+boy+" = "+alan+"</b>");

    }
}

Hemen kod satırından derleme işlemine geçtim. Ancak oda ne? 6 tane hata mesajı aldım. Tam anlamıyla yıkılmıştım.

Resmin büyük hali için tıklayın

Ancak hata koldarına baktığımda ve javax.servlet isimli paketin bulunamadığını anladığımda, ne yapmam gerektiğini biliyordum. Hemen, servlet isimli bir paket aramaya başladım. Neyseki, D:\jswdk-1.0.1\lib klasöründe bir tane vardı. Bu paket içinde, kodlarda kullandığım HttpServletResponse, HttpServletRequest, HttpServlet gibi sınıflar yer almaktaydı.

Hemen bu paketi CLASSPATH tanımlamalarımın sonuna aşağıdaki gibi ekledim.

Byte-Code dosyasını yeniden derlediğimde hatasız bir şekilde derleme işleminin gerçekleştirildiğini gördüm. Sayfamı çalıştırmak ve servlet’ in işleyip işlemediğini görmek için sabırsızlanıyordum. Lakin öncesinde neler yaptığımı anlamam gerektiğine karar verdim ve kod satırlarını incelemeye başladım. Herşeyden önce yazdığım uygulama bir servlet olacağı için, HttpServlet sınıfından türetilmişti. doGet metodunun ismi rastgele verilmiş bir isim değildi. Form üzerindeki bilgileri servlet’ e geçirirken metod olarak get tekniğini kullanacağımı belirtmiştim. Bu nedenle get tekniği ile çalışacak form sayfaları için doGet metodu kullanılıyordu. Eğer form üzerindeki bilgileri post tekniğine göre göndermek isteseydim bu durumda doPost metod ismini kullanmam gerekecekti. Elbette form üzerindeki method takısınıda post olarak ayarlamam gerekirdi. doGet metodu içinde iki önemli parametre yer almaktaydı.

public void doGet(HttpServletRequest talep, HttpServletResponse cevap) throws IOException,
ServletException

HttpServletRequest parametresi ile, kullanıcların tarayıcalarından gelen talepleri alabiliyordum. HttpServletResponse ilede, tarayıcılara cevap gönderebiliyordum. HttpServletRequest nesnesinin getParameter metodu ile, form üzerindeki EN ve BOY metin kutularına ait değerleri alabilmekteydim.

String en=talep.getParameter("EN");
String boy=talep.getParameter("BOY");

çıktı üretmek için, IO paketinde yer alan, PrintWriter sınıfını kullanıyordum. Bu sınıfa ait nesneyi oluştururken, HttpServletResponse nesnesinin getWriter metodunu kullanmaktaydım.

PrintWriter cikti=cevap.getWriter();

Böylece, PrintWriter nesnesinin örneğin println metodu ile, talepte bulunan tarayıcıya bir şeyler yazdırabilirdim.

cikti.println("<b>"+en+" x "+boy+" = "+alan+"</b>");

Az çok, servlet’ ler ile dinamik kodlamanın nasıl gerçekleştirilebileceğini anlamıştım. Elbetteki, servlet’ ler ile ilgili konuların daha derin olduğunu ve öğrenmem gereken daha pek çok şey olduğunu biliyordum. Bu düşünceler içerisindeyken, sayfamı test etmeye başladım. Sonuçta pek bir işe yaramayan bir çalışma olacağı kesindi. Ancak en azından bir tarayıcıdaki kullanıcı hareketlerini, sunucu taraflı kodlama tekniği ile nasıl ele alabileceğimi keşfetmiştim. Hemen sayfamı denemeye karar verdim ve tarayıcı pencereme aşağıdaki linki girdim.

http://localhost:8080/AlanHesaplar.htm

tabiki sayfa çalışmadı. çünkü, java web sunucusunu henüz çalıştırmamıştım. Hemen, StartServer.bat dosyası ile sunucuyu çalıştırdım ve tekrar sayfamı yükledim. Bu kez sayfam çalışmıştı.

Evet, şimdi forma bir şeyler yazıp servlet’ imin çalışmasını seyredebilirdim. İşte sonuç. Gümmmmmmm...

Resmin büyük hali için tıklayın

Ne olmuştuda, servlet bulunamamış ve çalıştırılmamıştı. Herşeyi tekrar tekrar gözden geçirdim. Kodlarda bir hata yoktu. Aksi halde uygulama derlenmezdi. Sonra servlet dosyalarını yanlış bir klasöre koymuş olabileceğimi düşündüm. Ancak bu da değildi. Bu arada kendime bir kahve daha yaptım ve evin bir ucundan diğerine yürümeye başladım. Bir yudum alıyor kendi kendime "alla allaaa" diyordum. Sonra tabiki dayanamayıp kaynaklarıma bakmaya karar verdim. Meğerse sorun s harfindeymiş. Eğer bu proje bir uzay programı olsaydı sanırım mekik bu s harfi yüzünden çoktan aya çarpmış olurdu. Adres satırındaki,

http://localhost:8080/servlets/AlanHesap?EN=Java24&BOY=Java24&B1=Gir

ifadesini,

http://localhost:8080/servlet/alanHesap?EN=Java24&BOY=Java24&B1=Gir

satırı ile değiştirdiğimde sorun çözülmüştü. Aradaki fark gerçektende tek bir s harfiydi. Servlet’ imi servlets isimli klasör altına atmıştım. Ancak sanal suncuda yazılan adreste servlets yerine servlet kullanmam gerekiyordu. Hemen giris.htm sayfasındaki kodu düzelttim. Bu kez başarmıştım. Servlet çalışmış, form üzerindeki bilgiler işlenmiş ve sonuç üretilmişti.

Resmin büyük hali için tıklayın

Artık servlet’ leri az çokda olsa anlamıştım. Sonuçta, web sayfalarının sunucu taraflı kısımlarında dinamik etkileşime izin veren kodlamalar java dili ile gerçekleştirildiğinden bundan sonra işim daha da kolaydı. Lakin kahvemin son yudumlarını içerken, JSP olayının ne olduğunu düşünmeye başladım. Sanırım önümüzdeki hafta JSP olayına gireceğim.


 

 

 


Kaynak : csharpnedir.com


 

Java İçin Eklenmiş Tüm Makaleler
Java İçin En Son Eklenen 5 Makale
 Makale Adı  :  Java ile Histogram Eşitleme
 Yayın Tarihi :  22.08.2007 23:24:42 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  JAVA İçinde Thread Kullanımı
 Yayın Tarihi :  22.08.2007 23:23:47 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Serialization İşlemleri 2
 Yayın Tarihi :  22.08.2007 23:23:08 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Serialization İşlemleri
 Yayın Tarihi :  22.08.2007 23:20:48 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  İlk Bakışta JSP
 Yayın Tarihi :  22.08.2007 23:19:53 Ekleyen :  Kazım Aydın Makaleyi Oku  

C/C++
  C ögreniyorum -8-
  C ögreniyorum -7-
  C ögreniyorum -6-
  C ögreniyorum -5-
  C ögreniyorum -4-
  C ögreniyorum -3-
  C ögreniyorum -2-
  C ögreniyorum -1-
  İlk C++ Programımız

JAVA
  Java ile Histogram Eşitleme
  JAVA İçinde Thread Kullanımı
  Serialization İşlemleri 2
  Serialization İşlemleri
  İlk Bakışta JSP
  Servletler ile Web Sayfaları
  Java ile Grafik Çizim
  Java, MySql Bağlantısı
  JBuilder ile Database

PHP
  php dersleri -1-
  php/access ile silme işlemi
  php ile access'e bağlanma - 2
  php ile access'e bağlanma - 1
  Döngü ve Diziler - BÖLÜM 5
  Döngü ve Diziler - BÖLÜM 4
  Döngü ve Diziler - BÖLÜM 3
  Döngü ve Diziler - BÖLÜM 2
  Döngü ve Diziler - BÖLÜM 1

İSTATİSTİKLER
  Toplam ziyaret :  24725
  Toplam üye sayısı :  1081
  Asp makale sayısı :  20
  Asp.Net makale sayısı :  54
  Php makale sayısı :  26
  C/C++ makale sayısı :  51
  C# makale sayısı :  29
  Java makale sayısı :  33
  Toplam makale saıysı :  213
Copyright asundinay® 2007 Her Hakki Saklidir
Tasarim & Programlama asundinay®