• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

Spring MVC – Mustache Kardeşliği

  • Posted by Kodedu
  • Categories Genel, HTML & CSS, Tutorial, Uncategorized, Yazılar, Yazılım
  • Date 16 Şubat 2013

Spring MVC, bilindiği üzere, Spring ekosistemi içinde yer alan bir Web altyapı sistemidir..

Spring MVC çözümleyici sınıf olarak (varsayılan) InternalResourceViewResolver sınıfını kullanır, ve bu çözümleyici sınıf JSP view nesneleriyle çalışır. Fakat, Spring MVC içinde farklı Önyüz (View) bileşenlerini çözümleyecek sınıflar da bulunmaktadır. Burada sizlere tanıtılacak çözümleyici ise Mustache şablon mimarisini çözümleyecek MustacheViewResolver sınıfıdır.

MustacheResolver, Spring MVC kütüphanelerinde varsayılan olarak bulunmuyor fakat, isteyen her geliştirici, kendi önyüz çözümleyicisini geliştirmekte hürdür.

Avantaj / Dezavantaj kıyaslamasını siz değerli geliştiricilerimize bırakarak, adım adım meseleyi açıklamak isterim.

Adım 1: Spring MVC Maven prototipinin oluşturulması.

Komut satırı üzerinden aşağıdaki komut bütünü çalıştırılır, ve kara pencerede görülen prototip numarası seçilir.

> mvn archetype:generate

spring-mvc-archetype

Yukarıdaki Maven proje prototipi, XML bağımsız Spring MVC konfigürasyonunu barındırmaktadır. İstenirse elbette bu proje XML ile yapılandırılmış halinde rahatlıkla kullanılabilir.

Adım 2: MustacheViewResolver bağımlılığını pom.xml‘ e eklenmesi. Bu bağımlılık Sean Scanlon tarafından geliştirilmektedir. Bu bağımlılık arka planda JMustache kütüphanesini kullanmaktadır.

<dependencies>
     ...
<dependency>
<groupId>com.github.sps.mustache</groupId>
<artifactId>mustache-spring-view</artifactId>
<version>1.0</version>
</dependency>
     ...
</dependencies>

Adım 3: MustacheViewResolver‘ in MvcConfiguration yapılandırıcı sınıfa eklenmesi.

Bu sınıf Spring MVC’ de varsayılan olarak kullanılan InternalResourceViewResolver çözümleyicisinin yerine kullanılmaktadır.

@Bean
public ViewResolver getViewResolver(ResourceLoader resourceLoader) {
MustacheViewResolver mustacheResolver = new MustacheViewResolver();
mustacheResolver.setPrefix("/WEB-INF/views/");
mustacheResolver.setSuffix(".html");
mustacheResolver.setCache(false);
mustacheResolver.setContentType("text/html;charset=utf-8");

MustacheTemplateLoader mustacheTLoader = new MustacheTemplateLoader();
mustacheTLoader.setResourceLoader(resourceLoader);

mustacheViewResolver.setTemplateLoader(mustacheTLoader);
return mustacheViewResolver;
}

Adım 4: Kitap Model nesnesinin oluşturulması.

Bu model sınıfı, Spring MVC tarafından okunarak, Mustache yer tutucularına, veri alanı isimlerine göre yerleştirilir.

public class Kitap {

private String ad;
private Double fiyat;
private String yazar;
private Boolean goster;

public Kitap(String ad, Double fiyat, String yazar, Boolean goster) {
this.ad = ad;
this.fiyat = fiyat;
this.yazar = yazar;
this.goster = goster;
}

public Boolean getGoster() {
return goster;
}

public void setGoster(Boolean goster) {
this.goster = goster;
}

public String getAd() {
return ad;
}

public void setAd(String ad) {
this.ad = ad;
}

public Double getFiyat() {
return fiyat;
}

public void setFiyat(Double fiyat) {
this.fiyat = fiyat;
}

public String getYazar() {
return yazar;
}

public void setYazar(String yazar) {
this.yazar = yazar;
}
}

Adım 5: HomeController sınıfı içinde, ROOT ( / ) kaynağına List<Kitap> biçimindeki Model verisinin adanması ve “home” önyüz sayfasına adanması.

Spring MVC, tanımlanan ModelAndView nesnesi içindeki Model ve View bileşenlerini bütünleştirerek, kullanıcıya yer tutucuları doldurulmuş html sayfası döndürülür.

@Controller
public class HomeController {

    @RequestMapping(value = "/")
    public ModelAndView test() {

    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("home");

    List kitaplar 
    = Arrays.asList(
    new Kitap("Java ve Yazılım Tasarımı", 35d, "Altuğ B. Altıntaş", true),
    new Kitap("Java Mimarisiyle Kurumsal Çözümler", 23d, "Rahman Usta", true),
    new Kitap("Veri Yapıları ve Algoritmalar", 40d, "Rifat Çölkesen", false),
    new Kitap("Veri Yapıları ve Algoritmalar", 40d, "Rifat Çölkesen", false),
    new Kitap("Veri Yapıları ve Algoritmalar", 40d, "Rifat Çölkesen", true),
    new Kitap("Mobil Pazarlama - SoLoMo", 15d, "Kahraman-Pelin Arslan", false),
    new Kitap("Mobil Pazarlama - SoLoMo", 15d, "Kahraman-Pelin Arslan", true));

    modelAndView.addObject("kitaplar", kitaplar);

    return modelAndView;
  }
}

Adım 6: “home(.html)” view sayfasının oluşturulması.

home.html önyüz sayfasına bakıldığında, ne bir harici XML elemanının, ne bir Java kodununun, ne de HTML standardına aykırı JSP bileşenlerinin yer aldığı görülür. Yani salt HTML ve metin formatında bulunan salt Mustache yer tutucuları, bu sayfada dikkati çeken bir unsurdur.

<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta charset=UTF-8>
  </head>
<body>
<table>
<thead>
 <tr>
  <th>
   <lablel>Kitap adı</lablel>
  </th>
  <th>
   <lablel>Fiyatı</lablel>
  </th>
  <th>
   <lablel>Yazarı</lablel>
  </th>
 </tr>
</thead>

<tbody>
 {{#kitaplar}}
 {{#goster}}
 <tr>
  <td>
   {{ad}}
  </td>
  <td>
   {{fiyat}}
  </td>
  <td>
   {{yazar}}
  </td>
 </tr>
 {{/goster}}
 {{/kitaplar}}
</tbody>
</table>
</body>
</html>

Adım 7: Projenin çalıştırılması.

Projenin bulunduğu dizin içine “cd” (change directory) ile erişilir ve “mvn jetty:run” komut bütünü işletilir.

Uygulama Erişim Adresi : http://localhost:8080/

Kaynak kodlar ‘ı buradan edinebilirsiniz.

Çıktı:

mustache-table

Tekrar görüşmek dileğiyle, esen kalın.

Tag:mustache, mustacheviewresolver, spring mvc

  • Share:
author avatar
Kodedu

Previous post

Mustache - Template Kullanımı
16 Şubat 2013

Next post

Apache CXF - RESTful Servis Örneği
23 Şubat 2013

You may also like

api-logo
Swagger Nedir? Neden kullanılır?
10 Ekim, 2018
spring-cli-logo
Spring CLI ile Spring Boot Projeleri Hazırlamak
21 Ağustos, 2017
eureka_architecture
Spring Cloud Netflix ve Eureka Service Discovery
3 Temmuz, 2017

    1 Comment

  1. Utku Aysev
    30 Kasım 2018
    Cevapla

    Verdiğiniz bilgiler için teşekkürler.Ödevimde çok yardımcı oldu.

Leave A Reply Cevabı iptal et

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

E-posta listesine kayıt olun!






Gözde yazılar

Java Mimarisiyle Kurumsal Çözümler : Kurumsal Java Kitabı
16Eyl2012
Java API for JSON Processing – Stream bazlı JSON Üretmek ve Tüketmek
06Ağu2013
AsciidocFX projesi Duke’s Choice Award 2015 ödülünü kazandı
28Eki2015
Knockout.js – Hesap Makinesi Örneği
02Şub2013

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • Coupling ve Cohesion Kavramları Nedir? için Hilal
  • Naïve Bayes Sınıflandırma Algoritması için Rahman Usta
  • Naïve Bayes Sınıflandırma Algoritması için Mete
  • YAML Nedir? Neden YAML Kullanmalıyız? için kara
  • JWT (JSON Web Tokens) Nedir? Ne işe yarar? için Furkan

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.