01_Spring-MVC_Giriş

Merhaba arkadaşlar, bu yazımız ile beraber Spring MVC derslerine başlamış olacağız. Bu yazımızda Spring MVC nedir? MVC nedir vb. gibi sorulara cevap vereceğiz.

MVC nedir?

MVC, bir mimari desenlerden(Design Pattern) biridir. Bu tanımı biraz daha ayrıntılandırmak istersek şöyle bir tanım yapabiliriz:

Model-View-Controller (MVC), bir uygulamayı üç ana mantıksal bileşene ayıran mimari bir kalıptır: Model, View ve Controller. Bu bileşenlerin her biri, bir uygulamanın özel geliştirme özelliklerini ele almak için üretilmiştir. MVC, ölçeklenebilir ve genişletilebilir projeler oluşturmak için en sık kullanılan endüstri standardı web geliştirme çerçevesinden biridir.

Şimdi sırası ile bu bileşenlerin tanımını inceleyelim:

Model

Model bileşeni, kullanıcının çalıştığı tüm veri ile ilgili mantığa(data-related logic) karşılık gelir. Bu, View ve Controller bileşenleri arasında veya işle ilgili diğer mantıkla(business logic-related data) ilgili veriler arasında aktarılan verileri temsil edebilir. Örneğin, bir Müşteri nesnesi müşteri bilgilerini veritabanından alır, değiştirir ve verileri veritabanına günceller veya veri oluşturmak için kullanır.

View

View bileşeni, uygulamanın tüm UI mantığı için kullanılır. Örneğin, Müşteri görünümü, son kullanıcının etkileşime girdiği metin kutuları, açılır menüler vb. Gibi tüm UI bileşenlerini içerecektir.

Controller

Controller, tüm iş mantığını ve gelen talepleri işlemek, Model bileşenini kullanarak verileri değiştirmek ve son çıktıyı vermek için Viewlerde etkileşimde bulunmak için Model ve View bileşenleri arasında bir arayüz görevi görür. Örneğin, Müşteri Controller Müşteri Viewdeki tüm etkileşimleri ve girişleri ele alacak ve Müşteri Modelini kullanarak veritabanını güncelleyecektir. Müşteri verilerini görüntülemek için aynı Controller kullanılacaktır. 

DispatcherServlet Nedir?

Spring Web Model-View-Controller (MVC) çerçevesi, tüm HTTP isteklerini ve yanıtlarını işleyen bir DispatcherServlet etrafında tasarlanmıştır. Spring Web MVC DispatcherServlet’in istek işleme iş akışı aşağıdaki şemada gösterilmektedir:

DispatcherServlet’e gelen bir HTTP isteğine karşılık gelen olayların sırası aşağıdadır:

  • Bir HTTP isteği aldıktan sonra DispatcherServlet, uygun Controller’i çağırmak için HandlerMapping’e danışır.
  • Controller isteği alır ve kullanılan GET veya POST metotlarını temel alarak uygun servis yöntemlerini çağırır. Servis metodu, tanımlanmış iş mantığına göre model verilerini ayarlayacak ve View adını DispatcherServlet’e geri döndürecektir.
  • DispatcherServlet, istek için tanımlanmış View’ı almak için ViewResolver’dan yardım alacaktır.
  • View sonlandırıldığında, DispatcherServlet model verisini, tarayıcıda oluşturulan görüntüye aktarır.

Yukarıda belirtilen tüm bileşenler, yani HandlerMapping, Controller ve ViewResolver, web uygulamaları için gerekli bazı ekstra özelliklerin bulunduğu, plainApplicationContext’in bir uzantısı olan WebApplicationContext’in parçalarıdır.

Şimdi Spring MVC projesi için gerekli yapılandırmaları yapalım:

Web.xml dosyasında bir URL eşlemesi kullanarak DispatcherServlet’in işlemesini istediğiniz istekleri eşlemeniz gerekir.

Web.xml

Spring isimli DispatcherServlet’in başlatılmasından sonra, framework application context uygulamanın WebContent / WEB-INF içinde bulunan [servlet-name] -servlet.xml adlı bir dosyadan yüklemeye çalışacaktır. Bu durumda, dosyamız spring-servlet.xml olacaktır.

Daha sonra, <servlet-mapping> etiketi, hangi DispatcherServlet tarafından hangi URL’lerin ele alınacağını gösterir. Burada .jsp ile biten tüm HTTP istekleri spring DispatcherServlet tarafından ele alınacaktır.

Varsayılan dosya adı [servlet-name] -servlet.xml ve varsayılan konum olarak WebContent / WEB-INF olarak gitmek istemiyorsanız, web.xml dosyanıza sunucu uygulaması dinleyicisi ContextLoaderListener ekleyerek bu dosya adını ve konumunu özelleştirebilirsiniz:

Şimdi web uygulamamızın WebContent/WEB-INF dizinine yerleştirilen spring-servlet.xml dosyası için gerekli yapılandırmayı kontrol edelim:

Spring-servlet.xml

<Context: component-scan …> etiketi, @Controller ve @RequestMapping vb. notasyonlardan faydalanma olanağı sağlayan Spring MVC ek notasyon tarama özelliğini etkinleştirmek için kullanılacaktır.

InternalResourceViewResolver, görünüm adlarını çözmek için tanımlanmış kurallara sahip olacaktır. Bu yazımızda Spring MVC konusuna giriş yaptık. Diğer yazılarımda görüşmek üzere…

 

 

Print Friendly, PDF & Email

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.