ahmet demirelli -...
TRANSCRIPT
JavaServerFaces
Sabancı Üniversitesi Bilişim Teknolojileri
Yüksek Lisans Programı Seminerleri
2008
Ahmet DemirelliSCJP 5.0, SCWCD 1.4
Hakkımızda
� SabancıÜniversitesi BT Yüksek Lisans Programı� Yüksek Lisans Eğitimi
� 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/
� Kurumsal Java / .NET/ Network eğitimleri� 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
� 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
DatabaseBrowserJSP
(view)JavaBean(model)
Application Server
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)
� 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
DatabaseBrowser
Controller(Servlet)
Model(JavaBean)
Application Server
View(JSPs)
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ştirmeyikolaylaştıran java tabanlı Web Frameworktanı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ı
� “Faces” bilesenleri : HTML bilesenlerinin sunucu tarafındaki karsı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ç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
� ManagedBeanpublic 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:
� Validator:
<h:inputText value=“#{bean.date}”><f:convertDateTime pattern=“MM/dd/yyyy”/>
</h:inputText>
<h:input_text valueRef=”#{user.password}” >
<f:validator_length minimum=”6” maximum='10” />
</h:input_text>
Örnek Uygulama
JSP with JSF tagsManagedBean
(user)
username
password
authenticate ( )
success.jsp fail.jsp
Required fields