java server faces -...
TRANSCRIPT
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)
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)
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)
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 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
� “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
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:
�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>