Bilal Koçoğlu/ Mart 6, 2019/ JSP

JSP’de MVC(Model-View-Controller) Mimarisi

MVC in JSP

MVC in JSP

Merhaba arkadaşlar bu derste öğrendiğimiz teknolojileri kullanarak MVC(model-view-controller) mimarisine uygun bir web projesi nasıl olur, nelere dikkat etmemiz gerekir bunlardan bahsedeceğiz. Ardından örnekle konuyu pekiştireceğiz. Tabi hepsinden önce MVC yapısına göz atıp kavramamız önemli. Daha fazla uzatmadan konuya geçelim.

MVC(Model-View-Controller) Mimarisi

Temel olarak MVC mimarisi projenin kullanıcı arayüzü, verilerin işlenmesi ve veri olarak katmanlara ayrılmasıdır. Bunu yapmamızdaki esas amaç uygulamanın farklı amaçlara hizmet eden kısımlarının birbirine karışmasını engellemektir. Tüm bu katmanların kendine has görevleri vardır.

Model

Model katmanı, uygulamamız içinde ele almamız gerken şeyin temsilidir. Bu mimariyi bir bina olarak düşünürsek bu katman binanın tuğlası, harcıdır. Bir kütüphane uygulamasında kitap bir modeldir. Aynı şekilde hastane uygulamasında hasta ve doktor modeldir. Model, temsil ettiği yapı ile ilgili methodları ve değişkenleri barındırmak zorundadır. Kütüphane uygulamasında model katmanı kitabın sayfa sayısını, yazarını, kategorisini barındırmalıdır ki işlevini tam olarak yerine getirsin. Fakat fazlası olmamalıdır. İyi planlanmış bir projede model katmanı controller katmanına karışmamalı, görevlerini aşmamalıdır.

Controller

Controller, uygulamamızın view ve model katmanı arasında bir köprü olarak düşünülebilir. Bu katman view katmanından gelen tetiklemeler neticesinde model katmanından veriyi alır, model üzerinde çalışarak uygun veriyi veya hesaplamayı gerçekleştirir. Daha sonra kullanıcıya bu yanıtı servis edebilmek için view katmanı ile çalışır. Yukarıda bahsettiğimiz bina örneğine devam ederek uygulamamızı bir bina olarak düşünürsek, controller katmanı bu binanın kolonları ve dış cephesidir. Bu mimarinin tüm katmanlarında geçerli olan ve uygulamamızı bu mimariye sağlıklı bir şekilde uyarlayabilmemiz için en önemli nokta, katmanları birbirlerinin alanına sokmamaktır.

Kullanıcı herhangi bir işlem gerçekleştirmek istediğinde bu istek ilk olarak controller katmanına gider. Bu noktada controller ın görevi, hangi modeli çağırması gerektiğini belirlemek ve daha sonra bu model içinde uygun methodu çağırmaktır. Methodu çağırdıktan sonra gelen veriyi uygun formatta kullanıcıya servis edilmek üzere view katmanına iletir.

View

View katmanı uygulamanın şablonlama sistemidir. Kullanıcı ile doğrudan etkileşim içinde olan tek katmandır. Bu sebeple view katmanında güvenlik en üst düzeyde olmalıdır. Bunun sebebi burada mevcut olan bir açık ortaya çıkması durumunda etkilerinin controller ve view katmanında net bir şekilde hissedilecek olmasıdır.

View katmanında dikkat edilmesi gerken bir başka bir önemli husus, kullanıcı ile doğrudan temas halinde olduğundan, göze hoş görünmesi gerektiğidir. Controller ve model katmanlarımız ne kadar mükemmel tasarlanırsa tasarlansın, view katmanını kullanıcı taraflı düşünerek tasarlamazsak projemizin pazarlama performansı asla mükemmel seviyeye ulaşmayacaktır.

JSP’de MVC Mimarisi Nasıl Uygulanır ?

Yazının buradan sonrası için daha önce paylaşmış olduğum Servlet ve JSP dökümanlarını okumuş olduğunuzu varsayıyorum.

MVC mimarisinin ne olduğunu, bize ne gibi avantajlar sağladığını ve mimari içindeki katmanların ana görevlerinden yukarıda bahsettik. Şimdi ise öğrendiğimiz teknolojileri kullanarak, bu mimariye uygun bir uygulamayı nasıl tasarlayabileceğimizi göreceğiz.

  • View : JSP
  • Controller : Servlet
  • Model : Java Bean

Konuyu doğrudan bir örnek kod üzerinde gösterirsem daha kolay anlaşılacağını düşünüyorum. Bir kullanıcı giriş senaryosu tasarlayalım. Kodu inceledikten sonra hangi sayfanın mimarideki hangi katmana denk geldiğini gösterelim.

Dosya Yapısı
MVC in JSP Dosya Yapisi

MVC in JSP Dosya Yapisi

pom.xml
UserBean.java
index.jsp
LoginController.java
loginsuccess.jsp
loginerror.jsp

Örneğimizi yapıp çalıştırdıysak mimariyi nasıl uyguladığımızı biraz gözden geçirelim. Model katmanı için yukarıda “Uygulumamızda ele almamız gereken nesnenin temsilidir.” ifadesini kullanmıştık. Örnek uygulamamız kullanıcının sisteme giriş yaptırılmasını amaçladığından ele almamız gereken nesne kullanıcının kendisidir. Ayrıca, “Model temsil ettiği nesnenin özelliklerini ve methodlarını içinde barındırmak zorundadır.” demiştik. UserBean nesnesini incelediğimizde kullanıcının, kullanıcı adı ve şifre olmak üzere iki özelliğini ve birde değerlerin doğruluğunu kontrol eden bir methodun tanımlı olduğunu görürüz. Burada UserBean nesnemiz eksiksiz ve fazlalıksız bir şekilde model katmanında bulunması gereken tüm özellikleri kapsamaktadır.

Controller katmanına gelecek olursak, bu katmanda Servlet teknolojisini kullanacağımızı belirtmiştik. Tıpkı tanımını yaparken de söz ettiğimiz gibi kullanıcının view katmanı aracılığıyla yapmak istediği işlem POST methodu aracılığıyla ilk olarak controllera geldi. Controllerımız burada kullanıcının viewdan gönderdiği bilgileri aldıktan sonra kullanması gerken nesneyi belirledi ve bu bilgileri işleyerek tekrar kullanıcıya sonucu gösterdi.

View katmanı ise tıpkı diğer iki katman gibi görevini yerine getirerek son kullanıcı ve controller arasında bir köprü görevi gördü.

JSP teknolojisi ile ilgili yazacağımız son yazıda o zamana kadar incelediğimiz tüm özellikleri kullanarak zengin bir örnek paylaşacağım. Orada daha büyük veya karmaşık bir sistem tasarlarken MVC mimarisini nasıl uyguladığımızı daha detaylı olarak görebileceksiniz. Soru ve görüşlerinizi paylaşırsanız sevirim. İyi çalışmalar dilerim.

Share this Post

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*