java server faces
DESCRIPTION
Türkiye Bilişim Derneğinde verdiğim JSF Semner SlaytlarıTRANSCRIPT
![Page 1: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/1.jpg)
Java Server Faces
Ahmet Demirelli
Sabancı Üniversitesi
2007
![Page 2: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/2.jpg)
Ajanda
�Model-1 Mimari
�Model-2 Mimari
�MVC Framework
�Java Server Faces
�Örnek Uygulama
![Page 3: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/3.jpg)
Model 1 Mimari
JSP(View)
JavaBeans(Model)
1 2 3
Client Server Database
456
� 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)
![Page 4: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/4.jpg)
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
![Page 5: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/5.jpg)
Model 2 Mimari (MVC)
Controller(Servlet)
JavaBeans(Model)
1
2
Client Server
Database
3
45
6JSP
(View)
2`
� 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)
![Page 6: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/6.jpg)
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
![Page 7: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/7.jpg)
MVC – (View)
�View (Sunum katmanı)� Client tiplerine göre sunumun düzenlenmesi
� İş katmanında işlenen verilerin gösterilmesi
![Page 8: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/8.jpg)
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
![Page 9: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/9.jpg)
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ı
![Page 10: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/10.jpg)
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.
![Page 11: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/11.jpg)
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
![Page 12: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/12.jpg)
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
![Page 13: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/13.jpg)
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
![Page 14: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/14.jpg)
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ı
![Page 15: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/15.jpg)
Java Server Faces � JSF yaşam döngüsü;
� Request geldiğinde sayfadaki view ID ile bir
![Page 16: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/16.jpg)
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ı
![Page 17: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/17.jpg)
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>
![Page 18: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/18.jpg)
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”
}
}
![Page 19: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/19.jpg)
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
![Page 20: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/20.jpg)
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>
![Page 21: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/21.jpg)
Java Server Faces
�Arayüz Bileşenleri (UI Components)�Sunucu tarafında çalışır
form.jsp
Browser
UI
![Page 22: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/22.jpg)
Java Server Faces
� “Component tree”
� Sayfaya request geldiğindeeğer View Id mevcut değil iseyeni bir component tree oluşturulur
� View-id var ise güncellenir
View
Form
input
command
input
![Page 23: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/23.jpg)
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
![Page 24: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/24.jpg)
Java Server Faces
Örnekler;
�Converter:
�Validator:
<h:inputText value=“#{bean.date}”><f:convertDateTime pattern=“MM/dd/yyyy”/>
</h:inputText>
<h:input_text valueRef=”#{testingBean.today}” >
<f:validator_length minimum=”6” maximum='10” />
</h:input_text>
![Page 25: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/25.jpg)
J2EE Karikatürleri
�Java Server Faces
![Page 26: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/26.jpg)
J2EE Karikatürleri
�Dependency Injection
![Page 27: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/27.jpg)
J2EE Karikatürleri
�EJB
![Page 28: Java Server Faces](https://reader036.vdocument.in/reader036/viewer/2022081401/558d2cc1d8b42a5f478b474f/html5/thumbnails/28.jpg)
Örnek Uygulama