JSF Static Navigation

jsf

JSF 1.2 de tum navigation kurallari faces-config.xml de yapilmasi gerekiyordu. JSF 2.x te bu zorunluluk ortadan kalkti.

Static Navigation

Simdiye kadar orneklerimizde Static Navigation’i kullandik. <h:commandButton> component’inde action attribute olarak gidecegi sayfa bilgisini deger olarak verdik.

<h:commandButton value="Login" action="welcome" />
  • action attribute degeri outcome olarak isimlendirilir yani “welcome” degeri outcome bilgisidir.Eger outcome da dosya bilgisi yoksa mevcut view in dosya bilgisi eklenir. Yani calistirdigimiz sayfa xhtml oldugu icin outcome bilgisi welcome.xhtml olarak degerlendirilir.
  • Outcome / ile baslamiyorsa path olarak current/mevcut view baz alinir.

Outcome bilgisini action attribute’te verebilecegimiz gibi metot da kullanabiliriz.

NavigationBean.java

package _18.static1.navigation;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class NavigationBean {

	public String goToPage3() {
		return "page3";
	}
}

Continue reading JSF Static Navigation

AWS Platformu 2016

2016’da AWS platformundaki servisleri aşağıda özetledim.

Global Infrastructure

Region, Available Zone ve Edge Location’dan oluşur. Bu konuyu ilgili detayları bu yazımda bulabilirsiniz.

Networking

VPC

Virtual Private Cloud, AWS üzerinde sanal network oluşturmanızı sağlar.

Route53

DNS ‘lerinizi yönetmenizin sağlar ismini DNS kullandığı port 53 olduğu için ismini buradan almıştır.

Direct Connect

Internet Provider kullanmandan Özel network sağlayıcıları ile direk olarak AWS kaynaklarına erişmenizi sağlar. Continue reading AWS Platformu 2016

JSF JSTL , JSTL Functions

JSP Standard Tag Library (JSTL) & JSF

Burada bir kac ornek yapacagiz ve JSTL kodlarimizi xhtml dosyalarinda kullanabildigimizi gorecegiz.

Facelet dosyalari , <c:out> JSTL tagini kullanmamiza izin vermez!

JSP dosyalarimizda JSTL i kullanabilmek icin @taglib directive eklememiz gerekliydi.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

Facelets sayfalarimizda da namespace eklememiz gerekli

xmlns:c="http://java.sun.com/jstl/core"

<c:set> ,<c:if> gibi JSTL taglari icin jar eklememiz gerekmezken c:forEach icin eklememiz gerekmektedir.

pom.xml

	        <dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.1.2</version>
		</dependency>

		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>

JSTLBean.java

package _17.jstl;

import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name = "JSTLBean")
@SessionScoped
public class JSTLBean {

	private String property1;
	private Map<String, String> map = new HashMap<String, String>();

        //getters and setters
}

Continue reading JSF JSTL , JSTL Functions

JSF Expression Language

Bu bolumde Expression Language konusuna deginecegiz.

2 tane Expression Language kumesi mevcuttur.

  • JSP Expression Language
  • JSF Expression Language

JSP Expression Language ile JSF Expression Language arasinda farkliliklar mevcuttur. Gramer olarak baktigimizda

  • JSP Expression Language dolar $ karakteri ile baslar ve suslu parantezler ile devam eder/sonlanir.
  • JSF Expression Language diyez # isareti ile baslar ve suslu parantezler ile devam eder/sonlanir.
  • JSP Expression Language , page compilation time da yani sayfa render edildiginde hemen calistirilir.
  • JSF Expression Language , deferred ( ertelenmis / gecikmeli) olarak calisir. JSF lifecycle context ine gore calisacaktir.

Unified Expression Language

Unified Expression Language ozelligi JSF 2.1 ile birlikte gelmistir. JSP Expression Language ve JSF Expression language ‘un bir birlesimi  (union) olarak ortaya koyulmustur.

Expressionlar icin deferred evaluation/degerlendirme
Expressionlar icin read/write modu
JSTL ( JSP Standard Tag Library ) taglarinin deferred olarak calisabilmesi. Continue reading JSF Expression Language

JSF Resource Bundle (Properties Dosyalarının Kullanımı)

Bu yazımızda JSF içerisinde properties dosyalarını nasıl kullanacağımızı inceleyeceğiz. JSF sayfalarında manuel olarak eklediğimiz karakter setlerini genellikle resource bundle dosyalarına koyarız Alttaki örnekte label bileşenine değeri static olarak verilmiştir

<h:outputLabel value="Ad"/>

Alttaki örnekte ise label bileşenine değeri bir bundle dosyasından alınmıştır

<h:outputLabel value="#{msg.ad}/>
Resource Bundle Konfigurasyonu
1.Adım : src klasörü altında resources paketi oluşturulur
2.Adım : resources paketi altında messages.properties dosyası kopyalanır.
3.Adım : messages.properties dosyasına aşağıdaki bilgiler kopyalanır
name=Ad
surname=Soyad
address=Adres
myName=My name is {0}
 

Continue reading JSF Resource Bundle (Properties Dosyalarının Kullanımı)

JSF Sayfa Geçişleri ve Yönlendirmeleri (Page Navigation)

threepages

Bu yazımızda JSF sayfaları arasında nasıl yönlendirme yapabileceğimizi inceleyeceğiz

Dinamik web sayfaları geliştirirken ihtiyaçlar doğrultusunda farklı sayfalara geçiş yapmak gerekir . Örnek verirsek bir alışveriş sitesinde bir ürüne tıkladıktan sonra o ürünün detaylarını gösteren farklı bir web sayfasının açılmasını bekleriz

Alttaki şekilde bir web sayfasının örnek sayfa geçişleri görülmektedir

faces-config_

JSF içerisinde sayfa geçişlerini farklı yöntemler kullanarak yapabiliriz

JSF Sayfası İçerisinde Otomatik Yönlendirme

Bu yöntemde jsf dosyasının içerisinde yönlendireceğimiz web sayfasını belirtiyoruz . Alttaki örnekteki web sayfasında Gönder butonuna bastığımız zaman userDetail.jsp sayfası açılır.

Continue reading JSF Sayfa Geçişleri ve Yönlendirmeleri (Page Navigation)

JSF ManagedProperty

jsf

Bu yazımda son derece faydalı olduğunu düşündüğüm ‘ManagedProperty’  anotasyonunu elimden geldiğince açıklamaya çalışacağım. Kısa bir örnek vererek başlayayım;

Bir sitede kullanıcı girişi olduğunu ve giriş yaparken kullanıcı bilgilerini userBean de tuttuğumuzu varsayalım. Sitenin işleyişine göre bir sayfa içerisinde birden çok Managed Bean kullanmamız mümkün. Kullanıcının girişini onaylayıp anasayfaya yönlendirdik. Anasayfada farklı bir Bean içerisinde kullanıcı bilgilerine göre veritabanından veri çekmemiz gerekiyor. İşte böyle bir durumda bu kullandığımız Bean içerisine userBean deki kullanıcı verilerini diğer Bean içerisine aktarmamız gerekiyor. ‘ManagedProperty’ anotasyonu tam olarak bu işe yarıyor. Kullanımı oldukça kolay. Ama verinin aktarıldığı Managed Beanler için kullandığımız Scope türüne dikkat edelim , aksi taktirde hata almamız muhtemeldir.

Şimdi küçük bir örnekle nasıl yapıldığını görelim. Bu yaptığım örnekte User adında bir POJO var ve bu POJO da kullanıcının adı ve soyadı yer alıyor. Web sayfamda bir inputText , commandButton ve outputLabel var. inputText içerisine aldığım veriyi firstBean içerisinde saklıyorum. Butona bastığımda ise outputLabel içerisine secondBean içerisine aktardığım firstBean deki veriyi getiriyorum. Anlatırken karmaşık gelmiş olabilir ancak aşağıdaki kodları incelediğinizde ne kadar kolay olduğunu görebilirsiniz. Continue reading JSF ManagedProperty

AWS Storage (Depolama) Servisleri Hakkında

aws_depolama

Amazon S3: Amazon’un Object Storage servisidir. Bulut’ta 1byte -5 TB bir dosyayı (key, value) şeklinde saklamanızı ve sonrada bunu çekebilmenizi sağlar.

  • Web Sayfaları için Statik Content burada tutabilirsiniz (HTML, JS, Video, Image)
  • Analiz etmek istediğiniz büyük ölçekli verilerinizi veya dosyalarınızı S3’te tutabilirsiniz
  • Backup veya Arşivlemek iştediğiniz verinizi S3’de tutabilirsiniz.

Amazon Glacier: Amazon’ün Arşiv servisidir. Çok büyük verilerinizi çok ucuza saklamak istiyorsanız. Bu verilere anlık erişim ihtiyacınız yoksa bu servis sizin için oldukça uygun. AWS Glacier erişim için Import/Export servisini kullanmanız veya S3’deki Object’ler üzerinden kural tanımlayarak Object LifeCycle Glacier eklemeniz gerekir.

Amazon EBS: Sanal EC2 makinelerinin hardiskleridir diyebiliriz. Kolayca snapshot alınabilen ESB’ler dosya sistemi ve veritabanı olarak rahatlıkla kullanılabilir. 1 GB-16 TB arasında istediğiniz harddiski oluşturup sisteminize entegre edebilirsiniz.

Amazon EC2 Instance Storage: EBS’den farklı olarak aynı fiziksel makinenin üzerindeki harddiskler’dir. Sürekli değişen buffer, temporary veri ve cahce gibi mekanizmalar için oldukça uygundur.

aws_1 Continue reading AWS Storage (Depolama) Servisleri Hakkında

Java Server Faces Scope Kavramı

Scope’nin kelime anlamı alan,faaliyet alanı demek.  JSF sayfalarımızda ki yapmak istediğimiz işlemlerin her birine bu sayfaların ne amaç taşıdığını ne amaç için hizmet edeceğini söylememiz gerekir. Yapacağımız işe göre JSF sayfalarımıza tanımlamalar yapmamız gerekmektedir. Önceki derste incelediğimiz JSF Yaşam Döngüsü ‘nde (Management Bean) Bean’ların faaliyet alanları ve süreleri scope’ler ile belirlenmektedir.

Bu Scope’lar 6 adettir.

Session Scope

HTTP stateless/durumsuz bir protokoldur. Yani browser/istemci server/sunucu ile baglanti kurar, istekte bulunur(request) cevabi alir(response) ve browser ile server arasinda baglanti kapanir. Yani her baglanti bir request/response icindir.

Session Scope ( @SessionScoped ) Managed Bean’ler , HTTP session boyunca yasayacaktir. Session, ayni client/istemcinin birden fazla istek/request icin devamliligi saglar.

Kullanıcılarımız için Session oluştururuz. Bu Session Scope oturum kapanana kadar işlemlerimizi gerçekleştirebiliriz. Continue reading Java Server Faces Scope Kavramı

JSF Lifecycle (Yaşam Döngüsü)

jsf_lifecycle

Bu bolumde JSF Lifecycle (yasam dongusunu) konusunu inceleyecegiz.

JSF Lifecycle 6 fazdan/phase olusur.

  • Restore View
  • Apply Request Values
  • Process Validations
  • Update Model Values
  • Invoke Application
  • Render Response

Restore View

Restore kelime anlami olarak yenileme/yeniden kurmak anlamina gelmektedir.
Bir JSF sayfasi icin istek/request geldiginde , link ya da button tiklandiginda,  ilk olarak Restore View fazi baslatilir.

Her JSF sayfasi serverde Component Tree olarak veri yapisi seklinde saklanir.

xhtml sayfalarimizda h:form , h:inputText gibi taglar yer almaktadir. Her tag bir tag handler sinifi ile iliskilidir. JSF tag handler siniflari isbirligi icinde calisarak component tree yapisi olusturur. Component Tree bir tur veri yapisidir/ data structure. Bu veri yapisinda JSF sayfamizda yer alan Java objelerimiz yer alir. Ornegin 2 UIInput objemiz ; <h:inputText> ve <h:inputSecret> gibi.

JSF sayfasina ilk istek geldiginde Component Tree olusturulur , daha sonraki istekler icin hali hazirdaki bu Component Tree kullanilir.

Restore View fazinda 2 durum/case vardir ; Continue reading JSF Lifecycle (Yaşam Döngüsü)