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.