JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC...
Transcript of JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC...
JSF ve JBoss Seam
Melih Sakaryawww.mergecons.com
www.mergecons.com 1
Java’ da Web Mimarileri
� Servlet� JSP� Struts� …� JSF
www.mergecons.com 2
JSF
� Açılımı Java Server Faces� MVC (Model-View-Controller)� JSR Standartı (JSR-127, JSR 252)� Component Oriented� Component Oriented� Event Driven� Farklı JSF implementasyonları� 3. parti JSF bileşenleri (PrimeFaces, Ice Faces,
RichFaces)
www.mergecons.com 3
JSF’ in ortaya çıkı şı
� 2001 ortalari� Amy Fowler
� 2002 yilindaEd Burns� Ed Burns
� Craig McClanahan
www.mergecons.com 4
Specification
� JSR127 – JSF 1.1� JSR252 – JSF 1.2
www.mergecons.com 5
Gerçeklemeler (Implementation)
� MyFaces (Apache)� Sun RI (Reference Implementation)� ...
www.mergecons.com 6
Neden JSF
� Standart olması.� RAD desteği.� Bileşen mimarisinin kolaylığı.� Farklı grupların bileşen desteği.� Gelişmiş EL (Expression Language desteği).� Karmaşık uygulamaları daha kolay geliştirme.
www.mergecons.com 7
JSF Yakla şımı
� Bileşen yönelimli� Olay(event) tabanlı� Bileşenlere olay(event) tanımlama� Bileşenleri Java objelerine erişim (EL desteği
ile)
www.mergecons.com 8
JSF Mimarisi
www.mergecons.com 9
MVCModel View Controller
www.mergecons.com 10
JSF-MVC
www.mergecons.com 11
JSF Ortamı
� web.xml configurasyonu� faces-config.xml� Core JSF kütüphaneleri
www.mergecons.com 12
� 3. party JSF kütüphaneleri
web.xml
� Java’ da web ortamı ile ilgili tanımların bulunduğu xml dosyasıdır.
� JSF projelerinde JSF tanımları yapılmalıdır.� WEB-INF altında bulunur.
www.mergecons.com 13
� WEB-INF altında bulunur.
faces -config.xml
� JSF ile ilgili tanımların bulunduğu dosyadır.� WEB-INF altında bulunur.
www.mergecons.com 14
JSF Yaşam Döngüsü
www.mergecons.com 15
JSF Arayüz Bile şenleri
� core� Validation, conversion, event handling ...� 18 standart core tag
� html� html� presentation (sunum)� 25 standart html tag
www.mergecons.com 16
JSF HTML Bile şenleri
� Çıktı veren bileşenlerdir.� İki JSF standart bileşen kütüphanesinden
biridir.Standart olarak h: ile başlarlar� Standart olarak h: ile başlarlar
� Sayfa başında taglib tanımı olmalıdır.
www.mergecons.com 17
HTML bile şenleri
� h:inputText� h:outputText� h:commandButton� h:dataTable� h:column� ...
www.mergecons.com 18
Core Bile şenler
� Core bileşenlerdir.� İki JSF standart bileşen kütüphanesinden
biridir.Standart olarak f: ile başlarlar � Standart olarak f: ile başlarlar
� Sayfa başında taglib tanımı olmalıdır.
www.mergecons.com 19
Core Bile şenler
� f:view� f:convertDateTime� f:selectItem� f:validateLength� ...
www.mergecons.com 20
Bir JSF Sayfası<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title></title>
</head>
<body>
<f:view>
<h:outputText value="Merhaba Dunya" />
</f:view>
</body>
</html>
www.mergecons.com 21
Geliştirme Ortamı Kurulumu
� Java 1.6� Eclipse� JBoss Tools� JBoss AS� MySql� MySql JDBC Driver� MySql workbench
www.mergecons.com 22
HTML Çıktısı<html>
<head>
<title></title>
</head>
<body>
Merhaba Dunya
</body>
</html>
www.mergecons.com 23
f:view
� Root bileşendir.� JSF bileşen ağacı bu bileşen ile başlar.
www.mergecons.com 24
EL (Expression Language)
� Özel bir tanım dilidir.� JSTL ile benzerlik gösterir.� #{managedBeanAdi.attribuate} şeklinde yazılır.� Genişletilmiş (Extended) EL seçenekleri � Genişletilmiş (Extended) EL seçenekleri
bulunabilir.
www.mergecons.com 25
ManagedBean
� Basit Java sınıflarıdır.� Herhangi bir sınıfı miras almasına gerek yoktur.� JSF tarafında otomatik oluşturulurlar.� JSF context’ i içerisinden erişilebilirler� JSF context’ i içerisinden erişilebilirler� faces-config.xml içerisinde tanımlanmalıdırlar
www.mergecons.com 26
ManagedBean
� JSF ManagedBean Scope� Session� Application� Request� Request
� EL (Expression Language) ile erişilebilirler.
www.mergecons.com 27
Örnek Managed Beanpublic class OrnekManagedBean {
private String ad;
public String getAd() {
return ad;
}
public void setAd(String ad) {
this.ad = ad;
}
}
www.mergecons.com 28
faces -config.xml tanımı<managed-bean>
<managed-bean-name>ornek</managed-bean-name>
<managed-bean-class>
com.msakarya.OrnekManagedBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
www.mergecons.com 29
Facelet
� JSF için JSP ye alternatif bir yapıdır.� Tamamen xml tabanlıdır ve xhtml olarak
yazılır.Xml standartlarına uyulmak zorundadır.� Xml standartlarına uyulmak zorundadır.
� Gelişmiş facelet tagleri bulunur.� f:view a ihtiyaç yoktur.� .xhtml dosyaları olarak yazılır.
www.mergecons.com 30
xhtml<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<title>Sayfa Basligi</title>
</head>
<body>
icerik
</body>
</html>www.mergecons.com 31
Seam Framework
� JSF� JPA� EJB 3.0� Ajax
� Security� SSL� Web Servis� Pojo
� Localization� Asynchronous� Remoting� Testing
� RichFaces� A4J� Drools� iText PDF� JFreeChart� Facelet
� IoC� JBPM� Hibernate� Groovy� Javascript� Hibernate
� Testing� GWT� Hibernate Search� Mail� Captcha� JBoss Cache
Seam Framework
� Red Hat� Exadel� JBoss� Hibernate� Gavin King (Proje lideri)
Neden Seam
� Tümleşik bir yapı� Hızlı ve kolay geliştirme ortamı (JBoss Tools)� Açık kaynak� Ücretsiz� Kolay entegrasyon (Spring, IceFaces ...)� Ücretsiz geliştirme araçları (JBoss Tools)� Kolay test edilebilirlik� Farkli ortamlarda deployment desteği
Geliştirme ortamı
� Eclipse � JBoss Tools� Java 1.5 ve üzeri� J2EE 1.5 ve üzeri
Destekledi ği Ortamlar
� JBoss AS� Websphere AS� OC4J� Weblogic� Tomcat� ...
Seam-gen
� Bizim için hazırlanan proje ortamı� Code generation� DB oriented code generation
Seam User Interface Seçenekleri
� Facelet� JSF RI� Richfaces� Ice Faces� My Faces� ...
JSF-Facelet ve Seam
� Template desteği� Kolay ve yetenekli EL (Expression Language)� RichFaces� Theme desteği
Seam Component
@name(“ornek”)
Seam Context
� Event context� Stateless context� Session context� Conversation context� Application context� Page context� Business Process context
EJB 3.0
� Stateful� Stateles� Message Driven Bean
EJB tanımı
@Name("loginAction")@Statelesspublic class LoginAction implements Login {
... }
JPA
� Annotation ile deklarasyon� @Entity� @Id� ...� ...
CRUD Operasyonları
� Insert� Update � Delete � Select
IoC (Inversion of Control)
� Injection� Outjection� Bijection
EJB 3.0
� Stateful� Stateles� Message Driven Bean
Son
Sorular ????
www.mergecons.com 48