Merhabalar arkadaşlar. Daha önceki yazdığımız Maven yazılarının ardından bu yazıda demo bir maven projesi yapacağız.
IDE’miz üzerinde bir Maven projesi oluşturacağız.
Önyüzde Jsp ve onu beslemesi için Servlet kullanacağız.
MySQL db’de tutulan verileri çekip ekrana yazdıracağız.
Maven projesinin oluşturulma aşamasını önceki yazılarda anlatmıştım. Ben bu yazıyı yazarken IDE desteği kullanarak yazıyorum. Siz de Eclipse için buradan
NetBeans için buradan ilgili yazılara erişip IDE’nizde Maven projesini açabilirsiniz.
O yazılar içerisinde pom.xml dosyasında javaee-web-api artifactId’li bağımlılığa bu yazı için ihtyacımız yok. Bu nedenle ilgili dependency kodunu silebilirsiniz.
Şimdi projedeki dosya ve sınıfları inceleyelim.
pom.xml
Önceki yazılarda da bahsettiğim gibi pom.xml dosyası Maven projelerinin konfigürasyon dosyasıdır. Şimdi dosyayı bir inceleyelim:
Önceden de bahsettiğim gibi Maven’ın amaçlarından biri bağımlılık yönetimini kolaylaştırmaktır. Biz de ihtiyaç duyduğumuz kütüphaneleri dependencies tagleri arasına yazarak
projemize dahil ediyoruz. Bu proje için 3 adet kütüphaneye ihtiyacımız var. Servlet&JSP kullandığımız için Servlet API, JSP içerisinde kullanmak için JSTL ve veri tabanı yazılımımız olan
MySQL’in JDBC sürücüsü.
Ayrıca pom.xml içerisinde projemizin esas alacağı Java sürümünü de içerein bir compiler-plugin tanımı yer alıyor.
Dependencies eklemesi yapmak için kütüphanelerin bu bağımlılık kodlarına nereden erişeceğiz derseniz önünüzde iki yol mevcut. Birincisi Maven Repo’da yer alan aşağı yukarı tüm kütüphaneler
kendi web sitelerinde bu bağımlılık kodunu verirler. İkinci yol ise https://mvnrepository.com/ adresinde ilgili kütüphaneyi arayıp kodu bulmaktır.
Ben genellikle hızlı ve eski sürümler de kolaylıkla bulunabildiği için mvnrepository’i kullanıyorum.
groupId, artifactId, version ve packaging gibi alanlar hakkında daha önce bilgi vermiştim. Bu alanlara ait tanımlamalarımız proje için tanımlıyacı alanlardır.
Şimdi hızlıca Java kodlarına bakalım.
Benim veritabanımda Formula1 adında vir veritabanı mevcut ve bu veritabanı içerisinde Drivers adında bir tablo mevcut. O tabloda da şu kayıtlar yer almaktadır:
Şimdi bu kayıtları çekip ekrana yazdırmaya bakalım.
Driver.java
Driver sınıfı bizim veritabanımızdaki Drivers tablosuna karşılık gelen, o tablodaki alanları içerisinde barındıran bir sınıftır. Herhangi bir ORM framework’ü kullanmadığımız için
tabloya karşılık gelen sınıfı kendimiz yazdık. Eğer bir ORM tool’u kullanmış olsaydık tablonun Java sınıfı karşılığını otomatik oluşturabilirdik. Bu tarz sadece değişken ve onların get-set
metotlarını barındıran sınıflar POJO (Plain Old Java Object) olarak adlandırılırlar.
DriverService.java
DriverService sınıfı mantık olarak Drivers tablosu üzerinde yapılacak operasyonları karşılayacak sınıftır. Bizim sınıfımız da Driver listesini getirmekle yükümlüdür. Sınıf içerisinde
MySQL db’ye bağlantı açılıp Drivers tablosundan veriler çekiliyor ve listeye dolduruluyor. Yukarıdaki JDBC operasyonunu şurada
biraz daha detaylı olarak anlatmıştım. Yazıyı uzatmamak adına tekrar burada paylaşmıyorum arkadaşlar, operasyon hakkında bilgi almak için linki tıklayabilirsiniz.
GetDriversServlet.java
GetDriversServlet sınıfı gelen isteği karşılayıp bir JSP sayfasına yönlendirme vazifesini üstlenmiş sınıftır. doGet metodu içerisinde DriversService sınıfından bir nesne oluşturulup
driver listesini veren metot çağırılıyor ve gelen liste request objesi içerisine konuluyor. Ardından bir RequestDispatcher nesnesi edinilip forward işlemi yapılıyor. Biz kod içerisinde
bu Servlet’e istek gelirse son aşamada index.jsp’ye yönlendirme yap dedik.
index.jsp
JSP sayfamız içerisinde JSTL kütüphanemizden edindiğimiz c tag’i ile bir forEach döngüsü kuruyoruz ve items özelliğine az önce GetDriversServlet sınıfının doGet metodu içerisinde
request objesine koyduğumuz driverList değerini atıyoruz. var özelliği ise döngü sırasında ayrı ayrı her bir objeye karşılık gelecek özelliğimizdir. c:forEach içerisinde c:out ile de
driver var’ındaki alanlarımızı ekrana yazdırıyoruz.
web.xml
Son olarak bir de web.xml dosyasına göz atalım:
web.xml dosyamız oldukça basit ve sade. Servlet’ler normale web.xml içerisinde de tanımlanabilir ancak ben bu yazı için notasyon ile tanım yöntemini kullandım. web.xml içerisinde
projenin karşılama sayfası yani projeye doğrudan istek yapıldığında otomatik açılacak sayfanın kim olduğunun tanımı welcome-file tag’i ile yapılıyor. Burada jsp, html, xhtml
sayfaları tanımlanabilir. Ben GetDriversServlet sınıfının kayda geçirildiği isim olan getDrivers‘ı veriyorum ve projeye yapılan isteği Servlet’in karşılayacağını söylüyorum.