6 Ocak 2011 Perşembe

~~JPA ve Jsf 2.0 ile Projem~~ 1.Jsf 2.0 da Template Oluşturma

Merhabalar, şu sıralar çalıştığım okul projesi beni canımdan bezdirdi. Nereye elimi atsam bir sorun nereye elimi atsam bir problem. Bu problemleri, günlerce araştırma ve çalışma sonucu çöze çöze ilerlemekteyim. Projemin sonuna yaklaştım. Benden sonrakiler aynı zorlukları yaşamasın diye, belki yararlı olur diye, yaptığım işlemleri başından itibaren blog'umda paylaşmaya karar verdim.

Gerekli teknolojiler
Eclipse in Helios 3.6.1 sürümünü sizde hangisi varsa
Mojarra 2.0 Jsf kütüphanesi // kesinlikle bulunmalı
Apache Tomcat 7.0.5 /6.0 da olabilir


*Öncelikle yeni bir Dynamic Web Project Açalım


*Karşımıza çıkan ilk ekranda projemizin adını girdikten sonra Configurasyon kısmındaki Modify seçeneğine tıklıyoruz.


*Çıkan ekranda şekilde görünen alanları işaretliyoruz. Jsf 2.0 kullandığımız için JavaServerFaces'in yanında 2.0 ın seçili olduğuna dikkat edin. Ok'e tıklayın Ben projemde Jpa bileşenleri kullanacağım için JPA configurasyonunu da ekledim.



*Daha sonra JPA configurasyonu yaptığımız için gelen JPA Facet sayfasında eğer hazırladığınız veritabanı ile önceden bağlantı kurmamışsanız. Add Connection'a tıklayın.



*Mysql' i seçip ve kuracağınız bağlantının adını yazarak ileri deyin.



*Daha sonra ilgili alanları doldurup veritabanı bağlantınızı kurun. JPA facet sayfasından next' e tıklayıp sonraki sayfaya geçin.




*JSF Capabilities sayfasında kullanıcı kütüphaneleri arasında eğer Jsf 2.0 Mojarra varsa yani önceden kurduysanız onu seçin yoksa da sağ taraftaki minik download simgesine tıkladığınızda, Jsf 2.0 kütüphanelerinin listelendiğini göreceksiniz. Majorra 2.0 jsf kütüphanesini aralarından seçip kolayca kurabilirsiniz.
Bu işlemde bittikten sonra finish'e tıklayın ve projeniz oluşsun.



*Projemizin WebContent klasörünün altındaki WEB-INF kısmına templates adında yeni bir klasör ekleyelim



*Templates klasörünün içine yeni bir xhtml  dosyası oluşturacağız bunun için new html file' ı seçin.



*İlk xhtml dosyamız header.xhtml dosya adını yazın ve next diyin.






*New facelet header seçeneğini seçin finish diyin.
header.xhtml 
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div style="width:100%;
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
font-size:36px;line-height:137px;background-color:#CCC;color:#009" align="center">*** jEclipse Sinema Rezervasyon Sistemi ***</div></body>
</html>

// div tagları arasını Dreamweaver da düzenleyebilirsiniz.






*Yine templates klasöründe footer.xhtml adında bi dosya yaratın ve bu sefer New Facelet Footer seçeneğini seçin.
footer.xhtml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<div style="width:100%;
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
font-size:20px;line-height:30px;background-color:#CCC;color:#333" 
align="center">copyRight 2011</div>
</body>
</html>






*Templates klasörünün içine bu sefer de BasicTemplate.xhtml adında bir dosya üretin ve New Facelet Template seçeneğini seçin.
BasicTemplate.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">        
      
<head>
  <title><ui:insert name="title">Facelets Tutorial</ui:insert></title>

</head>

<body  leftmargin="160" rightmargin="160"  text="#333333" style="font:'Trebuchet MS', Arial, Helvetica, sans-serif" bgcolor="#F5F5F5" link="#333333" vlink="#666666" alink="#333333" >
                                                                       
<div >
    <ui:insert name="header">
        <ui:include src="/WEB-INF/templates/header.xhtml"/>
    </ui:insert>
</div>
<div >
    <ui:insert name="menu">
        <ui:include src="/WEB-INF/templates/menu.xhtml"/>
    </ui:insert>
</div>

<div >
    <ui:insert name="content">
    </ui:insert>
</div>

<div >
    <ui:insert name="footer">
        <ui:include src="/WEB-INF/templates/footer.xhtml"/>
    </ui:insert>
</div>

</body>
</html>





*WebContent klasöründe index.xhtml adında yeni bir xhtml dosyası oluşturun bu sefer New Facelet Composition Page'i seçin.
index.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="WEB-INF/templates/BasicTemplate.xhtml"> // kullanacağımız template'in bulunduğu yeri gösteren satır. İstediğimiz sayfaya bu şekilde templateimizi çağırabiliriz. 
<ui:define name="content">
    <h1></h1>
    <h1></h1>
        
   jEclipse Sinemaları Online Sinema Rezervasyon Sistemine Hoşgeldiniz!!! <h1></h1>
jEclipse sinemaları uzun yıllardır sürdürdüğü hizmet kalitesi ve uzman personeli ile en çok tercih edilen sinemalar arasındadır.
Sistemimizde Bilet Sorgulama sayfasından istediğiniz gün ve seansa ait koltuk bilgisini sorgulayıp dilerseniz hemen satın alabilirsiniz. Ya da eğer rezervasyonu kaydedip daha sonra almayı tasarlıyorsanız. Size verilecek rezervasyon numarasını not edip. Daha sonra kararınızı verdiğinizde ya bilet satın alma sayfasından rezervasyonun numaranızı sorgulayarak ya da şubelerimizden, seansın başlamasına 2 saat kalana kadar satın alma işleminizi tamamlayabilirsiniz.
    
   
    *<p>&nbsp;</p>
    *<p>&nbsp;</p>

        
</ui:define>
</ui:composition>
</html>






















29 Aralık 2010 Çarşamba

2209 Tübitak Öğrenci Destekleme Projesi İçin Destek Arttırımı Hakkında

2209 Tübitak Öğrenci Destekleme Projesi  İçin Destek Arttırımı
Projemizde Tübitak tarafından bize verilen destek bizim için yeterli değildi. O yüzden bu desteği arttırmak için bir umut olarak; projemizde kullanacağımız tüm malzemelerin bir listesini yapıp internetten bulduğumuz fiyatlar ile birlikte, projenin toplam maliyetini hesapladık. Verilen destek haricinde cebimizden ödememiz gereken parayı da hesaplayıp projelerimizle ilgilenen kişiye tüm bunların dökümünü mail olarak attık. Öğrenci destekli bitirme projeleri ile ilgilenen kişi, bize bu tür projelerde destek miktarının arttırılmasının mümkün olmadığına dair bir mail attı. Bu biraz canımızı sıkmış olsa da bu projeyi elbette bırakmadık. Şu an yapımına devam ediyoruz bu proje ile ilgili de paylaşımlarım olacak. (10.10.2010)

Facelet Template Kullanımı Sorunu

Ülkemizde Java Programlama Dili'ni öğrenmeye çalışan tüm öğrenciler ve ilgili insanlar(kaç tane olabilir ki) büyük bir türkçe kaynak sıkıntısı çekmekte. Ben de bir süredir Java'da kendini geliştirmeye uğraş veren insanlar kervanına katıldım. Jsf, jpa ile Java'da Web uygulaması geliştimek için İbrahim Demir'in blog'unu takip ediyordum.

Bu sırada ben ve bazı arkadaşlarımın blog'daki dersleri takip ederken karşılaştığı ve çözmek için oldukça zaman harcadığı sorunlar oldu.

Karşılaştığım ilk sorun yazdığım beanlerdeki void metotları, jsf sayfası üzerinden çağırırken karşılaştığım "Method must have signature "String method()" but has signature "void method()" " warning'i oldu.
Bunu düzeltmek için yazdığımız void metodu String'e çevirip geri dönüş değerini de 'null' yapmamız gerekiyor. Metodu String tanımlamak projemizde performans kaybına neden olabilir ancak; siz de benim gibi bu hatalarla karşılaşmışsanız ve şu an bu yazıy okuyorsanız zaten öğrenme aşamasında olmanız kuvvetle muhtemel :). Ben şimdilik bu performans kaybı durumunu göz ardı ediyorum.

Bunlardan bir diğeri 'facelet ve xhtml' bölümündeki uygulamaları gerçekleştirmeye çalışırken hazırladığım template'i inatla diğer sayfalarımda görüntüleyememem oldu. Bunun çözümü için internette araştırmadığım yer ve yapmadığım şey kalmadı. Benden sonrakiler de aynı zorluğu yaşamasın değil mi ama :D. 

Sorun şu imiş ben Eclipse Helios 3.6.1 ile Majorra 1.2'yi  ve Apache Tomcat 6.0'ı kullanıyordum.
                           Eclipse Helios 3.6.1 ile Majorra 2.0 ve Apache Tomcat 7.0.5 i kullanmaya başladım şimdi uygulamalarım sorunsuz çalışıyor. Jsf kütüphanesi olan Majorra'nın 2.0 versiyonu 1.2'den biraz farklı olsa da bu farklar bize kolaylık sağlıyor. 

Bunun yanında eğer Eclipse Ganimede 3.4 kullanıyorsanız Majorra 1.2 ve Apache Tomcat 6.0 ile sorunsuz şekilde hazırladığınız template'inizi istediğiniz sayfaya çekebilirsiniz.