Maven Projesi Nedir, Nasıl Kullanılır?

maven projesi

 

MAVEN PROJESİ NEDİR? NE İÇİN KULLANILIR FAYDALARI NELERDİR? JAVA PROJESİ NASIL BİR MAVEN PROJE HALİNE GETİRİLİR?

Maven Projesi, en basit tanımı ile projemizin ihtiyaç duyacağı bağımlılıkları(dependencies) yönetme aracıdır.

Maven Projesinin yapısının kavranabilmesi için ilk olarak jar(Java Archive) dediğimiz kavramın ne olduğunu bilmek gerekir.  JAR, java için kullanabileceğimiz arşiv dosyasıdır. Bu arşiv dosyası yazmış olduğumuz komutların her hangi bir IDE(eclipse, netbeans, intelijIdea v.s.) üzerinde derleme zorunluluğu olmadan çalıştırmamıza yarayacak dosya formatıdır. JAR dosyası çift tıklanarak çalıştırılabilir dosya formatıdır aynı zamanda projelerimizin içine de bu arşiv dosya formatını ekleyebiliriz.

Peki neden bir JAR dosyasını projeme ekleyeyim ki?

Şöyle düşünün sizin her proje içinde kodlamanız gereken aynı method ve sınıflar olduğunu düşünün. Mesala projeye hakkında bölümü kodlayacaksınız bunun için her programa aynı kodları ekleme zorundasınız, mesela log(sistemde olan biten herşey) tutacaksınız bunun için her defasında aynı kodlama kalıplarını ekleyeceksiniz.

Yani işin özeti; aynı kodlamaları her programda defalarca kodlamak çok mantıksız. Bu nedenle ortak kodlarınızı hazırlayıp JAR paketleri haline Getirebilirsiniz ve bu paketleri yeni projelerinize ekleyerek o kodların Tekrar yazılmadan kullanılmasını sağlayabilirsiniz.

Tamam anladık JAR arşivi ile kendimin hazırladığı ortak kodları yada başkalarının insanların kullanımına sunduğu kodları kullanmak için lazım olduğunu anladık ama maven ile ne alakası var  bunun?

Şimdi şöyle düşünün, bir proje içinde sizin daha önceden hazırladığınız özel JAR lar var, ayrıca farklı ihtiyaçlara cevap veren(XML okuma yazma, Excel işlemleri, Json v.s.) onlarca JAR var ve hepsini projenizde kullanmak istiyorsunuz. Böyle durumlarda bir çok sorunu aşmak zorunda kalırsınız. Örneğin;

Bir projede, Özel Matematiksel istatistik hesaplamaları yapmak, veritabanı işlemleri yapmak, log tutmak, güvenlik almak, kriptolama gibi işlemleri projenizde kullanmak istiyorsunuz. Bunun için üç yol var önünüzde,

1- Tüm kodlamayı siz yaparsınız hiçbir JAR eklemek zorunda kalmazsınız ama kodlama süreniz 2 yada 3 katına çıkar doğru kodlama yapamaz iseniz güvenlik açıklarından başınız ağrır.

2- Tüm bu gereksinimler için daha önceden yazılmış JAR ları kullanırsınız, Bu JAR ların tamamını siz elle internet üzerinden arayarak tektek bulup Projenize eklersiniz. Bu bulma ve ekleme işlemi zamanla çileye Dönüşecektir çünkü, eklemek istediğiniz bir JAR paketinin İhtiyaç duyduğu başka JAR lar var ise olay çığırından çıkar ve Matruşka gibi iç içe JAR arar durursunuz.

3- Tüm bu zahmetli yollardan kurtulur tüm JAR bulma işlemlerini Maven yapısına devredersiniz.

Maven, yukarıda saydığımız bizim bağımlılık dediğimiz JAR kullanım sistemini yönetir. Yani bizim projemizin ihtiyaç duyduğu JAR lara erişebilmesi için gerekli altyapısı bize sunar.

 

 

Peki Maven Projesi bize neler sunuyor?

  • Kurulum İşleminde eğer maven kalıp yapısını kullanır iseniz bu yapı bir standart teşkil ettiği için tüm IDE lerde kullanılabilir bir esneklik sunar.
  • Bağımlılıkların Yönetilmesi ve kullanılacak kütüphanelerin kolayca yönetilmesini sağlar. Maven kendisine ait repository sunucusunda gerekli tüm bağımlılıkları barındırır.
  • Maven bağımlılık yönetimini POM denilen xml dosyası üzerinden yapar. Bu dosya içerisine projenize ait dokümantasyon dosyalarını da ekleyebilirsiniz.
  • Projenizin farklı sunucularda yada farklı ortamlarda çalışmasının sağlamak için farklı olarak build yada deploy edebilirsiniz ama bu işlem büyük projelerde çok zahmetli olabilir. Bunun için Maven bize POM dosyası içinde yapacağız bir değişiklik ile bunu sağlayacaktır.
  • Maven projemizin sürüm yönetimini kolaylaştırır.

 

MAVEN NASIL KULLANILIR?

 

Maven Projesi Örnek Resim 1

Maven Projesi Örnek Resim 2

Maven Projesi Örnek Resim 3

Görüldüğü üzere oluşan proje java proje yapısından bağımsız  saf maven projesidir. İstediğimiz bir java projesine ait bir maven projesi oluşturmak istenirse buna uygun maven projesi seçilir yada bir java projesi oluşturularak onun Maven projesi haline getirilmesi sağlanır.

Maven Projesi Örnek Resim 4

MEVCUT BİR PROJENİN MAVEN PROJESİ OLARAK DÖNÜŞTÜRÜLMESİ

İlk olarak bir tane web projesi oluşturuyoruz

Maven Projesi Örnek Resim 5

Maven Projesi Örnek Resim 6

Maven Projesi Örnek Resim 7

Maven Projesi Örnek Resim 8

 

JavaEE Web’ e Giriş ve Sisteminin İşleyişi

Oracle Java Logosu

Web Sistemine Giriş

Java EE Web dünyasında dinamik site geliştirmek ve sistemi anlamak için ilk adımı burada atıyoruz.

İnternet Dünyasına Genel Bakış

Web sayfalarının genel çalışma mantığı en basit anlatım ile bir bilgisayardan(son kullanıcı) sunucuya(web server)  gönderilen istek olarak tanımlanabilir.

Ancak olay aslında bu kadar basit işlememektedir. Arka planda işleyen devasa bir ağ sistemi ve sunucular bütünü bulunmakta ve bu sistemin birbiri ile iletişimini sağlayan protokoller iş yapmaktadır. İnternet dünyasında sisteme dahil olan her bilgisayarın bir adresi vardır(IP adresi). Bir bilgisayar diğer bir bilgisayara erişmek istediği zaman, ilgili bilgisayarın IP adresine TCP/IP Protokolü dediğimiz iletişim dilini kullanarak istekte bulunur istek olumlu karşılanır ise iletişim iki yönlü olarak devam eder.

İnternet Web Erişimi

Peki İnternette İşler Nasıl Yürüyor ?

İnternette işler tabiki bu şekilde kolay olmamaktadır. Bir bilgisayarın bir web sunucusuna istekte bulunması için bir çok yolu aşması ve gitmek istediği bilgisayarda içine girmek istediği sitenin dizinine ulaşması gerekmektedir.

Bu işlemin adımlarını şu şekilde sıralayalım ve aslında bize birkaç saniyede olduğu için kolay gelen işlemin ne kadar karmaşık olduğunu görelim.

  1. İlk Olarak, biz bir internet sitesine erişmek istediğimiz zaman önce bir web browser(İnternet Explorer, Crome, Firefox,Yandex  Browser vs.) açar adres çubuğuna gitmek istediğimiz sitenin adını gireriz.
  2. Web Browser bizim girdiğimiz internet URL adresini(www.google.com.tr olsun) bulabilmek için IP(İnternet Protokol Address) adresine ulaşmak ister.

Not(Önemli Bilgilendirme) : internet ve ağ sistemlerinde bilgisayarlar sadece ve sadece IP adresi ile iletişim kurabilirler. Bu nedenden dolayı web browser IP adresine ihtiyaç duymaktadır. Peki o zaman neden www.siteadı.com gibi bir kullanım var? cevabı basit kimse bir bilgisayarın ip adresinden sitesine ulaşmak istemez. şöyle düşünün Google ın adresini 216.58.208.36 şeklinde girmek zorunda kalsaydınız…

  1. Peki web browser bu IP adresini nasıl bulacak? İlk olarak kendi bilgisayarımızın  ‪C:\Windows\System32\drivers\etc\ altında ki   «host» klasörüne bakar burada ilgili sitenin IP si var mı  eğer   burada bulamaz ise bağlı bulunduğu modem e gider ve ona   sorar ilgili sitenin IP sini, burada da bulamaz ise bu sefer bağlı   bulunduğu internet sağlayıcısına(Türk Telekom TTNET, Türkcell   SüperOnline, Vodefone, KabloNet vs.) gider ve ona adresi sorar,   ilgili adresi orada da bulamaz ise en nihayetinde DNS(Domain   Name Server) adı verilen hangi adresin hangi IP ye ait olduğu   bilgisini tutan sunucuya sorar burada aradığı IP adresini bulur ve   ilgili bilgisayara istekte bulunur.
  2. Web Browser kendisinden talep edilen sitenin adresini bulmuş ve o sunucuya doğru yol almıştır, ilgili sunucuya geldiğinde karşısında   65536 adet kapı çıkar(Bunlara Port denilir ve bilgisayara giriş   kapılarıdır.) web browser internet isteklerini 8080 numaralı porttan   karşı tarafa iletir.
  3. Geldiği sunucunun 8080 numaralı kapısından içeri giren istek sunucu tarafından incelenir ve isteğe uygun olarak bir cevap gönderilir. Gönderilen bu ileti genelde saf HTML(Hyper Text Markup Language) kodudur. Ancak isteği türüne göre gönderilecek istek; JSON, PDF, Text, İmage, URL respone v.s. Olabilir.
  4. Web Browser gönderdiği isteğe karşılık gelen cevabı alır ve bu cevabı işler. Gelen veri HMTL kodu ise kodu yorumlayarak kullanıcının anlayacağı görsel sayfaya çevirir.

Web Görünümü

Bir Web Sitesinin Görünümü

HTML Kod Görümü

Bir Web Sitesinin Kod GÖrünümü

Şimdi internet sisteminin işleyişini tam modelleyen resme bakalım;

Web İnternet Sisteminin İşleyiş Yapısı

 

 

Java Server Faces Navigation Kullanımı

Oracle Java Logo

JAVA SERVER FACES (JSF) İLE SAYFA YÖNLENDİRME İŞLEMLERİ

Java Server Faces Sayfalarında gezinme kullarının incelenmesi ve farklı yöntemlerin uygulanmasını öğreneceksiniz.

Eğitim içeriği aşağıda tanımlanmıştır. Eğitime ait içeriği github adresimde bulabilirsiniz.

https://github.com/muhammedali55/JavaEE_JSF_Navigations

Navigations – Sayfa Yönlendirmeleri

Tüm web uygulamalarında olduğu gibi  JSF tarafında da bir web sayfasından  diğer bir web sayfasına geçiş işlemleri yapılmaktadır. JSF sayfalarında bu işlem farklı yöntemler kullanılarak yapılabilmektedir.

Bu eğitimimiz de bu farklı sayfa yönlendirmelerine göz atacağız. Aslında JSF sayfalarında yönlendirme temel olarak iki şekilde yapılır;

  1. İlki Web sayfası içinde aksiyon alabilen kullanıcı arayüzlerinin action methodlarına ilgili sayfanın adı yazılarak yapılır.
  2. İkinci olarak ta Bean kullanarak java sınıfı içinde tanımlanan değişkenlere erişim sağlayarak ilgili sayfaya yönlenmek.

Implicit Navigations

İlk olarak boş bir dinamik web sayfası jsf projesi açınız ve iki adet xhtml sayfa sı ve birde managed bean için java sınıfı ekleyiniz.(index.xhtml, SayfaYeni.xhtml ve indexBean.java).

Dahili - Proje için Sayfa Yönlendirme

Bean sınıfındaki kodlama aşağıda ki şekilde yapılarak gerekli url bilgisi jsf sayfasına iletilir.

Dahili - Proje için Sayfa Yönlendirme 2

Conditional Navigations

Koşullu gezinde aslında Bean yönlendirmeye örnektir ancak burada farklı olan çalışma zamanında yönetilen java sayfasında bulunan case ler ile url string inin değiştirilmesidir. Sayfamıza 3 adet xhtml ve bir de java yönetim sınıfı ekliyoruz.(KosulluGezinme.xhtml, kosulSayfa1.xhtml, kosulSayfa2.xhtml, KosulluGezinmeBean.java)

Conditional Sayfa Yönlendirme

Conditional Sayfa Yönlendirme 1

OnePage & Redirect Page Navigation

Bu konuya kadar yapmış olduğunuz yönlendirmelere dikkatli bakarsanız aslında yönlendirme yaparken sayfa değişmekte fakat web sayfasının url adresinin değişmediğini görürsünüz. İşte bu noktada yapmakta olduğunuz projenin içeriğine bağlı olarak url adresinin de yönlendirme sırasında değişmesini isteyebilirsiniz. Bu durumda şu küçük eklemeyi yönleneceğiniz sayfanın sonuna eklemeniz gereklidir.

— ?Faces-redirect=true  —

Uygulamamıza bir adet degisenUrlYonlendirme.xhtml sayfası ekleyerek işlemimizi test edelim.

One Page Redirect Sayfa Yönelndirme

 

 

Java Managed Bean Eğitimi

Java Oracle Logo

JAVA MANAGED BEAN YÖNETİMİ VE KULLANIMI

Java Server Faces Teknolojisinde Bussines Layer katmanını teşkil eden ve java – web page arası iletişimi sağlayan yönetim anotasyonlarını öğreneceksiniz.

Managed kullanımını aşağıda anlatmış bulunmaktayız, ancak örnek kodlamaya ulaşmak isterseniz github adresimden kodu temin edebilirsiniz.

https://github.com/muhammedali55/JavaEE_JSF_ManagedBeans_Scope

Managed Bean Nedir ?

Managed Bean, java kod tarafından yönetilen java bean sınıfıdır. Web Sayfaları ile veri iletişimini sağlayan; alıcı, ayarlayıcı ve iş katmanında yönetici pozisyonunda bulunan bir yönetim java sınıfıdır.

Menaged Bean ler, UI bileşenlerini Model olarak taşırlar ve JSF sayfaları tarafından erişilebilirler.

XML tarafında kurulabildiği gibi anotasyon olarak ta kullanılabilirler. Biz eğitimimiz içeriğinde kullanımı ve erişimi daha kolay olan anotasyon biçimini kullanacağız.

Managed Beans yapısı JSF 2.2 üzerinde tam olarak çalışır iken yeni sistem JSF 2.3 te kontrollü kullanıma çekilmiştir. Yani ilerleyen JSF sürümlerinde artık @ManagedBean yapısı kullanılmayacaktır. JSF 2.3 ile gelen @Named anotasyonu @ManagedBean in yerini almıştır. JSF 2.3 ile artık CDI api kullanılmaya başlanmıştır.

Biz bu eğitimimizde 2017 den butarafa hala geliştirme aşamasında olan CDI apiyi anlatmayacağız. Onun için ek eğitim içeriği oluşturulacaktır.

Managed Bean Kullanımı

@ManagedBean, üzerine eklendiği bir sınıfı yönetilebilir bir sınıf olması için işaretler.  Bu sayede jsf sayfalarından bu bean sınıflarına erişim sağlanabilir.

Name özelliği kullanılarak Jsf sayfasından erişim adı tanımlanır. Eğer name özniteliği tanımlanmaz ise örnek sınıfımız için isimlendirme indexBean şeklinde olacaktı.

Eager özelliği, bir managed sınıfının oluşturulma ve bağlanma zamanını tanımlar eğer eager=true ise ilgili sınıf jsf sayfaları talep edilmeden önce oluşturulur, aksi takdirde jsf sayfası ilgili managed sınıfını talep ettiğinde bu sınıf oluşturulur.(lazy load)

Managed Bean Class Kullanımı

Scope Annotation Kullanımı Nasıl yapılır  ?

Managed bean lerin kapsamının tanımlarlar, altı(6) farklı tanımlama içerir. Programcı kullanım amacına göre scope ı belirler.

  1. @RequestScoped, Bean sınıfının jsf sayfasından request(istek) aldığı sürece yaşamasını garanti eder istek bittiğinde yok olur.
  2. @NoneScoped, Jsf sayfası oluşturulurken yaratılan EL bileşenlerinin işlemleri süresince çalışır sayfa yüklenince sona erer.
  3. @ViewScoped, Tarayıcı üzerinde ilgili jsf sayfası ile etkileşimde olan kullanıcının etkileşimi sona erinceye kadar devam eder. Kullanıcı başka bir  sekmeye yada sayfaya yönlendiğinde sona erer.
  4. @SessionScoped, Bizim en çok kullandığımız kullanıcı girişlerini kontrol altında tuttuğumuz Bean sınıfları oluşturmamıza yarayan scope tur. Her web page için ayrı ayrı oluşturulur ve oturum açılır. Kullanıcı oturumu sona erdirdiğinde yok olur.
  5. @ApplicationScoped, bir web uygulaması çalıştığı sürece yaşayan bean yapıları oluşturmak için kullanılır.
  6. @CustomScoped, programcı tarafında oluşturulan sınırlar

içerisinde yaşamını sürdüren Bean sınıflarını tanımlar.

 

Örnek Uygulama Kullanımı

Managed Bean Proje Açılımı

 

Managed Bean Web Sayfası Çıktısı

 

 

Java Server Faces (JSF) Uygulaması Oluşturmak

JAVA SERVER FACES (JSF) UYGULAMASI OLUŞTURMAK VE KULLANMAK

Java Server Faces Logo

GEREKSİNİMLER VE SUNDUKLARIMIZ

1- Eclipse IDE sini sisteminize yükleyiniz.

2- Apache Tomcat 9 Server i Yükleyiniz.

Bir jsf projesinin nasıl çalıştığı ve kullanılacağı hakkında bilgileri aşağıda anlattık, ancak hazır kodlara hemen erişmek isteyenler için github sitemden kodları temin edebilirler

https://github.com/muhammedali55/JavaEE_Ilk_JSF_Uygulamasi

Java Server Faces (JSF) Nedir Anlatır mısınız?

JSF, Java EE dünyasında web tabanlı dinamik kullanıcı arayüzleri geliştirilmesi iş ve işlemlerini kolaylaştırmayı amaçlayan JSP üzerinde konumlandırılmış Java tabanlı bir web uygulama çatısıdır, Ayrıca;

Java Server Faces (JSF), Dinamik(kullanıcı etkileşimli çalışma zamanında değişebilen) web sayfalarında kullanılmakta olan UI(User Interfaces) bileşenlerinin sunucu tarafı Container  ları ile yönetilmesini kolaylaştıran bir MVC web yapısıdır.

Her ne kadar jsf bir mvc web yapısı olsa da MVC yapısına farklı bir yaklaşımla Controller à View yönünü View -> Controller şeklinde betimler ve ayrıca bir View in birden fazla Controller ile iletişime geçebilmesine olanak tanımaktadır.

JSF kodlamak için, temel java se eğitimine sahip olmanız gerekmektedir. Ayrıca; web tasarımı ve frontend kodlaması için, HTML CSS, JavaScript, Ajax vs. teknolojiler hakkında bilgi sahibi olmak Gerekmektedir.

Java Server Faces (JSF) Kurulum Aşamaları nelerdir ?

Kurulum işlemlerini sırası ile takip ederek tamamlayabilirsiniz.

  1. İlk olarak  Java Development Kit(JDK)’ i indirerek sisteminize kurmanız gerekmektedir.
  2. Java kurulum dizininin(C:\Program Files\Java\jdk1.8.0_171), Denetim Masası -> Sistem -> Gelişmiş Sistem Ayarları -> Ortam Değişkenleri penceresinde yeni bir sistem değişkeni olarak eklenmesi gerekmektedir.(JAVA_HOME)
  3. Kodlamayı Eclipse IDE si ile yapacağımız için sisteminizde kurulu olması gereklidir.
  4. Son olarak ta Apache Tomcat in indirilecek bir kök dizin(C: ya da D:) içine açılması gerekmektedir.

JDK:

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

ECLIPSE:

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2018-09/R/eclipse-jee-2018-09-win32-x86_64.zip

APACHE TOMCAT:

http://ftp.itu.edu.tr/Mirror/Apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12-windows-x64.zip

Java Server Faces (JSF) Mimarisi

JSF, MVC(Model-View-Controler) tasarım desenini örnek alır, burada Modeller ile veri taşınır ve veri girişleri yapılır. View ler kullanıcı arayüzünü tanımlar. Controller, jsf tarafında Bean dediğimiz yapıya denk gelir ve uygulamanın iş katmanıdır ve tüm süreci yönetir.

MVC nin genel amacı kod geliştiricilerin temel yeteneklerine odaklanmak ve core kısmı yazmalarını kolaylaştırmaktır. Web tasarımcılarının da kullanıcı arayüzlerine konsantre olarak controller dan bağımsız burayı geliştirmelerini sağlamaktır.

Bir JSF projesinin işleyiş şekli yaklaşık olarak şöyledir.

Java Server Faces Mimarisi

Java Server Faces (JSF) Life Cycle

JSF, yaşam döngüsünde yüklü sayfadan bir istek geldiğinde, UI bileşenlerinde bulunan değerler FacesContex tarafından yüklenir, bileşen ağaçları oluşturulur, yerel değişkenlerle gelen değerler doğrulanır ve ilgili modellere yüklenir, işlemler gerçekleştirildikten sonra sayfa ya yönlenir yada aynı sayfa tekrar bileşenleri set edilerek yüklenir, sayfada bulunan statik bileşenler ve değişmeyen değerler tekrar yüklenmez ve sayfa render edilir.

Java Server Faces Yaşam Döngüsü

 

 

Hadi İlk JSF Uygulamasını Yazmaya Başlayalım

JSF in farklı sürümleri bulunmaktadır ve java nın belli sürümleri için geliştirilmiştir. Bu nedenle java ee tarafında kodlama yaparken dikkat edilmesi gereken konulardan birisi de bu uyumluluklardır.

JSF 2.2 kullanıcı arayüz standartı 21 Mayıs 2013 te yayınlanmış ve Java EE 7 için kullanılmaktadır.

JSF 2.3 17 Nisan 2017 tarihinde yayınlanmış ve Java EE 8 üzerinde çalışmaktadır.

Şimdi ilk jsf projemizi oluşturmak üzere eclipse uygulamasını açalım ve aşağıda belirtilen adımları takip edelim

1- File -> New -> Dynamic Web Project

Java Server Faces Proje Açmak

2- Açılan pencerede proje ismi yazılır, Apache Tomcat server olarak seçilir ve configurasyon ayarlarından JavaServer Faces seçilerek ilerlenir.

Java Server Faces Proje Açmak 2

3- İlerlenen sayfa da web.xml in eclipse tarafından projeye eklenmesi için ilgili seçeneği tikliyoruz

 Java Server Faces Proje Açma 3.

4- Son olarak ta açılan sayfa da projeye bu aşamada hiçbir kütüphane eklemeyeceğimiz için implemanasyon işlemini disable yapıyoruz. URL map patern ayarlarını *.jsf olacak şekilde değiştiriyoruz.

Java Server Faces Proje Açmak 4

5- Artık Java Server Faces (JSF) projemiz açıldı, projemize eklememiz gereken jar ları temin etmek üzere projemizi maven projesi haline getiriyoruz.  Projemizin üzerine sağ tıklayarak Configure -> Convert to Maven Project diyerek gerekli işlemleri tamamlıyoruz.

Java Server Faces Proje Açmak 5

6- Projemizi maven projesine çevirdiğimize göre jsf uygulamaları için gerekli olan depencies leri eklememiz gereklidir.

<dependency>

<groupId>javax.faces</groupId>

<artifactId>javax.faces-api</artifactId>

<version>2.3</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.glassfish</groupId>

<artifactId>javax.faces</artifactId>

<version>2.3.0</version>

<scope>compile</scope>

</dependency>

7- Gerekli jar lar da yüklendiğine göre artık ilk jsf sayfasını ekleyebiliriz. Web Content e sağ tıklayarak New -> HTML File

Java Server Faces Proje Açmak 7

7.2-. Açılan pencerede File Name kısmına index.xhtml yazarak ilerliyoruz.

 Java Server Faces Proje Açmak 8

8- Yeni açılan sayfa da eclipse bize otomatik olarak ekleyebilmemiz için hazır Java EE Şablonlarını sunuyor. Bizde En üstte ki şablonu seçerek bitiriyoruz.  Sonrasında açılan xhtml sayfasını aşağıdaki şekilde düzeltiyoruz.

Java Server Faces Proje Açmak 9

Java Server Faces Proje Açmak 10

9- Artık projemizi çalıştırma zamanı geldi. İndex.xhtml dosyasına sağ tıklayarak; Run As -> Run on Server seçeneği ile devam ediyoruz. Açılan sayfa de finish deyip bitiriyoruz ve uygulamamız çalıştı.

Java Server Faces Proje Açmak 11

Java Server Faces Proje Açmak 12

Ve işte Artık projemiz çalışıyor.

Java Server Faces Proje Açmak 13

 

JavaEE Servlet Nasıl Yazılır?

JAva Servlet Logo

 

JEE001-JAVA EE SERVLET

JavaEE dünyasına hakim olabilmek ve eniyi şekilde kavrayabilmek için gerekli olan sevlet yapısını inceleyeceğiz.

İHTİYAÇ VE SUNDUKLARIMIZ NELER ?

1- Eğer bir Dynamic Web Project oluşturmayı bilmiyorsanız ilk olarak Burada–>  bulunan makalemizi okuyunuz.

2- Projemizde Kullanılmak üzere Eclipse Uygulamasını Yükleyin.

3- Projeyi çalıştırmak için Apache Tomcat 9 Server i yükleyiniz.

Projemiz aşağıda detaylıca anlatılmıştır, eğer projeye direkt erişmek ve çalışan kodları denemek isterseniz, bana ait olan github adresinden erişim sağlayabilirsiniz.

https://github.com/muhammedali55/JavaEE001_Servlet

 

JAVAEE SERVLET NEDİR ?

Genel anlamda, internet sitelerinin çalışma mantığı; web browser tarafından sunucuya istekte bulunulması ve buna karşılık sunucu tarafından bu isteğe cevap verilmesi şeklinde özetlenebilir. Servlet yapısının anlaşılmasından önce Clien(İstemci) – Server(Sunucu) yapısının işleyişinin anlaşılması ve ilgili terimlerin irdelenmesi daha faydalı olacaktır.

Server(Sunucu) in temelde iki işlevi bulunmaktadır:

  • Client(İstemci)’ ın Request(İstek) ini Handle(Karşılama) etmektir.
  • Request e karşılık bir Response(Cevap) döndürmek.

Bu anlamda server handle request yapar, resource u bulur ilgili client e response eder. Burada resource; html page, pdf, image dosyaları, video dosyaları vs. olabilir.

Client(İstemci) in sorumulukları şöyledir:

  • Web Tarayıcı yada kişi server a istekte bulunma işini yapar. Bu istek bir form, bir url isteği vs. olabilir.
  • Sunucudan gelen resource(kaynak) kodlarını yorumlar(interpreting) ve bu kodları bizlerin analayacağı görsellere çevirir(rendering).

Servlet yapısı daha çok dinamik sistemleri kodlamak için kullanılan main sınıfı olmayan bir java sınıfıdır. Kodlaması yapılan servlet, servlet container ya da servlet engine adı verilen sunucu sistemleri üzerinde yorumlanarak kullanılırlar.

JavaEE Servlet Contanier in Görevleri;

  • web server – servlet  arasındaki iletişimi yönetir.
  • Servlet kodlarının yaşam döngüsünü yönetir.(nesne oluşturma, constructor v.s.)
  • Multi Thread kullanımı
  • Declarative Security
  • JSP kodlama desteği

Sevlet in Görevleri;

  • Formlar aracılığı ile gelen açık(explicit) end user kodlarını yakalamak.
  • Browser tarafından kapalı(implicit) cookies, media-type gibi bilgileri yakalar
  • Farklı formatta ki verilere erişebilir.
  • Gerekli sonucu geri döndürür.

JAVAEE SERVLET KULLANIMINA BİR ÖRNEK GÖSTEREBİLİR MİSİNİZ ?

İlk olarak servlet projesi için kullanacağımız boş bir javaEE Web projesi oluşturuyoruz.
Burada istediğimiz bir paket yapısı yada projemiz içinde kullandığımız bir paket yapısı kullanabiliriz.

Gereksinimler:

1.Eclipse Java EE IDE for Web Developers. Oxygen.3
2.Apache Tomcat V.9

Servlet Class Ekleme Resim -1

İlgili paket üzerinde iken sağ click -> new-> other yolunu izleyerek servlet sınıfı ekleyeceğiz.

Servlet Class Ekleme Resim -2

 

Servlet Class Ekleme Resim -3

 

Servlet Class Ekleme Resim -4

Servlet Class Ekleme Resim -5

Servlet sınıfı oluşturmanın son adımında doGet ve doPost methodlarını seçerek isteklerin karşılanması ve isteklere uygun cevapların verilmesi sağlanmaktadır.

Servlet Kodu

Tüm işlemler sonucunda doGet ve doPost methodlarına sahip, kurucu methodu olan, HttpServlet sınıfından  kalıtım almış bir servlet sınıfı oluşturduk ve bu proje görüldüğü üzere bir webpojesi olarak oluşturulmuştur.

Bu gibi yapılarda önemli olan kısım projenin yapısı gereği projeyi ayağa kaldıracak, client ve server arasında ki bağı kurup gerekli containerları barındıracak bir sunucunun varlığıdır. Bizim projemizde Apache Tomcat sunucusu kullanılmıştır. Tomcat üzerinde barındırdığı sevlet container ve webserver uygulamaları ile bizim için ideal bir sunucudur. Tabiki farklı sunucu çözümleri de bulunmaktadır.

Bu kısımdan sonra artık http ve http form isteklerine cevap verecek ve talebe göre istekleri dönecek kodlamaları yapmamız gerekmektedir. Bu kodlamalarda görebileceğiniz üzere tüm kodlamaları yaparken tamamen java kodlamaları kullanılacaktır.

Öncelikle, kurgumuz şu şekilde olacaktır. Kullanıcıdan kişisel bilgilerini alarak üye kaydı yapan bir projenin simülasyonudur.

Bu bağlamda ilk olarak değişken tanımlamalarını global olarak tanımlıyor ve sonrasında kullanıcıdan gelecek olan bilgileri yakalayacak kodlamaları yapıyoruz.(doPost Methodu)

JavaEE Servlet kullanımı için Değişkenler:

Java Servlet Kod Resim-1

doPost Kodlaması: Kodlamadan da anlaşılacağı üzere bir html form üzerinden post edilen bileşenlerin parametre adına göre kod tarafında yakalanması üzene kurgulanmış bir sistemdir.

Java Servlet Kod Resim-2

Şimdi ise, elde etmiş olduğumuz değişkenleri kullanarak üye kaydı gerçekleştireceğimiz kayıt methodunu yazacağız ve işlemin sonucuna göre kullanıcıya sonuç döndereceğiz.

Kayıt Methodu:

Burada gerekli işlemler yapılır. Kullanıcı bilgilerinin analizi, veritabanına kayıt v.s. Sonucunda ise PrintWriter ile kullanıcıya bilgi dönderilir.

Java Servlet Kod Resim-3

doGet Methodu:

Java Servlet Kod Resim-4

Tüm Servlet Kodlarının Görünümü:

Java Servlet Tam Kod Resim-1

Mevcut bir servlet’ i kullanmak için illede jsp,jsf gibi teknolojilere ihtiyaç yoktur. Bir servlet’ i kullanmak için bir not defteri uygulaması ve biraz html kodu ile kullanım sağlayabiliriz.

Burada önemli olan konu şudur; bir proje içinde dinamik olarak kullanılan sayfaların post url lerinin farklılığıdır. Proje içinde kullanılan sayfalar ilgili servlet e direk ulaşım sağlar iken, genel kullanımlarda erişim ilgili server in adresi üzerinden sağlanmaktadır.

Proje İçi Ulaşım Örneği:

Java Servlet Html Resim-1

Dış Erişim Örneği:

Java Servlet Html Resim-2

  • Servlet in kullanımı için projenin kaynak dizininde html sayfası oluşturup kodlamasını yapacağız.

Java Servlet Html Resim-3

Java Servlet Html Resim-4

Java Servlet Html Resim-5

Görüldüğü üzere temel html tag leri kullanılarak basit bir form sayfası oluşturulmuştur.

Aşağıda formun işlem türü « post » olarak tanımlanmış ve içinde bulundurduğu bileşenleri göndereceği yer olarak ta oluşturduğumuz « KayitServlet » sınıfı işaret edilmiştir.

Java Servlet Html Resim-6

Servletin Çalışma Mantığı Aşağıda Oklar ile Gösterilmiştir.

Java Servlet Html Resim-7

JavaEE Servlet Projenin Çalıştırılması

Java Servlet Html Resim-8

Java Servlet Html Resim-9

Java Servlet Html Resim-10

Java Servlet Html Resim-11

Artık servletimiz çalışmaya başladı. Sizler de bu örneğe bakarak kendi servlet inizi yazabilir ve kullanmaya başlayabilirsiniz.

Tüm Java Teknolojilerinin Tanıtımı

Java Teknolojilerinin İncelenmesi ve Tanıtımı

 

Günümüzde Java konusunda bir çok alanda içerik üretilmektedir. Dünya da milyarlarca cihazda Java kodlarını görebilirsiniz. En bilindik örneği kullanmakta olduğumuz telefonlardır, peki bu kadar yaygın olarak kullanılmakta olan bir yazılım dilinin bileşenleri ve yan içerikleri nelerdir ve ne işe yaramaktadır hiç merak ettiniz mi?

Bu makalemizde Java içinde kullanılmakta olan teknolojilerin bazılarına göz atacağız.

  • Apache POI

Apache POI Logo

Apache POI, Programcıların Java yazılım dilini kullanarak, Microsoft Office uygulamalarını oluşturmasına, onlar üzerinde değişiklik yapmasına ve mevcut office dosyalarını görüntülemelerine yaramaktadır. Bir çok Java yazılımcısı tarafından kullanılan popüler bir API dir. Apache POI nin Java uygulamaları içinde kullanımı görmek için Eğitim Blog umuza bakabilirsiniz.

  • Java Geliştirme IDE leri: Eclipse, Netbeans, İntellij Idea

 

Eclipse Logo

Eclipse;

Ön planda Java Programlama dilini ve c/c++, Python, Perl, Ruby gibi programlama dillerini kullanarak uygulama geliştirmek için entegre uygulama ortamıdır. Java geliştirmeyi kolaylaştıran IDE eklentilerden oluşmaktadır ve Java Geliştirme Araçları(JDT) projesi kapsamında gerekli araçları kullanmaktadır.

İndirmek için Tıklayın

 

İntellijLogo

Intellij;

Java geliştirmek için en güçlü Integrated Development Enviroments(IDE) lerden birisidir. İntellij ücretli bir uygulamadır ve akıllı kod tanımlama gibi bir çok ek özelliği barındırmaktadır. Editör odaklı bir ortam sunması ve kodlama kolaylığı açısından sürekli geliştirilen bir ortama sahiptir.

İndirmek İçin Tıklayın

Netbeans Logo

Netneans;

Oracle tarafından desteklenen ve geliştirmeleri yapılan IDE yavaş yavaş parlatılmaya ve geliştirilmeye çalışılmaktadır. İçeriğinde bir çok geliştirme ortam araçlarını sunmaktadır ve örnek kodlamalar için kurulum araçları sunularak hazır kodların eklenmesi sağlanmaktadır.

İndirmek İçin Tıklayın

  • EJB (Enterprise Java Beans)

Enterprice Java Beans Logo

EJB Uygulamları; JBOSS, Web Logic vb. gibi JavaEE uyumlu uygulama sunucularında kullanılmak üzere yüksek ölçeklenebilir ve güçlü kurumsal düzeyde uygulamalar oluşturmak için tasarlanmış bir geliştirme mimarisidir. Sağlamlık,yüksek ölçeklenebilirlik ve yüksek performans göz önünde bulundurularak bileşen tabanlı kurumsal uygulamaları geliştirmek için sunulan bir mimaridir.

Büyük ölçekli kurumsal seviye uygulamaların basitleştirilmiş geliştirmesi, bir çok servisin aktif olarak kullanılması(iş yönetimi, günlük kaydı, yük dengeleme, istisna işleme) gibi işlevleri bir arada bulundurur.

  • Hibernate;

Hibernate Logo

Hibernate’ i anlamak için önce ORM nin anlaşılması ve  ORM nin anlaşılması içinde JDBC nin bilinmesi sanırım doğru olacaktır. JDBC – Java Database Connectivity, Java platformundan istenilen Veritabanına bağlantının yapılabilmesi için gerekli API desteğini sağlamaktadır. JDBC yapısından gerekli olan tüm Native SQL kodlamaları veritabanı bağlantı kodları programcı tarafından yazılmaktadır. Bu işlem hız bakımından en iyi yöntem olsa da kurumsal uygulamaların karmaşıklığı ve içerik yoğunlu fazla olduğu için kodlama maliyetini yükselten bir durumdur.

Bu nedenle geliştiriciler ORM – Object Reletion Mapping nesne modelli programlama çatısını geliştirmişlerdir. Bu sistemde (POJO) dediğimiz modeller kullanarak veritabanı işlemlerinin ilişkilendirilmesi sağlanmış ve kodlamalarda %80 lere varan azalma sağlanmıştır.

İşte bu noktada bir ORM aracı olan Hibernate de tam bu işi gelişmiş bir şekilde yerine getirmektedir. İlk olarak Bağlantı sağlanılacak veritabanı için ayar dosyası oluşturur(hibernate.cfg). Bu oluşturulan ayar dosyası üzerinden bağlantısı sağlanmış ve haritalama işlemi yapılmış modeller kullanılarak işlemler yönetilir. Hibernate ile ilgili eğitim almak için Eğitim Blog una bakabilirsiniz.

Java Gelişim Haritası ile Mükemmel Yazılımcı Olmak

Java Gelişim Eğrisi

JAVA GELİŞİM HARİTASI İLE YAZILIMCI OLUN

Dünyada sadece bizim uygulamaya koyduğumuz Java Gelişim Haritası tekniği, ilk olarak kişilerin eğilim analizini yaparak kişiye gelişim için öğrenme puanı ve eşik gelişim puanı tanımlıyor. Eğitim içinde kişiye verilen ödevler, kod incelemeleri, testler gibi etkinlikler incelenerek; bu etkinliklerden elde edilen puan ile kişinin gelişim haritası çıkartılıyor ve kişinin eksik olduğu, anlamakta güçlük çektiği kısımlar nokta atışı tespit edilebiliyor. Ayrıca bu sistem kişinin yazılım alanında eğiliminin olduğu konuları da ortaya koyarak öğrenicinin yönlendirilmesini kolaylaştırıyor. Evet sen bile yazılım öğrenebilirsin…

Eğitim Analizi Nedir, bize ne faydası var ?

Java Eğitim Analizi, biz eğitmenler için;

  • Öğrenci profili çıkartmak,
  • Öğrencinin eğilimlerini belirlemek,
  • Anlama Kapasitesini ölçmek,
  • Öğrenme tipini tespit etmek,
  • Öğrenme hızını belirlemek

noktalarında faydalı olmaktadır. Yazılım eğitimi almak için kişinin sayısal ve mantıksal analiz konularında yatkınlığının olması önemlidir. Yani programlama için kişinin sayısal eğiliminin olması bir zaruri-yet olarak görünmektedir. Aslında bu doğru bir kanı değildir, ancak çok önemli bir kriterdir.

Biz Java Eğitim Analizi sonucunda çıkan sonuca göre öğrencinin eğitim planlamasını yapıyoruz. Yani aklınızda şu gibi sorular olabilir;

  • Bu Yaştan sonra yazılım öğrenebilir miyim?
  • Ben sayısaldan hiç anlamam nasıl kodlama yapacağım?
  • İşlem hesaplama, kod ezberleme çok zor nasıl yapabilirim ki?
  • Hiç kafama yatmıyor çok karışık şeyler…

tüm bu sorularınızı ve sizi anlıyoruz. Size hayal satmıyoruz tabi ki, ancak eğer sizde isterseniz doğru planlama ile yazılım öğrenebileceğinizi söylüyoruz. Bu eğitim süreci hiçte kolay olmayacak ve kişisel becerilerinize göre uzunda sürebilecek.

Eğitim Analizini nasıl değerlendiriyorsunuz?

Öğrenciye uyguladığımız analiz sonucunda kişisel bir eğitim programı belirliyoruz. Bu program tamamen kişinin isteğine be hızına bağlı olarak değişiyor. Biz her konu için “Konu Kavrama Durumu”  olarak isimlendirdiğimiz bir puanlama sistemi kullanıyoruz. Bu sistemde sırası ile şu adımlar uygulanır;

  1. Yeterli süre içinde öğrenciye gerekli eğitim  verilir,
  2. Eğitim sonunda öğrenciye problem çözme odaklı örnek kodlama sınavı yapılır.(sınav java eğitim analizi notuna göre belirlenir.)
  3. Hazır kod üzerinde değişiklik yapma odaklı sınav.
  4. Hazır kod üzerinde hatalı olan kodu bulmak ve sorunu çözme odaklı sınavlar

tüm bu sınavlar, belli sürelere(1 – 5 dk, 5 – 15 dk, 15+ dk) riayet edilecek şekilde puanlanarak konu sonunda öğrenciye Konu Kavrama Puanı verilir. Bu puan bizim için çok değerlidir çünkü öğrencinin konuyu kavrama durumunu verir.

Peki öğrenci konu kavrama testinden kalır ise ne olacak nasıl bir yol izlenecek?

Öğrenci eğitim sonunda yapılan konu kavrama testinden geçemez ve düşük puan alırsa ilk bakılacak olan şey, test puanını kişinin öğrenme sınırının altında olup olmadığıdır.Eğer öğrenci öğrenme sınırının altında puan almış ise sonra ki adımda alınan puanın öğrencinin baz puanının altında olup olmadığının tespit edilmesidir. Çünkü kişi öğrenme sınırının altında puan almış ise konuyu mantık olarak kavramış ancak kodlama ve sistemin işlevselliğine tam vakıf olamamış demektir, bu durumda kişiye uygulanacak tekrar eğitimi farklı olacaktır. Eğer öğrenci baz değerinin altında bir puan almış ise öğrenciye verilen standart  eğitim işe yaramamış öğrencinin algı eğilimi farklı yönde gelişmiş demektir. Bu durumda öğrencinin farklı algılama yöntemlerinin belirlenerek, bu doğrultuda eğitimin şekillendirilmesi gerekmektedir.

Vermekte olduğumuz eğitim içinde, öğrencinin tümleştirilmiş konuları kavramadan diğer konuları işlenmesi engellenmiştir. Konusal ve kavramsal bütünlük oluşturan dersler anlaşılmasa bile önce maruz bırakma tekniği ile kişinin bilinç altına işlenecek daha sonra geriye anımsama yöntemi ile anlamsal bütünlük sağlayacak şekilde eğitime devam edilecektir.

Java Gelişim Haritası Nasıl Oluşturuluyor ?

Java Gelişim Haritası, aslında Eğitim Analizinin sonucudur ve bize kişinin eğitim durumunu grafiksel olarak bildirir. Bir öğrencinin ilk bakışta eğitimin içeriğine olan uyumunda mı bir sorun var yoksa eğitim şeklinin örenciye uygulanamaması ile ilgili bir sorun mu var bunu görmemizi kolaylaştırır. Harita da iki adet doğru hat çizgimiz bulunmaktadır, bu çizgilerden ilki(Öğrenme Sınırı) öğrencinin öğrenme sınırıdır ve eğitime olan adaptasyonunu eğitim hızını verir. İkinci çizgi(Öğrenci Baz Değeri) eğitimin öğrenciye uygun olup olmadığını eğitim içeriği yoğunluğunun ve hızının uygunluğunu belirtir.

Harita içinde, iki adet eğri bulunmaktadır bu iki eğri kişinin kodlama ve algılama durumlarını belirtmektedir. Bu iki eğrinin doğru değerlendirilmesi eğitimin şeklini ve kalitesini yükseltecektir.

Kimlere Uygulanabilir ?

Bu eğitim içerikleri ve Yazılım dersleri her kesimden öğrenciye uygulanabilir. Burada dikkat edilmesi gereken şey, kişinin isteği ve adaptasyonunun maksimum olmasıdır. Bu Eğitim her şeyi doğru planlasa dahi öğrencinin gayreti asıl belirleyici olacaktır. Eğitimimizin temelinde Tam Öğrenme Modeli(Benjamin Bloom) bulunmaktadır, ancak eğitimimiz tarz olarak ve eğitim modelinden daha üstün ve etkindir. Uygun şartlarda herkese yazılımı öğretebiliriz.

Nasıl Hizmet Veriyorsunuz ?

  • Eğitim hizmetimizi birebir bireysel yada grup olarak verebiliyoruz.
  • Uzaktan eğitim tarzında gerekli bilgiler ve içerikler hazırlandıktan sonra verebiliyoruz.
  • Eğitim Kurumlarına Sistemimizin altyapısını oluşturmak üzere danışmanlık hizmeti verebiliyoruz.

Hizmetlerimizin içeriği, eğitim şeklinin detayları, ücret ve diğer sorunlarınız için yorum yazabilir ve bize ulaşabilirsiniz.