1- JAVA SERVER FACES(JSF)


JSF (JavaServer FacesJEE uygulamalarında kullanılan Java servlet, java server pages
( JSP) , Struts, Apache Wicket gibi, JSF te web uygulamalarının arayüzünü inşa etmek için
oluşturulan, yeni nesil web uygulama çatısı,Javanın standart web frameworküdür.JEE
uygulamalarında web arayüzleri oluşturmak için Java servlet, java server pages(JSP) , Struts,
Apache Wicket gibi çok sayıda framework bulunur(Tabi web uygulamalarında çığır açan java
appletlerini de unutmamak lazım). JSF de bunlardan bir tanesidir. JSF ,JSP ve Servlet‟ların
üzerine kurulmuştur.Bu var olan teknolojilerle MVC yaklaşımını birleştirir.




                                 Şekill – 3 : Jsf Mimarisi-1
Temel olarak; uygulama mimarisi, standart kullanici arayüzü(UI) seti ve uygulama altyapısı
olmak üzere 3 katmandan oluşmaktadır.
JSF‟nin bileşen altyapısı, kullanıcı arayüzü bileşenleri oluşturmak için ortak bir yol tanımlar.
Bu mimari standart JSF I bileşenleri(hyperlink, button, secme kutulari, text alanlari gibi)
yaninda, üçüncü parti bileşenleri için de bir ortam oluşturur.
Bileşenler olay tabanlıdır, dolayısıyla JSF istemci tarafında oluşan olayların (örnegin text-
box‟in degerinin degiştirilmesi ya da butona tıklanmasi gibi) işlenmesini sağlar.
Şekill – 2 : JSF MİMARİSİ-2
Web uygulamalarinin masaüstü olanlardan farkli olarak genellikle birçok istemciye destek
vermesi gerektiğinden, JSF‟ in de kullanıcı arayüzü bileşenlerini değisik yollarla göstermek
için güçlü bir mimarisi bulunmaktadır. Kullanıcı girişinin “validate” edilmesi, nesneleri
göstermek icin nesnelerin string‟e dönüştürülmesi veya string‟den nesne oluşturulması gibi
özelliklere sahiptir. Java Server Faces ya da diğer adıyla “Faces”, otomatik olarak UI
bileşenleri ile giriş değerlerini tutan ve cevap üreten Java nesnelerini senkron halde tutabilir.
Bu nesnelere “backing beans” adı verilir. Ayrıca güçlü bir navigasyon sistemi ve çoklu dil
desteği bulunur. Her yeni sistem için gerekli temel yapıtaşlari olan bu özellikler JSF‟nin
uygulama altyapisini olusturur.JavaServer Faces tool destegi icin altyapiyi tanimlarken
ozellestirilmis tool‟larin gelistirilmesi, Java‟da oldugu gibi yazilim firmalarina birakilmistir.
Fakat Faces uygulamaları tasarım araçları olmadan da geliştirilebilmektedir.
Jsf Diğer java web teknolojilerinden Struts ile beraber kullanılabilir.Biz projemizde Struts ın
File Download ve File Upload özelliklerini kullanmaya çalıştık ama daha sonra nedenini
bilmediğimiz bir sorun nedeniyle Struts ile Jsf ibirlikte kullanma fikrinden vazgeçtik.
Struts ve Jsf birlikte kullanılabilir.Struts ın farkı UI bileşen modeli içermiyor, UI bileşen
modeli içinolay modeli içermiyor,UI bileşenleri için durum yönetimi içermiyor ve birden çok
renderer desteği içermiyor.Struts html ile biraz daha birbirine yakın ve iç içedirler.
JSF MVC mimarisini de destekler.Hatta JSF‟nin ortaya çıkmasındaki en büyük etkende
JSP‟nin MVC‟yi kendi içerisinde destekleme konusundaki sıkıntılarıdır.MVC(Model-View-
Controller) basitçe iş ve sunum mantığının birbirinden ayrılması olarak düşünülebilir. MVC ;
adını Model - View - Controller 'in baş harflerinden alan tasarım desenidir.Sunduğu katmanlı
mimari sayesinde, uygulamanın kullanıcı arayüzü ve mantık kısmını birbirinden ayırır.
Model: İş mantığı (Business Logic) bölümüdür. Tek katmandan oluşabileceği gibi, birden
fazla katmanı da içinde barındırabilir. Tek katmandan oluştuğunda genelde veritabanına kayıt
ekleme, kayıt çekme, kayıt silme vb. veritabanı işlemleri için kullanılır. Controller'den gelen
değerleri işler ve geriye döndürür. Model katmanında herhangi bir output işlemi yapılmaz.

View: Uygulamanın kullanıcıya gösterilen arayüzünün bulunduğu katmandır. Html,
Css,Javascript vb. bu katmanda bulunur. Bu bölümde minumum php kodunun yazılması
hedeflenmektedir. for, foreach, while vb. döngüler ile birlikte, dinamik değerleri ekrana
yazdırmak için output komutları sıklıkla kullanılır.
Controller:Uygulamanın karar mekanizmasıdır. Model ile View arasında köprü görevi görür.
View katmanından gelen istekleri(request) model'e gönderir ve Model
 katmanındanaldığı verileri view e aktarır.




                                  Şekill – 3 : JSF ve MVC
Jsf in ,uygulamaların altsistemlerine (Enterprise Javabeans servisleri yada veritabanı gibi)
entegre olabilir.
 JSF ek olarak daha az efor sarfederek daha güçlü web uygulamaları hazırlamak için birçok
servis sunmaktadır.Java ServerFaces‟in esas amaci web gelişimini hızlandırmaktır.Uygulama
geliştiricilerin istekler(requestler), cevaplar ve markup dili yerine bileşen, olay, “backing
bean” ve bunların ilişkileri şeklinde düşünmelerini sağlar.
Baska bir deyişle web uygulama geliştirmedeki birçok karmaşıklığı maskeleyerek, sadece
maskeleyerek, sadece uygulama geliştirmeye odaklanılmasını sağlar.JSF her şeyden önce bir
Java standardıdır.Bunun yanında sektördeki IBM, Oracle gibi önemli firmalar JSF‟i
desteklemektedir.Farklı JSF implementasyonları-bulunduğundan projenin gereklerine göre
geliştirme için seçim yapabilme özürlüğü sağlamaktadır.JSF„in component olarak
bazı eksikleri vardır. Bu eksikleride diğer (richfaces vs..) componentler kullanılarak
doldurmak mümkündür.Zaten JSF deki amaç bütün ihityaçları karşılama değil güzel bir
altyapı hazırlamaktır. O yüzden eksikler konusunda çok fazla endişelenmeyin , herşeyin bir
karşılığı vardır ve rahatça iç içe kullanarak işlemlerinizi yapabilirsiniz.
Jsf‟in çok sayıda 3.parti bileşen kütüphanesi vardır.bunlara örnek olarak Richfaces, Icefaces,
Primefaces,Trinidat ve Tomahawk gösterilebilr.Bu 3. Parti bileşenlerinin temel amacı Ajax
tabanlı zengin bileşen kütüphenesi yaratmak ve çeşitli JSF eklentileri yardımıyla uygulama
geliştirmeyi kolaylaştırmaktır.Biz projemizde bu bileşenlerden PRİMEFACES i
kullandık.Primefaces bişr türk olan Çağatay ÇİVİCİ tarafından geliştirilmiş olup kendi
klasmanında lider konumdadır.



                                     2-PRİMEFACES




PrimeFaces.Nedir?
İlk önce PrimeFaces'in ne olduğu açıklamak daha doğru olur diye düşünüyorum. PrimeFaces
JSF 2.0 için bir çok ajax bileşeni barındıran açık kaynak bir bileşen paketidir(Component
Suite).Türlü türlü işlevlere sahip çeşitlibileşenlere sahip olmasının yanısıra, standart JSF2.0
Ajax API‟sine dayanan Ajax desteği vardır.Ayrıca TouchFaces modülü ile akıllı telefonlardan
kullanılabilecek web uygulamaları kolaylıkla geliştirilebilir.İlk olarak 2009 haziran ayında
0.9.0 sürümü ile yayımlanmış olan Primefaces‟ın , şu anki son sürümü 2010 kasım ayında 2.2
RC‟ sürümüdür şimdilerde ise Primefaces‟ 3.0 deneme aşamasındadır fakat tam sürüm henüz
çıkmamıştır.Şu an en son sürüm içinde barınan bir çok kullanışlı ve estetik özellik
bulunmaktadır. Bunlar; otomatik tamamlayıcılar, dosya upload, video-müzik
oynatıcıları,menüler, takvim, galeri, input filtreleri ve daha bir çok bileşen. PrimeFaces'ı diğer
ajax bileşen paketlerinden üstün kılan özellikleri düşünecek olursak; estetik ve esnek tasarım
imkanı sağlaması, çok sayıda bileşen içermesi, mobil arayüz desteği, döküman desteğinin
diğerlerinden daha iyi olması olarak sayabiliriz.


                         JSF PRİMEFACES CONFİGURASYONU
Primefaces‟ii kullanabilmek için http://www.primefaces.org/downloads.html adresinden
PrimeFaces‟in son sürümünü indirip projemizin WebContent/WEB-INF/lib dizinine atıyoruz.
Şu anda son sürüm primefaces-3.0.jar ama biz 2.2.1 sürümü dosyasını lib dizinine
yerleştirdim. PrimeFaces‟ın JDK 5+ runtime ve JSF 1.2+ gerçekleştirimi dışında herhangi bir
bağımlılığı bulunmuyor. Yalnızca, bazı özelliklerini kullanabilmek için ek kütüphanelere
ihtiyaç duyabiliyor.
Netbeans‟teki projemizin Libraries kısmına sağ tıklayıp
  LİBRARİES->Add JAR /Folder seçeneğinden daha önce indirdiğimiz

     * primefaces-2.2.1.jar
      *jsf-api.jar
      *jsf-impl.jar
dosyalarını projemize eklersek        primeface eklentilerini rahat bir şekilde projemizde
kullanabiliriz.
Şekill –4:Prifaces 2.2.1 Ekleme




Biz projemizde PrimeFaces 2.2.1 i kullandık. PrimeFaces'ı sayfalarımızda kullanmak için "p"
isim uzayını(namespace) kullanıyoruz. Sayfamızın en üstünde bulunan isim uzaylarının
yazıldığı html tagına aşağıdaki isim uzayımızı ekleyelim.

        xmlns:p="http://primefaces.prime.com.tr/ui"




                         Şekill – 5 :HTML sayfası eklentisi


PrimeFaces‟i çalıştırmadan önce birkaç küçük ayarlama yapmamız gerekiyor. JSF 2.0‟da
göre PrimeFaces 2.x‟in ayarlama işlemlerini de halledip ilk PrimeFaces denememize
geçmeye az kaldı. İlk olarak Resource Servlet için gerekli ayarlamayı web.xml dosyamıza
aşağıdaki kod parçasını ekleyerek halledmemiz gerekiyor .
Şekill – 6 :Web.xml Dosyası ayarı
PrimeFaces‟i Servlet 3.0 ortamında kullanıyorsanız, bu ayarlamayı yapmanız gerekmiyor. Biz
Primeface 2.2.1 kullandığımız için Mojarra 2.x için bir ayarlama daha yapıyoruz. web.xml‟e
aşağıdaki girdiyi eklememiz gerekiyor




                        Şekill – 7 :Web.xml Dosyası ayarı-2
Primefaces özelliğini kullanabilmek için HTML taglarının başına p: yazmamız gerekiyor.

Kullandığımız bazı Primefaces özelliklerinden bahsedecek olursak




                            PRİMEFACES ÖRNEKLERİ

Primefaces EDİTÖR
Projede Primefaces Editör‟ü birçok yerde kullandık ben sadece ARAŞTIRMALARIM
sayfasına veri eklerken açıklma bölümü için kullandığımız Primefaces editöründen
bahsedeceğim.Editör normal bir text şeklinde açıklama girmek için yukarıda yazı sitili vs gibi
bir çok özellik ve seceneği bulunan bir Primefaces özelliğidir.Buradan alınan veriler Mysql
veritabanına kayıt edilir ve daha sonra buradan tekrar çekilerek istediğimiz html sayfasında
gösterilmesi sağlanır.




                             Şekill – 8 :Primeface Editör




Yukarıdaki kod parçasında gösterildiği gibi <p:editör diye yani “P” tagın başına yazarak
Primefaces‟i etkinleştiriyoruz ve sayfamızda kullanabiliyoruz.Primeface bize hem kolaylık
sağlıyor hemde sayfamızın daha afili durmasını sağlıyor.

Primefaces EDİTÖR‟ü kullanırken bazı problemlerle karşılaştık bunlardan bir tanesi editöre
girdiğimiz veriler veritabanına <div> / <br> gibi html taglarınıda içeriyordu ve aynı şekilde
kullanıcı sayfasında gösterirken de aynı şekilde html taglarını da gösteriyordu.
Şekill – 6 :HTML tag ” escape=false”

 Bu problemi <h:outputText />“ e escape=”false” özelliğini ekleyerek veritabanıdan çekilen
bilgilerdeki <div> vb.. tagları temizleyip kullanıcı ara yüzündeki sayfaya o şekilde basmayı
sağladık.

PRİMEFACES CALENDAR
Primafaces uı eklentilerinden bir tanesi de calendar extender‟dir yani takvim




                            Şekill – 9 :Primeface CALENDAR

Takvim klasik bir özellik ama sitede bulunsun diye projemize ekledik asp.net ve php de bu
özellikler zaten frameworkta bulunduğu için bu gibi özellikleri eklemek çok kolay .
JSF‟ te ise bunu yapmak ancak Primefaces gibi 3.parti bileşen kütüphaneleri yardımıyla kolay
bir hak alıyor. Calendar extenderinde projeye eklenmesi diğer Primefaces bileşenlerindeki
gibi önce Primefaces ın bize sağladığı kod parçasına projemize uyarlamak ve bir java class‟ı
içerisine yerleştirmek ve daha sonrada bunu xhtml sayfası içerisinden çağırmak.




Yukarıdaki şekilde görüldüğü gibi <p:calendar …. /> yazıp içeridede bazı özelliklerini
istediğimiz gibi ayarlayabileceğimiz bir eklenti.



PRİMEFACES FileUpload
JSF in özel bir file upload özelliği olmadığı için ya projeye STRUTS ekleyip struts ile yada
3.parti bileşen kütüphaneleri(Richfaces,Primefaces gibi) yardımıyla dosya(pdf,exel,text vb)
ekleyebiliriz.Biz bunu JSF in Primeface 3.parti bileşen kütüphanesiyle yaptık.
Kısaca anlatacak olursak;
 http://www.primefaces.org/showcase/ui/fileUploadAuto.jsf adresinden file upload ile alakalı kodları
inceleyip projemize uyarlarsak yani bir java class’ı içerisine bu kodları ekleyip parametrelerini
kendimiz ayarlarsak;

WEB:XML dosyasınının alt kısmına aşağıdaki kod parçasını eklersek.




                    Şekil–10 :Primefaces FileUpload XML Konfigurasyon

Daha sonra FileUpload kodlarını java class‟ının içine uygun bir şekilde yerleştiriyoruz.
DersİcerikEkle.java class‟ı mızın içine                       adında bir metod tanımladık ve
“Fileupload event” parametresiyle ve         event.getFile().getFileName(); yükleyeceğimiz
doayanın adını alıp veritabanına dosya yolunu kaydetmek için kullanıyoruz.




Burada dosya adını aldığımızdan bahsettik dosya adını almak için bu adın bir yerden
gönderilmesi gerekir.bu class‟a dosya adı Admin_DersNotu_Ekle.xhtml sayfasından
Primefaces‟in Fileupload özelliği sayesinde gönderiliyor.
Şekil–12
                    :Primefaces FileUpload XHTML Konfigurasyon
Yukarıdaki kod parçasında görüldüğü gibi

<p:fileUpload fileUploadListener=”#{dersİçerik.handleFileUpload}” koduyla Primefaces
fileUpload özelliği java class‟ına parametre gönderiyor yani yüklenecek dosya adını
gönderiyor ve dosya yükleme işlemi bu şekilde gerçekleştiriliyor.

PRİMEFACES FİLEUPLOAD
Projemize daha önce eklemiş olduğumuz dökümanları indirebilmek için FileDownload a
ihtiyacımız vardır.bunu yine STRUTS ile projemize dahil edebiliriz ama biz yine jsf 3.parti
bileşen lerinden olan PRİMEFACES‟in FileDownload özelliği ile yaptık ve projemize dahil
ettik.

Önce http://www.primefaces.org/showcase/ui/fileDownload.jsf sitesine girip FileDownload

İçin Primefaces‟in yaptığu uygulamaya göz atarsak önce xhtml kısmı ve java class‟ı içinAyrı
ayrı ne yapılması gerektiini anlatıyor.Biz buradaki kodları projemize uyarladık.
Önce KullaniciDersİcerik.xhtml sayfasına aşağıdaki gibi

<p:fileDownload value”#{derslerSecme.Mahmut(‘Odev’,3,3)”}/>

Primeface FileDownload ile dosya indirme özelliğini kullanarak Java class‟ı olan

derslerSecme.java‟ya xhtml‟den üç tane parametre gönderiyoruz.Gönderdiğimiz bu
parametreler yardımıyla veritabanından gerekli sorgulamalar yapıldıktan sonra indirmek
isteğimiz dosyaya ulaşıyoruz ve dosyayı bilgisayarımıza indiriyoruz.

Java classı içerisinde oluşturduğumuz indir() metodu önce MySQL veritabanı bağlantısı
açıyor daha sonra içerik tür parametresine veritabanında ki yollara bakıp aynı olan dosyayı
sunucudan bilgisayara indirilmesini sağlıyor.
Burada kullandığımız dizi ise dersler,sınavlar vs gibi menü seçeneklerine uygun olanların
listelenmesi sağlanıyor.

More Related Content

PDF
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
PDF
Internet programcılığı-i
PPTX
ASP.NET C# - Sayfa Detayları
PDF
İleri Seviye T-SQL Programlama - Chapter 19
PPTX
TFS102 - Microsoft Visual Studio Team Foundation Server Nasıl Konfigüre Edili...
PPTX
Claroline sunusu
PPTX
TFS 101 – Team Foundation Server Nedir?
PPTX
sunu (Asp.net 2
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Internet programcılığı-i
ASP.NET C# - Sayfa Detayları
İleri Seviye T-SQL Programlama - Chapter 19
TFS102 - Microsoft Visual Studio Team Foundation Server Nasıl Konfigüre Edili...
Claroline sunusu
TFS 101 – Team Foundation Server Nedir?
sunu (Asp.net 2

What's hot (9)

PPTX
Claroline sunusu
PPT
sunu (Asp.net -1)
PPT
Flex blaze ds
PDF
Temel Düzeyde MySQL ve PHP Eğitimleri 1
PDF
Powershell Nedir, Nasıl Çalışır, Temel PowerShell ve Ofansif Powershell
PDF
Osman kurt & zahide aytar
PDF
React.js Web Programlama
PPTX
Yazılım Geliştiriciler İçin Sharepoint 2010
PPT
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
Claroline sunusu
sunu (Asp.net -1)
Flex blaze ds
Temel Düzeyde MySQL ve PHP Eğitimleri 1
Powershell Nedir, Nasıl Çalışır, Temel PowerShell ve Ofansif Powershell
Osman kurt & zahide aytar
React.js Web Programlama
Yazılım Geliştiriciler İçin Sharepoint 2010
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
Ad

Similar to Primeface (20)

PPTX
Bilgisayar Mühendisleri Odası - PrimeFaces Framework Semineri
PPTX
Jsf
PDF
Mevlana Üniversitesi - JSF ve Primefaces UI
PDF
Java Server Faces
PPTX
Java Server Faces
PDF
Kurumsal Java & Web Teknolojileri
PPTX
PPT
Java EE Struts
PDF
Java EE Nedir? (Baku JUG)
PPTX
Web development
PDF
agem_intern_report
PPTX
ASPNET Web API
PPT
Yalova Üniversitesi - (JavaServer Pages) JSP
PPTX
Bilecik Şeyh Edebali Üniversitesi - (JavaServer Faces) JSF
PPTX
Zend Framework'e Hizli Giris
PPT
Mutant Web Applications
PDF
Gelecegin Gelistiricileri Icin PHP Programlama Dili ve Oneriler
PDF
Java Web Uygulama Geliştirme
PDF
Caylak Javacilara Yol Haritasi
PDF
Caylak Javacilara Yol Haritasi
Bilgisayar Mühendisleri Odası - PrimeFaces Framework Semineri
Jsf
Mevlana Üniversitesi - JSF ve Primefaces UI
Java Server Faces
Java Server Faces
Kurumsal Java & Web Teknolojileri
Java EE Struts
Java EE Nedir? (Baku JUG)
Web development
agem_intern_report
ASPNET Web API
Yalova Üniversitesi - (JavaServer Pages) JSP
Bilecik Şeyh Edebali Üniversitesi - (JavaServer Faces) JSF
Zend Framework'e Hizli Giris
Mutant Web Applications
Gelecegin Gelistiricileri Icin PHP Programlama Dili ve Oneriler
Java Web Uygulama Geliştirme
Caylak Javacilara Yol Haritasi
Caylak Javacilara Yol Haritasi
Ad

Primeface

  • 1. 1- JAVA SERVER FACES(JSF) JSF (JavaServer FacesJEE uygulamalarında kullanılan Java servlet, java server pages ( JSP) , Struts, Apache Wicket gibi, JSF te web uygulamalarının arayüzünü inşa etmek için oluşturulan, yeni nesil web uygulama çatısı,Javanın standart web frameworküdür.JEE uygulamalarında web arayüzleri oluşturmak için Java servlet, java server pages(JSP) , Struts, Apache Wicket gibi çok sayıda framework bulunur(Tabi web uygulamalarında çığır açan java appletlerini de unutmamak lazım). JSF de bunlardan bir tanesidir. JSF ,JSP ve Servlet‟ların üzerine kurulmuştur.Bu var olan teknolojilerle MVC yaklaşımını birleştirir. Şekill – 3 : Jsf Mimarisi-1 Temel olarak; uygulama mimarisi, standart kullanici arayüzü(UI) seti ve uygulama altyapısı olmak üzere 3 katmandan oluşmaktadır. JSF‟nin bileşen altyapısı, kullanıcı arayüzü bileşenleri oluşturmak için ortak bir yol tanımlar. Bu mimari standart JSF I bileşenleri(hyperlink, button, secme kutulari, text alanlari gibi) yaninda, üçüncü parti bileşenleri için de bir ortam oluşturur. Bileşenler olay tabanlıdır, dolayısıyla JSF istemci tarafında oluşan olayların (örnegin text- box‟in degerinin degiştirilmesi ya da butona tıklanmasi gibi) işlenmesini sağlar.
  • 2. Şekill – 2 : JSF MİMARİSİ-2 Web uygulamalarinin masaüstü olanlardan farkli olarak genellikle birçok istemciye destek vermesi gerektiğinden, JSF‟ in de kullanıcı arayüzü bileşenlerini değisik yollarla göstermek için güçlü bir mimarisi bulunmaktadır. Kullanıcı girişinin “validate” edilmesi, nesneleri göstermek icin nesnelerin string‟e dönüştürülmesi veya string‟den nesne oluşturulması gibi özelliklere sahiptir. Java Server Faces ya da diğer adıyla “Faces”, otomatik olarak UI bileşenleri ile giriş değerlerini tutan ve cevap üreten Java nesnelerini senkron halde tutabilir. Bu nesnelere “backing beans” adı verilir. Ayrıca güçlü bir navigasyon sistemi ve çoklu dil desteği bulunur. Her yeni sistem için gerekli temel yapıtaşlari olan bu özellikler JSF‟nin uygulama altyapisini olusturur.JavaServer Faces tool destegi icin altyapiyi tanimlarken ozellestirilmis tool‟larin gelistirilmesi, Java‟da oldugu gibi yazilim firmalarina birakilmistir. Fakat Faces uygulamaları tasarım araçları olmadan da geliştirilebilmektedir. Jsf Diğer java web teknolojilerinden Struts ile beraber kullanılabilir.Biz projemizde Struts ın File Download ve File Upload özelliklerini kullanmaya çalıştık ama daha sonra nedenini bilmediğimiz bir sorun nedeniyle Struts ile Jsf ibirlikte kullanma fikrinden vazgeçtik. Struts ve Jsf birlikte kullanılabilir.Struts ın farkı UI bileşen modeli içermiyor, UI bileşen modeli içinolay modeli içermiyor,UI bileşenleri için durum yönetimi içermiyor ve birden çok renderer desteği içermiyor.Struts html ile biraz daha birbirine yakın ve iç içedirler. JSF MVC mimarisini de destekler.Hatta JSF‟nin ortaya çıkmasındaki en büyük etkende JSP‟nin MVC‟yi kendi içerisinde destekleme konusundaki sıkıntılarıdır.MVC(Model-View- Controller) basitçe iş ve sunum mantığının birbirinden ayrılması olarak düşünülebilir. MVC ; adını Model - View - Controller 'in baş harflerinden alan tasarım desenidir.Sunduğu katmanlı mimari sayesinde, uygulamanın kullanıcı arayüzü ve mantık kısmını birbirinden ayırır.
  • 3. Model: İş mantığı (Business Logic) bölümüdür. Tek katmandan oluşabileceği gibi, birden fazla katmanı da içinde barındırabilir. Tek katmandan oluştuğunda genelde veritabanına kayıt ekleme, kayıt çekme, kayıt silme vb. veritabanı işlemleri için kullanılır. Controller'den gelen değerleri işler ve geriye döndürür. Model katmanında herhangi bir output işlemi yapılmaz. View: Uygulamanın kullanıcıya gösterilen arayüzünün bulunduğu katmandır. Html, Css,Javascript vb. bu katmanda bulunur. Bu bölümde minumum php kodunun yazılması hedeflenmektedir. for, foreach, while vb. döngüler ile birlikte, dinamik değerleri ekrana yazdırmak için output komutları sıklıkla kullanılır. Controller:Uygulamanın karar mekanizmasıdır. Model ile View arasında köprü görevi görür. View katmanından gelen istekleri(request) model'e gönderir ve Model katmanındanaldığı verileri view e aktarır. Şekill – 3 : JSF ve MVC Jsf in ,uygulamaların altsistemlerine (Enterprise Javabeans servisleri yada veritabanı gibi) entegre olabilir. JSF ek olarak daha az efor sarfederek daha güçlü web uygulamaları hazırlamak için birçok servis sunmaktadır.Java ServerFaces‟in esas amaci web gelişimini hızlandırmaktır.Uygulama geliştiricilerin istekler(requestler), cevaplar ve markup dili yerine bileşen, olay, “backing bean” ve bunların ilişkileri şeklinde düşünmelerini sağlar. Baska bir deyişle web uygulama geliştirmedeki birçok karmaşıklığı maskeleyerek, sadece maskeleyerek, sadece uygulama geliştirmeye odaklanılmasını sağlar.JSF her şeyden önce bir Java standardıdır.Bunun yanında sektördeki IBM, Oracle gibi önemli firmalar JSF‟i desteklemektedir.Farklı JSF implementasyonları-bulunduğundan projenin gereklerine göre geliştirme için seçim yapabilme özürlüğü sağlamaktadır.JSF„in component olarak bazı eksikleri vardır. Bu eksikleride diğer (richfaces vs..) componentler kullanılarak doldurmak mümkündür.Zaten JSF deki amaç bütün ihityaçları karşılama değil güzel bir altyapı hazırlamaktır. O yüzden eksikler konusunda çok fazla endişelenmeyin , herşeyin bir karşılığı vardır ve rahatça iç içe kullanarak işlemlerinizi yapabilirsiniz. Jsf‟in çok sayıda 3.parti bileşen kütüphanesi vardır.bunlara örnek olarak Richfaces, Icefaces, Primefaces,Trinidat ve Tomahawk gösterilebilr.Bu 3. Parti bileşenlerinin temel amacı Ajax
  • 4. tabanlı zengin bileşen kütüphenesi yaratmak ve çeşitli JSF eklentileri yardımıyla uygulama geliştirmeyi kolaylaştırmaktır.Biz projemizde bu bileşenlerden PRİMEFACES i kullandık.Primefaces bişr türk olan Çağatay ÇİVİCİ tarafından geliştirilmiş olup kendi klasmanında lider konumdadır. 2-PRİMEFACES PrimeFaces.Nedir? İlk önce PrimeFaces'in ne olduğu açıklamak daha doğru olur diye düşünüyorum. PrimeFaces JSF 2.0 için bir çok ajax bileşeni barındıran açık kaynak bir bileşen paketidir(Component Suite).Türlü türlü işlevlere sahip çeşitlibileşenlere sahip olmasının yanısıra, standart JSF2.0 Ajax API‟sine dayanan Ajax desteği vardır.Ayrıca TouchFaces modülü ile akıllı telefonlardan kullanılabilecek web uygulamaları kolaylıkla geliştirilebilir.İlk olarak 2009 haziran ayında 0.9.0 sürümü ile yayımlanmış olan Primefaces‟ın , şu anki son sürümü 2010 kasım ayında 2.2 RC‟ sürümüdür şimdilerde ise Primefaces‟ 3.0 deneme aşamasındadır fakat tam sürüm henüz çıkmamıştır.Şu an en son sürüm içinde barınan bir çok kullanışlı ve estetik özellik bulunmaktadır. Bunlar; otomatik tamamlayıcılar, dosya upload, video-müzik oynatıcıları,menüler, takvim, galeri, input filtreleri ve daha bir çok bileşen. PrimeFaces'ı diğer ajax bileşen paketlerinden üstün kılan özellikleri düşünecek olursak; estetik ve esnek tasarım imkanı sağlaması, çok sayıda bileşen içermesi, mobil arayüz desteği, döküman desteğinin diğerlerinden daha iyi olması olarak sayabiliriz. JSF PRİMEFACES CONFİGURASYONU Primefaces‟ii kullanabilmek için http://www.primefaces.org/downloads.html adresinden PrimeFaces‟in son sürümünü indirip projemizin WebContent/WEB-INF/lib dizinine atıyoruz. Şu anda son sürüm primefaces-3.0.jar ama biz 2.2.1 sürümü dosyasını lib dizinine yerleştirdim. PrimeFaces‟ın JDK 5+ runtime ve JSF 1.2+ gerçekleştirimi dışında herhangi bir bağımlılığı bulunmuyor. Yalnızca, bazı özelliklerini kullanabilmek için ek kütüphanelere ihtiyaç duyabiliyor. Netbeans‟teki projemizin Libraries kısmına sağ tıklayıp LİBRARİES->Add JAR /Folder seçeneğinden daha önce indirdiğimiz * primefaces-2.2.1.jar *jsf-api.jar *jsf-impl.jar dosyalarını projemize eklersek primeface eklentilerini rahat bir şekilde projemizde kullanabiliriz.
  • 5. Şekill –4:Prifaces 2.2.1 Ekleme Biz projemizde PrimeFaces 2.2.1 i kullandık. PrimeFaces'ı sayfalarımızda kullanmak için "p" isim uzayını(namespace) kullanıyoruz. Sayfamızın en üstünde bulunan isim uzaylarının yazıldığı html tagına aşağıdaki isim uzayımızı ekleyelim. xmlns:p="http://primefaces.prime.com.tr/ui" Şekill – 5 :HTML sayfası eklentisi PrimeFaces‟i çalıştırmadan önce birkaç küçük ayarlama yapmamız gerekiyor. JSF 2.0‟da göre PrimeFaces 2.x‟in ayarlama işlemlerini de halledip ilk PrimeFaces denememize geçmeye az kaldı. İlk olarak Resource Servlet için gerekli ayarlamayı web.xml dosyamıza aşağıdaki kod parçasını ekleyerek halledmemiz gerekiyor .
  • 6. Şekill – 6 :Web.xml Dosyası ayarı PrimeFaces‟i Servlet 3.0 ortamında kullanıyorsanız, bu ayarlamayı yapmanız gerekmiyor. Biz Primeface 2.2.1 kullandığımız için Mojarra 2.x için bir ayarlama daha yapıyoruz. web.xml‟e aşağıdaki girdiyi eklememiz gerekiyor Şekill – 7 :Web.xml Dosyası ayarı-2 Primefaces özelliğini kullanabilmek için HTML taglarının başına p: yazmamız gerekiyor. Kullandığımız bazı Primefaces özelliklerinden bahsedecek olursak PRİMEFACES ÖRNEKLERİ Primefaces EDİTÖR Projede Primefaces Editör‟ü birçok yerde kullandık ben sadece ARAŞTIRMALARIM sayfasına veri eklerken açıklma bölümü için kullandığımız Primefaces editöründen bahsedeceğim.Editör normal bir text şeklinde açıklama girmek için yukarıda yazı sitili vs gibi bir çok özellik ve seceneği bulunan bir Primefaces özelliğidir.Buradan alınan veriler Mysql
  • 7. veritabanına kayıt edilir ve daha sonra buradan tekrar çekilerek istediğimiz html sayfasında gösterilmesi sağlanır. Şekill – 8 :Primeface Editör Yukarıdaki kod parçasında gösterildiği gibi <p:editör diye yani “P” tagın başına yazarak Primefaces‟i etkinleştiriyoruz ve sayfamızda kullanabiliyoruz.Primeface bize hem kolaylık sağlıyor hemde sayfamızın daha afili durmasını sağlıyor. Primefaces EDİTÖR‟ü kullanırken bazı problemlerle karşılaştık bunlardan bir tanesi editöre girdiğimiz veriler veritabanına <div> / <br> gibi html taglarınıda içeriyordu ve aynı şekilde kullanıcı sayfasında gösterirken de aynı şekilde html taglarını da gösteriyordu.
  • 8. Şekill – 6 :HTML tag ” escape=false” Bu problemi <h:outputText />“ e escape=”false” özelliğini ekleyerek veritabanıdan çekilen bilgilerdeki <div> vb.. tagları temizleyip kullanıcı ara yüzündeki sayfaya o şekilde basmayı sağladık. PRİMEFACES CALENDAR Primafaces uı eklentilerinden bir tanesi de calendar extender‟dir yani takvim Şekill – 9 :Primeface CALENDAR Takvim klasik bir özellik ama sitede bulunsun diye projemize ekledik asp.net ve php de bu özellikler zaten frameworkta bulunduğu için bu gibi özellikleri eklemek çok kolay . JSF‟ te ise bunu yapmak ancak Primefaces gibi 3.parti bileşen kütüphaneleri yardımıyla kolay bir hak alıyor. Calendar extenderinde projeye eklenmesi diğer Primefaces bileşenlerindeki gibi önce Primefaces ın bize sağladığı kod parçasına projemize uyarlamak ve bir java class‟ı içerisine yerleştirmek ve daha sonrada bunu xhtml sayfası içerisinden çağırmak. Yukarıdaki şekilde görüldüğü gibi <p:calendar …. /> yazıp içeridede bazı özelliklerini istediğimiz gibi ayarlayabileceğimiz bir eklenti. PRİMEFACES FileUpload
  • 9. JSF in özel bir file upload özelliği olmadığı için ya projeye STRUTS ekleyip struts ile yada 3.parti bileşen kütüphaneleri(Richfaces,Primefaces gibi) yardımıyla dosya(pdf,exel,text vb) ekleyebiliriz.Biz bunu JSF in Primeface 3.parti bileşen kütüphanesiyle yaptık. Kısaca anlatacak olursak; http://www.primefaces.org/showcase/ui/fileUploadAuto.jsf adresinden file upload ile alakalı kodları inceleyip projemize uyarlarsak yani bir java class’ı içerisine bu kodları ekleyip parametrelerini kendimiz ayarlarsak; WEB:XML dosyasınının alt kısmına aşağıdaki kod parçasını eklersek. Şekil–10 :Primefaces FileUpload XML Konfigurasyon Daha sonra FileUpload kodlarını java class‟ının içine uygun bir şekilde yerleştiriyoruz. DersİcerikEkle.java class‟ı mızın içine adında bir metod tanımladık ve “Fileupload event” parametresiyle ve event.getFile().getFileName(); yükleyeceğimiz doayanın adını alıp veritabanına dosya yolunu kaydetmek için kullanıyoruz. Burada dosya adını aldığımızdan bahsettik dosya adını almak için bu adın bir yerden gönderilmesi gerekir.bu class‟a dosya adı Admin_DersNotu_Ekle.xhtml sayfasından Primefaces‟in Fileupload özelliği sayesinde gönderiliyor.
  • 10. Şekil–12 :Primefaces FileUpload XHTML Konfigurasyon Yukarıdaki kod parçasında görüldüğü gibi <p:fileUpload fileUploadListener=”#{dersİçerik.handleFileUpload}” koduyla Primefaces fileUpload özelliği java class‟ına parametre gönderiyor yani yüklenecek dosya adını gönderiyor ve dosya yükleme işlemi bu şekilde gerçekleştiriliyor. PRİMEFACES FİLEUPLOAD Projemize daha önce eklemiş olduğumuz dökümanları indirebilmek için FileDownload a ihtiyacımız vardır.bunu yine STRUTS ile projemize dahil edebiliriz ama biz yine jsf 3.parti bileşen lerinden olan PRİMEFACES‟in FileDownload özelliği ile yaptık ve projemize dahil ettik. Önce http://www.primefaces.org/showcase/ui/fileDownload.jsf sitesine girip FileDownload İçin Primefaces‟in yaptığu uygulamaya göz atarsak önce xhtml kısmı ve java class‟ı içinAyrı ayrı ne yapılması gerektiini anlatıyor.Biz buradaki kodları projemize uyarladık.
  • 11. Önce KullaniciDersİcerik.xhtml sayfasına aşağıdaki gibi <p:fileDownload value”#{derslerSecme.Mahmut(‘Odev’,3,3)”}/> Primeface FileDownload ile dosya indirme özelliğini kullanarak Java class‟ı olan derslerSecme.java‟ya xhtml‟den üç tane parametre gönderiyoruz.Gönderdiğimiz bu parametreler yardımıyla veritabanından gerekli sorgulamalar yapıldıktan sonra indirmek isteğimiz dosyaya ulaşıyoruz ve dosyayı bilgisayarımıza indiriyoruz. Java classı içerisinde oluşturduğumuz indir() metodu önce MySQL veritabanı bağlantısı açıyor daha sonra içerik tür parametresine veritabanında ki yollara bakıp aynı olan dosyayı sunucudan bilgisayara indirilmesini sağlıyor.
  • 12. Burada kullandığımız dizi ise dersler,sınavlar vs gibi menü seçeneklerine uygun olanların listelenmesi sağlanıyor.