Spring MVC(Model-View-Controller)

Buse Keklik
3 min readJul 9, 2024

--

Herkese merhaba! Bu yazımda, web geliştirme süreçlerinde etkin bir araç olan Spring MVC hakkında konuşacağız. Spring MVC’nin temel yapı taşlarını, nasıl çalıştığını ve bir projede nasıl kullanılacağını inceleyeceğiz.

Spring MVC

Spring MVC, Java tabanlı web uygulamaları geliştirmek için kullanılan bir framework’tür ve Spring Framework’ün bir parçasıdır. MVC (Model-View-Controller) mimarisi, uygulamanın üç temel bileşene ayrılmasını sağlar: Model, View ve Controller. Bu ayrım, uygulamanın bakımını ve geliştirmesini kolaylaştırır. Bu üç temel bileşen aşağıdaki gibidir:

Model: Model, uygulamanın veri ve iş mantığını temsil eder. Uygulamanın “beyni” olarak düşünülebilir. Veri tabanı işlemleri, iş kuralları, hesaplamalar ve diğer işlem verileri modelde yer alır. Model, verileri taşımak ve işlemek için kullanılır ve bu verileri Controller’a sunar. Aşağıda bir model örneği yer almaktadır:

package com.example.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
private String author;

// Constructors
public Book() {}

public Book(String title, String author) {
this.title = title;
this.author = author;
}

// Getters and Setters
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}
}

2. View: Kullanıcıya gösterilen arayüzdür. HTML, CSS ve JavaScript kullanılarak oluşturulan bu katman, kullanıcıların uygulama ile etkileşimde bulunduğu yüzeydir. Spring MVC’de viewlar genellikle JSP, Thymeleaf, FreeMarker gibi şablon motorları ile oluşturulur.

Aşağıdaki örnekte, Thymeleaf kullanıyoruz:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Books List</title>
</head>
<body>
<h1>Books</h1>
<div>
<ul th:each="book : ${books}">
<li th:text="'Title: ' + ${book.title} + ', Author: ' + ${book.author}"></li>
</ul>
</div>
</body>
</html>

Controller: Controller, kullanıcı girişlerini yönetir ve model ile view arasında bir köprü görevi görür. Kullanıcıdan gelen istekleri alır, gerekli model işlemlerini tetikler ve sonuçları ilgili view’a aktararak kullanıcının görmesi sağlanır. Spring MVC’de controllerlar genellikle @Controller veya @RestController annotation'ları ile tanımlanır.

package com.example.controller;

import com.example.model.Book;
import com.example.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

@Controller
public class BookController {

@Autowired
private BookService bookService;

@GetMapping("/books")
public String listBooks(Model model) {
List<Book> books = bookService.findAllBooks();
model.addAttribute("books", books);
return "books"; // View name
}
}

Spring MVC’nin Çalışma Akışı:

  1. Kullanıcı İstek Yapar: Kullanıcı, web tarayıcısı üzerinden bir URL çağırır.
  2. DispatcherServlet: Spring MVC’de, tüm istekler öncelikle DispatcherServlet tarafından karşılanır. Bu servlet, Spring'in front controller'ıdır ve istekleri uygun controllerlara yönlendirir.
  3. Controller İşleme Alır: DispatcherServlet, isteği ilgili controller'a yönlendirir. Controller, gerekli işlemleri yapar (modeli günceller, veri çeker vs.).
  4. Model Güncellenir: Model veritabanından bilgi çeker veya veritabanını günceller.
  5. View Seçilir: İşlem sonucuna göre controller, sonucu göstermek için bir view seçer.
  6. View Render Edilir: Seçilen view, modelden aldığı verilerle birlikte render edilir ve kullanıcıya HTML olarak sunulur.
  7. Kullanıcıya Yanıt Verilir: Render edilen sayfa, kullanıcının tarayıcısına gönderilir.

Spring MVC, güçlü bir yapılandırma ve çok sayıda yerleşik özelliğe sahiptir. Ayrıca, Spring Boot ile birlikte kullanıldığında, bağımlılık yönetimi, otomatik yapılandırma ve hızlı geliştirme süreçleri gibi avantajlar sunar.

Okuduğunuz için teşekkür ederim 😊 Happy coding!!!

--

--

No responses yet