JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC...

48
JSF ve JBoss Seam Melih Sakarya www.mergecons.com www.mergecons.com 1

Transcript of JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC...

Page 1: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JSF ve JBoss Seam

Melih Sakaryawww.mergecons.com

www.mergecons.com 1

Page 2: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Java’ da Web Mimarileri

� Servlet� JSP� Struts� …� JSF

www.mergecons.com 2

Page 3: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 4: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JSF’ in ortaya çıkı şı

� 2001 ortalari� Amy Fowler

� 2002 yilindaEd Burns� Ed Burns

� Craig McClanahan

www.mergecons.com 4

Page 5: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Specification

� JSR127 – JSF 1.1� JSR252 – JSF 1.2

www.mergecons.com 5

Page 6: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Gerçeklemeler (Implementation)

� MyFaces (Apache)� Sun RI (Reference Implementation)� ...

www.mergecons.com 6

Page 7: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 8: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 9: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JSF Mimarisi

www.mergecons.com 9

Page 10: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

MVCModel View Controller

www.mergecons.com 10

Page 11: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JSF-MVC

www.mergecons.com 11

Page 12: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JSF Ortamı

� web.xml configurasyonu� faces-config.xml� Core JSF kütüphaneleri

www.mergecons.com 12

� 3. party JSF kütüphaneleri

Page 13: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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.

Page 14: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

faces -config.xml

� JSF ile ilgili tanımların bulunduğu dosyadır.� WEB-INF altında bulunur.

www.mergecons.com 14

Page 15: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JSF Yaşam Döngüsü

www.mergecons.com 15

Page 16: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 17: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 18: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

HTML bile şenleri

� h:inputText� h:outputText� h:commandButton� h:dataTable� h:column� ...

www.mergecons.com 18

Page 19: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 20: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Core Bile şenler

� f:view� f:convertDateTime� f:selectItem� f:validateLength� ...

www.mergecons.com 20

Page 21: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 22: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Geliştirme Ortamı Kurulumu

� Java 1.6� Eclipse� JBoss Tools� JBoss AS� MySql� MySql JDBC Driver� MySql workbench

www.mergecons.com 22

Page 23: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

HTML Çıktısı<html>

<head>

<title></title>

</head>

<body>

Merhaba Dunya

</body>

</html>

www.mergecons.com 23

Page 24: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

f:view

� Root bileşendir.� JSF bileşen ağacı bu bileşen ile başlar.

www.mergecons.com 24

Page 25: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 26: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 27: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

ManagedBean

� JSF ManagedBean Scope� Session� Application� Request� Request

� EL (Expression Language) ile erişilebilirler.

www.mergecons.com 27

Page 28: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Ö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

Page 29: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 30: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 31: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 32: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 33: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Seam Framework

� Red Hat� Exadel� JBoss� Hibernate� Gavin King (Proje lideri)

Page 34: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

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

Page 35: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Geliştirme ortamı

� Eclipse � JBoss Tools� Java 1.5 ve üzeri� J2EE 1.5 ve üzeri

Page 36: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Destekledi ği Ortamlar

� JBoss AS� Websphere AS� OC4J� Weblogic� Tomcat� ...

Page 37: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Seam-gen

� Bizim için hazırlanan proje ortamı� Code generation� DB oriented code generation

Page 38: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Seam User Interface Seçenekleri

� Facelet� JSF RI� Richfaces� Ice Faces� My Faces� ...

Page 39: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JSF-Facelet ve Seam

� Template desteği� Kolay ve yetenekli EL (Expression Language)� RichFaces� Theme desteği

Page 40: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Seam Component

@name(“ornek”)

Page 41: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Seam Context

� Event context� Stateless context� Session context� Conversation context� Application context� Page context� Business Process context

Page 42: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

EJB 3.0

� Stateful� Stateles� Message Driven Bean

Page 43: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

EJB tanımı

@Name("loginAction")@Statelesspublic class LoginAction implements Login {

... }

Page 44: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

JPA

� Annotation ile deklarasyon� @Entity� @Id� ...� ...

Page 45: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

CRUD Operasyonları

� Insert� Update � Delete � Select

Page 46: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

IoC (Inversion of Control)

� Injection� Outjection� Bijection

Page 47: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

EJB 3.0

� Stateful� Stateles� Message Driven Bean

Page 48: JSF ve JBoss Seam - seminer.linux.org.tr · JSF 2. JSF Açılımı Java Server Faces MVC (Model-View-Controller) JSR Standartı (JSR-127, JSR 252) Component Oriented Event Driven

Son

Sorular ????

www.mergecons.com 48