Java Server Faces Ahmet Demirelli Sabancı Üniversitesi 2007
Ajanda Model-1 Mimari Model-2 Mimari MVC Framework Java Server Faces Örnek Uygulama
Model 1 Mimari 1 2 3 6 JSP (View) 5 JavaBeans (Model) 4 Client Server Database HTML form bilgisini JSP veya Servlet`e gönderir (1) JSP den İş bileşenlerine bağlanır (2) İş bileşenleri database işlemlerini yapar (3-4) Yapılan işlem sonucu JSP ye bil gi döner (5) JSP dönen sonucu clienta gönderir (6)
Model 1 Dezavantajları Bakım zorluğu Hataların bulunma zorluğu Sayfa akış düzenini değiştirme zorluğu Modüler olmayan uygulamalar Sisteme yeni modüller ekleme zorluğu Güncelleme problemi
Model 2 Mimari (MVC) 6 1 Controller (Servlet) 2` JSP (View) 5 2 JavaBeans (Model) 3 4 Database Client Server HTML form bilgisini Controller Servlete gönderir (1) Controller Servlet yapılması gereken işlemi belirler İşlem sadece yönlendirme işlemi ise başka bir jsp ye yenlendirir (2) İşlem iş bileşenleri ile ilgili ise iş bileşenlerini çağırır (2`) İş bileşenleri database işlemlerini yapar (3-4) Yapılan işlem sonucu JSP ye bilgi döner (5) JSP dönen sonucu clienta gönderir (6)
MVC (Model) Model (İş bileşenleri katmanı) Verilerin ve iş kurallarının işlendiği katmandır Bu katmanda yapılanlar; Database sorgulamaları İş kurallarının kontrolü Veri ve uygulama kuralları katmanını (business layer) sunum katmanından (presentation layer) ayırır
MVC (View) View (Sunum katmanı) Client tiplerine göre sunumun düzenlenmesi İş katmanında işlenen verilerin gösterilmesi
MVC (Controller) Controller (Kontrol katmanı) Uygulamaya gelen isteklerin nasıl işleneceğine ve sonucunun nasıl gösterileceği bilgisini tutar Kullanıcı isteklerine göre hangi iş bileşenlerinin çalışacağına karar verir İş bileşenlerinden gelen bilgilerin sunum katmanında hangi görüntü bileşenine yönlendirileceğineve nasıl görüntüleneceğine karar verir Ör : Dil seçenekeleri veya rollere göre sayfaların görüntülenmesi
Model 2 (MVC) Avantajları Hızlı uygulama geliştirme imkanı (RAD) Esnek ve moduler yapı Sayfa akış kontrolu merkezi olması Katmanların net olarak birbirinden ayrılması
Model 2 (MVC)Dezavantajları Sağlam bir MVC uygulaması yazmak iyi bir tasarım ve kodlama gerektirir Her bir istek (request) için arka planı tasarlanmalıdır.(controller, Model ve View bileşenleri tasarlanmalıdır) Fakat bunun için sıfırdan başlamamız gerekmiyor MVC Frameworkleri kullanabiliriz.
Neden MVC Framework? Uygulamaları MVC mimarisinde geliştirmek için iyi bir planlama ve katman tasarımı gerekir MVC Uygulaması geliştirmek için kendi mimarinizi oluşturmak uygulama geliştirme zamanını uzatabilir MVC Uygulamaları geliştirmeye hızlı bir başlangıç yapmayı sağlar Katmanların oluştururulmasını kolaylaştırır Uygulama geliştiricilere kullanabilecekleri ve genişletebilecekleri sınıflar sunarlar Girdi kontrolü kolaylaştırır Uygulamaların internalizationunu kolaylaştırır
Java Server Faces Web uygulamala arayüzleri geliştirmeyi kolaylaştıran java tabanlı Web Framework tanımlaması ve referans uygulamasıdır. JSF Açık kaynak kodlu standarttır: JSR 127 Java Community Process : www.jcp.org JSF, Java EE teknolojisinin bir parçasıdır
Java Server Faces Neden Kullanılmalı? Hazır MVC altyaspısını sağlar Uygulama geliştiricilerin rollerini ayırır Genişletilerbilir bir komponent altyapısı sunar Standarttır *** Endüstri desteği hergün artmaktadır Hızlı uygulamalar geliştirmemizi sağlar (uygun geliştirme araçları ile sürükle-bırak yaparak geliştirme imkanı sunar) Java nın ASP.NET e cevabıdır
Java Server Faces JSF Framework içerisinde; Java sınıfları Faces bileşenleri : HTML bileşenlerinin sunucu tarafındaki karşılıkları (text, buttons, checkboxes, etc.) FacesServlet (Controller) Yardımcı sınıflar (Validator, Converter..etc) Tag kütüphaneleri Hazır tag kütüphaneleri Konfigürasyon dosyası (faces-config.xml) JSF projesi konfigürasyonu: sayfa geçişleri ve yönlendirmeleri, Uygulamada kullanılacak olan JavaBean (ManagedBean / BackingBean) tanımları
Java Server Faces JSF yaşam döngüsü; Request geldiğinde sayfadaki view ID ile bir
Java Server Faces JSF Request yaşam döngüsü Komponent ağacının oluşturulması Request değerlerinin atanması Girdi kontrollerinin yapılması Model değerlerinin güncellenmesi Uygulamanın çağırılması Response un oluşturulması
Java Server Faces JSF önyüz (page1.jsp) <f:view> <h:form> <h:inputtext id="name" value="#{student.name}" /> <br> <h:inputtext id="lname" value="#{student.age}" /><br> <h:commandbutton id= click" value= click action="#{student.savedata}" /><br> </h:form> </f:view>
Java Server Faces ManagedBean / BackingBean public class Student { private String name; private String age; } } public Student() { } public String getname() { return name;} public void setname(string name) { this.name = name;} public String getage() { return age; } public void setage(string age) { this.age = age; } public String savedata() { //save data to database and return success
Java Server Faces faces-config.xml <managed-bean> <managed-bean-name>student</managed-bean-name> <managed-bean-class>edu.sabanciuniv.student</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> Scopes request session application
Java Server Faces Sayfa yönlendirmesi <navigation-rule> <from-tree-id>/page1.jsp</from-tree-id> <navigation-case> <from-outcome>success</from-outcome> <to-tree-id>/success.jsp</to-tree-id> </navigation-case> <navigation-case> <from-outcome>failed</from-outcome> <to-tree-id>/fail.jsp</to-tree-id> </navigation-case> </navigation-rule>
Java Server Faces Arayüz Bileşenleri (UI Components) Sunucu tarafında çalışır form.jsp Browser UI
Java Server Faces Component tree Sayfaya request geldiğinde eğer View Id mevcut değil ise yeni bir component tree oluşturulur View-id var ise güncellenir View Form input input command
Java Server Faces Validators & Converters Validators Girdi kontrollerini yapar UIInput bileşenlerini değerlerini kontrol eder Bir veya daha fazla bileşen kontrolü yapabilir Genel durumlar için hazır Validator ler vardır Converters Veri Tipleri dönüşüm işlemlerini yapar Output: Object to String Input: String to Object Genel durumlar için hazır Converter ler vardır
Java Server Faces Örnekler; Converter: <h:inputtext value= #{bean.date} > <f:convertdatetime pattern= MM/dd/yyyy /> </h:inputtext> Validator: <h:input_text valueref= #{testingbean.today} > </h:input_text> <f:validator_length minimum= 6 maximum='10 />
J2EE Karikatürleri Java Server Faces
J2EE Karikatürleri Dependency Injection
J2EE Karikatürleri EJB
Örnek Uygulama
SORULAR ahmetdemirelli@sabanciuniv.edu http://people.sabanciuniv.edu/ahmetdemirelli