JavaServerFaces Ahmet Demirelli SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu Sabancı Üniversitesi Bilişim Teknolojileri Yüksek Lisans Programı Seminerleri 2008 Hakkımızda SabancıÜniversitesi BT Yüksek Lisans Programı Yüksek Lisans Eğitimi Kurumsal Java / .NET/ Network eğitimleri Programlama (Java, JavaEE ,.NET, C#,Php) Database (Oracle, MySQL,MSSQL, PL/SQL) Network (LAN,WAN, Router Configuration.etc) Sistem ve Network Güvenliği http://www.sabanciuniv.edu/mdbf/kcenter/tr/ http://www.sabanciuniv.edu/mdbf/kurslar/tr/ Kurumlara teknoloji danışmanlığı ve proje yardımı Ajanda Hakkımızda Model-1 ve Model-2 Mimari Model View Controller (MVC) MVC Frameworkleri Java Server Faces Örnek Uygulama Sorular?? Model-1 Mimari Application Server Browser JSP (view) JavaBean (model) HTML form bilgisini JSP veya Servlet`e gönderir JSP den iş bilesenlerine baglanır İs bileşenleri database işlemlerini yapar Yapılan işlem sonucu JSP ye bilgi döner JSP dönen sonucu client tarafına gönderir Database Model 1 Dezavantajları Bakım zorlugu Hataların bulunma zorlugu Sayfa akış düzenini degistirme zorlugu Modüler olmayan uygulamalar Sisteme yeni modüller ekleme zorlugu Güncelleme problemi Model 2 Mimari (MVC) Application Server Controller (Servlet) Browser View (JSPs) Model (JavaBean) Database Bütün istekler Controller servlet tarafından karşılanır Controller Servlet, Model sınıflarını kullanarak işlemi yapar Model bilesenleri database ile ilgili islemleri yapar Yapılan işlem sonucunda gösterilecek olan bilgi view bileşenleri (JSP) ile gösterilir. JSP dönen sonucu client tarafa gönderir Model-View-Controller Model (İş bileşenleri katmanı) Verilerin ve iş kurallarının işlendigi katmandır Bu katmanda yapılanlar; Database sorgulamaları (Pesistence için JPA veya bir ORM Frameworkü kullanılabilir) İş kurallarının kontrolü Veri ve uygulama kuralları katmanını (business layer) sunum katmanından (presentation layer) ayırır Model-View-Controller View (Sunum katmanı) Client tiplerine göre sunumun düzenlenmesi İş katmanında işlenen verilerin gösterilmesi Model-View-Controller Controller (Kontrol katmanı) Uygulamaya gelen isteklerin nasıl işlenecegine ve sonucunun nasıl gösterileceği bilgisini tutar Kullanıcı isteklerine göre hangi iş bilesenlerinin çalısacagına karar verir İş bilesenlerinden gelen bilgilerin sunum katmanında hangi görüntü bileşenine yönlendirileceğine ve nasıl görüntüleneceğine karar verir Ör : Dil seçenekeleri veya rollere göre sayfaların görüntülenmesi MVC Avantajları Hızlı uygulama geliştirme imkanı (?) Esnek ve moduler yapı Sayfa akış kontrolu merkezi olması Katmanların net olarak birbirinden ayrılması MVC Dezavantajları Saglam bir MVC uygulaması yazmak iyi bir tasarım ve kodlama gerektirir Eğer bir framework kullanılacak ise frameworkü öğrenmek ve uygulama geliştirmeye başlamak vakit alır Her bir istek (request) için arka planı tasarlanmalıdır. (Controller, model ve view bilesenleri tasarlanmalıdır) 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 Java Server Faces Web uygulamala arayüzleri geliştirmeyi kolaylaştıran java tabanlı Web Framework tanımlaması ve referans uygulamasıdır (JSF-RI). JSF Açık kaynak kodlu standarttır: JSR127. Java Community Process : www.jcp.org. JSF, Java EE teknolojisinin bir parçasıdır. JavaEE uyumlu tüm uygulama sunucularda çalıştırılabilir. Java`nın ASP.NET e karşılık gelen teknolojisidir. Java Server Faces Neden Kullanılmalı ? Hazır MVC altyaspısını sağlar Uygulama geliştiricilerin rollerini net bir şekilde ayırır Genisletilerbilir bir komponent altyapısı sunar Standarttır *** Endüstri desteği hergün artmaktadır Hızlı uygulamalar geliştirmemizi sağlar Uygun gelistirme araçları ile sürükle-bırak şeklinde uygulama geliştirme imkanı sunar Java Server Faces Popüler JSF Implemantasyonları MyFaces http://myfaces.apache.org/ JSF-RI http://java.sun.com/javaee/javaserverfaces/ http://javaserverfaces.dev.java.net/ Java Server Faces JSF Framework içerisinde; Java sınıfları Tag kütüphaneleri “Faces” bilesenleri : HTML bilesenlerinin sunucu tarafındaki karsılıkları (text, buttons, checkboxes, etc.) FacesServlet (Controller) Yardımcı sınıflar (Validator, Converter..etc) Hazır tag kütüphaneleri Konfigürasyon dosyası (faces-config.xml) JSF projesi konfigürasyonu: sayfa geçisleri ve yönlendirmeleri, Uygulamada kullanılacak olan JavaBean (ManagedBean / BackingBean) tanımları Java Server Faces JSF önyüz (loginpage.jsp) <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:view> <h:form> <h:inputText id="name" value="#{user.username}" /> <br> <h:inputText id="lname" value="#{user.password}" /><br> <h:commandButton id="click" value="click" action="#{user.authenticateUser}" /><br> </h:form> </f:view> Java Server Faces ManagedBean public class User { private String username; private String password; public User() { } public String getUsername() { return username;} public void setUsername(String username) { this. username = username;} public String getPassword() { return password; } public void setPassword(String password) { this. password = password; } public String authenticateUser() { // kullanıcıyı onayla ve “success” döndür } } Java Server Faces faces-config.xml <managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class>edu.sabanciuniv.User</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>/loginpage.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 Java Server Faces JSF Request yasam döngüsü Komponent agacının olusturulması Request degerlerinin atanması Girdi kontrollerinin yapılması Model degerlerinin güncellenmesi Uygulamanın çagırılması Response un gönderilmesi 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=”#{user.password}” > <f:validator_length minimum=”6” maximum='10” /> </h:input_text> Örnek Uygulama JSP with JSF tags Required fields ManagedBean (user) username password authenticate ( ) success.jsp fail.jsp SORULAR ahmetdemirelli@sabanciuniv.edu http://people.sabanciuniv.edu/ahmetdemirelli