Kategoriler


SON YORUMLAR

1500 afiet olsun
Osman Gül
Sizce Maltepe Üniversitesi Bilgisayar mühendisi mezunu bir kişinin iş olanağı nedir acaba ve tahmini ne kadar maaş alır. yardımcı olursanız sevinirim.

elektronikçiler
Hakan
Bilgisayar mühendisleri sadece program ve yazılım yapıyorlarsa bilgisayarları kim yapıyor??? Yazıdan ben bunu anladım...
Ahmet Ba
çok faydalı. Teşeklkürler Admin
sahin
teshekkurler sade ve gozel izah ucun
bilgisayar mühendisi
13 yıldır sektördeyim. Bu bahsi geçen maaşları, ülkemiz koşullarında veren yerler parmakla sayılır.

eferin lan
Hüseyin
Ben daha yeni bu işe giriyorum ve araştırıyorumda hepsini örenin yazmısın bu kadar zamanım yok ve para gerekli hepsini birden çörenemem ne önerirsin
Mustafa Murat
Gayet açıklayıcı olmuş teşekkürler
Yasemin Akkuş
Makaleniz çok faydalı olmuş tecrübeli birinin yazdığı çok belli. ben yazılım stajı yapacağım Avrupada lise stajyeri alan yazılım şirketi arıyorum yardımcı olur musunuz? 05377386962
BEDIRHAN DEMIRBACAK
VALLAHA COK IYI ANLATTINIZ BEN BILGISAYAR MUHENDISI OLMAK ICIN SABIRSIZLANIYORUM BILGISAYAR MUHENDISLIGI COK IYI BIR MESLEK BENI FACEBOOK HESABIMDANDA YARDIMCI OLABILIRMISINIZ DAHA 9. SINIFA GIDIYOM TEŞEKKÜRLER
BEDIRHAN DEMIRBACAK
VALLAHA COK IYI ANLATTINIZ BEN BILGISAYAR MUHENDISI OLMAK ICIN SABIRSIZLANIYORUM BILGISAYAR MUHENDISLIGI COK IYI BIR MESLEK BENI FACEBOOK HESABIMDANDA YARDIMCI OLABILIRMISINIZ DAHA 9. SINIFA GIDIYOM TEŞEKKÜRLER
gözlüklü yazar kiz
merhaba bloguma yeni başladım. tavsiyelerinize uyacağım. teşekkürler... blogum; www.gozlukluyazarkiz.blogspot.com.tr

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
Java Dersleri 1: İlk Bakışta JSP (Java Server Pages)
Dünyanın En İyi 500 üniversitesi 2007 Sıralaması Açıklandı
Bilgisayar Mühendisliği ÖSS Taban Puanları 2009
DOKTOR GİBİ BİLGİSAYAR MÜHENDİSİ OLMAK
DOKTOR GİBİ BİLGİSAYAR MÜHENDİSİ OLMAK
DOKTOR GİBİ BİLGİSAYAR MÜHENDİSİ OLMAK
DOKTOR GİBİ BİLGİSAYAR MÜHENDİSİ OLMAK
DOKTOR GİBİ BİLGİSAYAR MÜHENDİSİ OLMAK
İSTANBULU SEÇİN!
Online Java Dersleri - Java NEDİR?
İSTANBULU SEÇİN!
İSTANBULU SEÇİN!
İş bulmak üzerine
İş bulmak üzerine
İş bulmak üzerine
Sıralamanız Ne?
Neden Bilgisayar Mühendisliği?
Vakıf üniversiteleri
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Sıralamanız Ne?

Bilgisayar Mühendisleri Portalı

Java Dersleri 1: İlk Bakışta JSP (Java Server Pages)

 

Bu hafta, JSP ile dinamik etkileşimli bir web sayfası oluşturmak için kendimi bayağı bir hırpaladım. Sorunlar, JSP olarak yazdığım örnek sayfaları, servlet’ leri çalıştırmak için kullandığım JSWDK kitinde baş gösterdi. Nedense hiç bir JSP sayfasını çalıştıramadım. Evin içinde bir o köşeye bir bu köşeye koşuştururken nerde hata yaptığımı bulmaya çalışıyordum. Sorun büyük bir ihtimalle benim sistemimden kaynaklanıyordu. Tabiki benimde yaptığım yanlış ayarlamalar olabilirdi. Sonuda kurcalaya kurcalaya güzelim JSWDK kitinide bozuvermiştim.

Ne yapabilirim diye düşünürken, aklıma parlak bir fikir geldi. Elimdeki kaynaklar JSP uygulamalarına ufak bir dokunuş yapmıştı. Ancak bu konuda esaslı bir kaynağım olması gerektiği inancındaydım. Her ne kadar amacım mimarinin temellerini ve çalışma sistemini anlayıp çok basit bir uygulama geliştirmek olsada, yinede elimin altında her zaman başvurabileceğim bir kaynak olması gerektiğini düşünüyordum. Bu düşünceler ile hemen yola koyuldum ve Kadıköy’ deki kitapçıları gezmeye başladım. Sonunda aradığım kitabı bulmuştum. Pusula yayınlarından Numan Pekgöz’ ün JSP isimli kitabı.

İşin güzel yanı, kitapta JSP sayfalarını kurup çalıştırabileceğim uygulamaların yer aldığı bir CD’ de mevcuttu. Büyük bir heyecan ile kiabı aldım ve yol boyunca otobüste okuyarak geldim. Eve geldiğimde, JSP sayfalarını çalıştırabileceğim JRun sunucusunun nasıl kurulacağını ve kullanılacağını çoktan öğrenmiştim bile. Hemen kitapta bahsedilen adımları, birer birer işlemeye başladım. JRun, şu anda Macromedia firmasına ait olan bir ürün olmakla birlikte kitabın bu sürümünde bir önceki verisyonuna yer verilmiş. Ama hiç önemli değil. Sonuçta JSP sayfaları çalışıyor. Kurulumu bitirdiğimde,

D:\Program Files\Allaire\JRun\

dizinine, java web sunucum kurulmuş, hazır ve nazırdı. Artık geliştirmek istediğim JSP sayfalarını

D:\Program Files\Allaire\JRun\servers\default\default-app\

klasörü altına atacaktım. Tabi kurulum basit olmasına rağmen yinede sistemde yapılması gereken ince ayarlamalarda vardı. Bunlarda birisi her zamanki gibi meşhur ClassPath tanımlamaları ile ilgiliydi. JSP sayfalarının başarılı bir şekilde işlenebilmesini sağlamak için,

D:\Program Files\Allaire\JRun\lib\ext\servlet.jar

adresindeki servlet.jar paketinin Classpath tanımına eklenmesi gerekiyordu. Bu işlemin ardından hemen ilk olarak aşağıdaki gibi basit bir sayfa oluşturdum ve bu sayfayı jsp uzantısı ile, D:\Program Files\Allaire\JRun\servers\default\default-app klasörü altına kaydettim.

<html>
<head>
<title>ilk jsp</title>
<body>
<%
String adim="Burak";
out.println(adim);
%>
</body>
</html>

Şimdi tek yapmam gereken, tarayıcı penceresinde, http://localhost:8100/ilk.jsp adres satırını girmekti. Bende öyle yaptım.

Şaka maka, ilk JSP sayfamı yazmıştım. Evet herşey iyidi hoştu ama, bu JSP nedemekti? Ne işe yarıyordu? Herşeyden önemlisi çalışma sistemi neydi? JSP ile ilgili tüm kaynaklarımdaki bilgilerimi şöyle bir gözden geçirdim ve büyük resme(big picture) ulaşmak için adımlarımı atmaya başladım.

Herşeyden önce, geçen hafta servlet’ ler yardımıyla, kullanıcı ile dinamik etkileşimli web sayfalarının nasıl gerçekleştirilebileceğini incelemiştim. JSP (Java Server Pages)’ lerde aynı işi yapmaktaydı. Aralarındaki farklılıkları düşündüğümde ilk akla gelen, JSP’lerde html içerik ile Java dilinin kullanıldığı sunucu taraflı (server-side) kodların bir arada bulunmasıydı. Öyleki servlet’ler ile çalışırken, java kodlarını kullanarak html çıktılarını üretmek gerçekten zahmetli bir işti. Açıkçası hammallıktı. Oysaki JSP’de html içerik ile java kodları aynı sayfada yer alabilmekteydi. Bu ise, tasarımın etkili olduğu, sunucu taraflı java kodları barındıran web sayfalarının kolayca oluşturulabilmesi demekti.

Bu fark önemsiz gibi görünsede, geliştirme zamanında oldukça büyük tasarruf sağlamakta. Yaklaşık olarak 8 saatlik bir JSP’ ci olarak bunu ben bile söyleyebiliyorum. Diğer yandan bence asıl önemli olan fark, JSP sayfalarının işleyiş şekli. Öyleki, oldukça ilginç bir durum söz konusu. O da, JSP’ lerin, istemciler tarafından talep edildiklerinde, eğer bu talep ilk kez gerçekleşmişse, java kodlarının, servlet’ler haline getirilmesi ve sınıf olarak derlenmesi. Yani, eninde sonunda yazılan JSP’ ler derlencekleri zaman işin içine servlet’ ler girmekte. Kısacası JSP’ler bizi servlet yazma derdinden kurtarıyor diyebiliriz. Ancak tabiki Jsp’ lerin servlet’ ler ile tümleşik olarak çalışmasıda söz konusu. Aslında Java sunucu sayfalarının çalışma prensibini aşağıdaki şekil ile daha iyi anlatabileceğime inanıyorum.

Jsp sayfalarının çalışma prensibi bu şekilde. Yani, kullanıcı bir JSP sayfasını ilk kez talep ettiğinde, sunucu bu talep üzerine ilgili JSP sayfasının java kodlarından bir servlet oluşturuyor. Bu servlet dosyası aslında bir java byte-code dosyası. Sonraki adımda ise byte-code dosyası class olarak derleniyor. Derlenen class, kullanıcıdan gelen parametreler vs... varsa bunlarla birlikte çalıştırılıyor ve üretilen sonuçlar html olarak tekrardan java sunucusuna gönderiliyor. Java sunucusu ise, bu html sonuçlarını kullanıcının tarayıcısına gönderiyor. Bu sistem, sadece oluşturulan Jsp sayfası kullanıcı tarafından ilk kez talep edildiğinde gerçekleştiriliyor.

Nitekim bundan sonraki çağrılarda zaten var olan derlenmiş class dosyları çalışıyor. Elbette biz Jsp sayfamızı değiştirirsek buradaki süreç tekrarlanacaktır. Peki bu teori gerçekten böylemi? Bunu bir şekilde ispat etmem gerektiğini düşündüm kendimce. Geliştirdiğim, ilk.jsp dosyasının aynısının farklı isimli bir verisyonunu oluşturdum. Yeni.jsp olarak. Daha sonra bu sayfayı tarayıcıdan talep ettim. Sonra, alt klasörleri gezinmeye başladım. Nemi arıyordum? İçinde Yeni kelimesi olan java ve class uzantılı dosyalar. Eğer bu dosyaları bulursam gerçektende teorinin çalışmasını ispatlamış olucaktım. Derken,

D:\Program Files\Allaire\JRun\servers\default\default-app\WEB-INF\jsp

klasöründe, bu dosyaları buldum.

Ancak bu ispatta eksik olan bir şeyler var gibiydi. Belkide ben Jsp dosyasını kaydettiğimde, bu dosyalar otomatik olarak oluşturulmuştu. İşte bu hipotezi yıkmanın tek bir yolu vardı. Yeni bir jsp dosyası oluşturacak, bu sayfanın oluşturuluş zamanını kaydedecek sonra bir kahve molası verecektim. Geldiğimde tarayıcıdan bu sayfayı çalıştıracak ve oluşan java ve class dosyalarının süresini, jsp dosyasının oluşuturuluş süresi ile karşılaştıracaktım. Bunun üzerine, Yeni.Jsp’ den bir kopya daha oluşturdum. YeniGibi.jsp.

Şimdi de kahve molasına çıkma zamanı. Neyse, kahve molasına çıkıp geldim. Bir kaç dakika sonra geldiğimde hemen, jsp klasörünün içine baktım.

Görünürde YeniGibi.jsp için oluşturulmuş java ve class dosyalarından eser yoktu. Derken tarayıcıda bu sayfayı tekrardan çalıştırdım ve jsp klasörüne tekrar baktım.

Artık ispat gerçekleşmişti. Jsp ler ile ilgili öenmli bir nokta, html sayfaları ile içiçe yazılabilmeleriydi. Aynı asp sayfalarında olduğu gibi. Tabi java ile yazılan bu sunucu taraflı kodlar, tam anlamıyla nesne yönelimli bir dilin avantajlarını kullandığından oldukça esnek ve güçlü sonuçlar elde etmemizi sağlamaktaydı. Peki içiçe çalışan bu sayfaların işleyişine yakından bakmak isteseydim nasıl bir şekli kafamda canlandırabilirdim diye düşünmeye başladım. Sonuçta aşağıdaki nacizane şema ortaya çıktı.

Bu şema aslında, Jsp’ nin bir avantajınıda göstermekte. O da, tasarım ve kodlama katmanlarının ayrı ayrı ele alınması. Yani, bir tasarımcı ve bir java programcısı kafa kafaya verdiklerinde, dünyanın en çok konuşulan etkileşimli web sayfalarını yazabilirler. Kodlamacı java dili ile sayfayı kodlarken, tasarımcı sadece görsel tasarım ile ilgilenecektir. Gerçi ben, Asp.Net ile gelen code-behind modelini bu modele tercih ederim. Nitekim oradada kod katmanı ve tasarım katmanı ayrıdır. Hatta o kadar ayrı olabilirlerki, code-behind tekniği sayesinde, aspx sayfalarına ati kodlar C# gibi nesne yönelimli bir dil ile ayrı sınıf dosyalarında toparlanabilir. Tabiki .net içindeki bu teknik servletlere nazaran, kod ve sunum katmanının daha iyi entegre çalışmasını sağlayan bir yapı üzerinde teşkil edilmiş.

Bu kadar laf kalabalığından sonra aslında işe yarar bir örnek yapmanın zamanı geldi. İşe yarar dediysem ufkumu açmak için teşebbüste bulunacak işe yaramaz bir uygulamdan bahsediyorum elbette. En azından, bir jsp sayfasındaki form bilgilerinin başka bir jsp sayfası tarafından ele alınmasını sağlamak gibi basit bir işlem gerçekleştirebilirim. Bu amaçla aşağıdaki kodları içeren jsp sayfalarını oluşturdum.

Giris.jsp sayfası;

<html>
<head>
<title>ilk jsp</title>
<body>
<form name="form1" method="post" action="kontrol.jsp">
<table width="200" border="0">
<tr>
<td>Ad</td>
<td><input type="text" name="tAd"></td>
</tr>
<tr>
<td>Soyad</td>
<td><input type="text" name="tSoyad"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</form>
</body>
</html>

kontrol.jsp

<html>
<head>
<title>Giriş</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="200" border="0">
<tr>
<td><strong><%=request.getParameter("tAd")%></strong></td>
</tr>
<tr>
<td><strong><%=request.getParameter("tSoyad")%></strong></td>
</tr>
</table>

</body>
</html>

Yazdığım kodlarda tek göze çarpan nokta, form’ daki field’ lara ait değerleri, kontrol.jsp dosyasında, request sınıfının getParameter metodu ile alıyor oluşumdu. Hemen, giriş.jsp sayfasını sunucuda çalıştırdım ve bilgileri girip buton kontrolüne bastım. Sonuçta, kontrol.jsp sayfam çalıştı ve aşağıdaki ekran görüntüsünü elde ettim.

Jsp oldukça geniş bir konu ve incelenmeye değer. Şu an için çalışma prensibini, en büyük avantajını ve nasıl geliştirildiğini biliyorum. Ancak elbetteki bir kaç günlük çalışma ile Jsp’ ye hakim olamam. Hiç olmassa ilk bakışta göze çarpan noktaları irdelemiş oldum.

Bu kahve molamız ile birlikte Java ile 24 Kahve Molasının’ da sonuna gelmiş bulunuyoruz. Ancak bunun bir son olmadığını hatta bir başlangıç olduğunu söylemek isterim. Nitekim değinemediğim pek çok konu var. Örneğin değerli bir okurumuzun belirttiği gibi ağ programcılığı. Bunun dışında, thread’ ler, koleksiyonlar (torbalar), IO (Input-Output) işlemleri vb... Dolayısıyla bu konularada değinmek ve incelemek düşüncesindeyim. Bundan sonrasında, her cuma olmasa bile düzenli olarak bahsettiğim konuları inceleyecek ve yazmaya çalışacağım.

Umuyorum ki bu yazı dizisinde sizlere Java dilini bir nebze olsun öğretebilmişimdir. Ben bir şeyler öğrendim. Ama elbetteki öğreniklerimi tekrar etmessem, gerçek projelerde kullanmassam kolayca unutabilirim. Sizlere de tavsiyem bol bol tekrar etmeniz ve projeler geliştirmeniz olacaktır. Hepinize mutlu ve sağlıklı günler dilerim. Salıcakla kalın.

Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

mete(07.12.2009 03:41:55)
Daha ismini bile yazamayacak kadar korkak ve aşağılık son yorumcuya hitaben...

Makale yazmak gerektiği gibi yapılırsa insanları doğru yönlendirir. Aksi halde burada oldugu gibi eski tip kullanışsız yaklaşımlarla soru işaretlerini arttırır. Bir diğer nokta ise abuk sabuk sağdan soldan çevirilerle yazılan kitapları şartlı şekilde refere ederek ticari bir yönlendirmede yapması. Söz konusu kitabı inceleyen biri olarak kati süretle alınmaması gerektiğini söyleyebilirim.

Sonuç olarak ilk yaptığınız servlet uygulamasında ustaymışcasına makale yazılmaz. bloglarda benzer şeyleri arayanlara response vermeye benzemez buiş.

Etraflıca bilgi ve deneyim gerekir. Aksi halde işte burda oldugu gibi seviyesiz düzeysiz yorumlara mazur kalır ve makaleyi büyük ihtimalle yazan da fikirlerini söyleyenlere gereksiz itamlarda bulunur.

Önerim; yanlış yönlendirip sonra eleştirilere saldırmayın, emin olmadan, iyi bilmeden makale yazmayın.
%42 %3 %55
Katılıyorum Çekimserim Katılmıyorum



(29.11.2009 00:45:34)
adam oturup emek vermiş yazmış sizde bok atacağınıza bir makalede siz yazın sizde spring struts stripes tapestry xfroms anlatın çok bilmiş baylar. yada bu saçmalıklarla kafanızı yormayın hiç çünkü tonla framework turuyor. emeğe saygı duymayan aşşağılık herifler.
%79 %0 %21
Katılıyorum Çekimserim Katılmıyorum



ali(29.11.2009 00:11:42)
Ha ha ha. mete ye aynen katılıyorum. jsp servletmi kaldı ki bide saçma sapan bir basitlikte yazılmış bir makale. Şu kitabı yazanda bu makaleyi yazanın annesi heralde :D
%35 %0 %65
Katılıyorum Çekimserim Katılmıyorum



mete(29.11.2009 00:05:13)
Dandik oldugu kusku goturmez bir kitabın tanıtımı olmuş. Yayınlanma tarihini bilmemekle birlikte html tarafı dahi çok eskide kalmış. Tagler retro..
eski asp mantığı ile yazılmış bir sayfa. Bari kontrolu aynı sayfada yaparak bir estante olsaydı, oda yok.. Servlet içinse bukadar evde dolanıp duracağına keşke netbeans ya da eclipse gibi bir ide de deneseymişsin. 2 dakikada hallederdin.. Sonuç olarak çok zayıf ve eskide kalmış. Yanlış yönlendirirsin bu makale ile yeni başlayanları. Bunun siteden acilen kaldırılmasını oneriyorum..
%45 %0 %55
Katılıyorum Çekimserim Katılmıyorum



abcdef(17.11.2009 15:34:20)
JSP nin anlatımını daha detaylı olarak anlatılması, Örnek bir proje üzerinden takibinin yapılmasının daha uygun olacağı kanatindeyim. Gereğinin yapılmasını rica ederim...
%62 %8 %31
Katılıyorum Çekimserim Katılmıyorum



erhan(28.09.2009 10:42:42)
Selam Jsp derslernizin devamı merakla bekliyoruz emeğinize sağlık teşekkürler...
%83 %0 %17
Katılıyorum Çekimserim Katılmıyorum





Yazılan yorumlar tek sayfaya sığmadı. Daha fazlasını okumak için aşağıda sayfa numarasına tıklayın:
1   > 2 

Copyright© 2001-2017. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.